summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.docker/app/Dockerfile87
-rw-r--r--.docker/app/backup.sh31
-rw-r--r--.docker/app/config.docker.php8
-rw-r--r--.docker/app/dcron.sh5
-rw-r--r--.docker/app/index.php3
-rw-r--r--.docker/app/startup.sh153
-rw-r--r--.docker/app/updater.sh33
-rw-r--r--.docker/web-nginx/Dockerfile15
-rw-r--r--.docker/web-nginx/nginx.conf61
-rw-r--r--.gitignore1
-rw-r--r--.gitlab-ci.yml60
-rw-r--r--Jenkinsfile33
-rw-r--r--backend.php46
-rwxr-xr-xclasses/api.php2
-rwxr-xr-xclasses/article.php34
-rw-r--r--classes/config.php27
-rw-r--r--classes/counters.php11
-rw-r--r--classes/digest.php3
-rw-r--r--classes/diskcache.php58
-rwxr-xr-xclasses/feeds.php82
-rwxr-xr-xclasses/handler/public.php6
-rw-r--r--classes/icatchall.php4
-rwxr-xr-xclasses/pluginhost.php39
-rwxr-xr-xclasses/pref/feeds.php4
-rwxr-xr-xclasses/rpc.php3
-rwxr-xr-xclasses/rssutils.php23
-rw-r--r--classes/sanitizer.php3
-rw-r--r--classes/tracer.php69
-rw-r--r--classes/urlhelper.php51
-rw-r--r--composer.json3
-rw-r--r--composer.lock259
-rw-r--r--js/Article.js28
-rw-r--r--js/CommonDialogs.js2
-rwxr-xr-xjs/Headlines.js4
-rwxr-xr-xjs/common.js19
-rw-r--r--lib/dijit/bower.json2
-rw-r--r--lib/dijit/form/_FormSelectWidget.js2
-rw-r--r--lib/dijit/package.json4
-rwxr-xr-xlib/dojo-src/rebuild-dojo.sh2
-rw-r--r--lib/dojo/_base/kernel.js2
-rw-r--r--lib/dojo/_base/lang.js2
-rw-r--r--lib/dojo/dojo.js2
-rw-r--r--lib/dojo/package.json4
-rw-r--r--lib/dojo/tt-rss-layer.js2
-rw-r--r--package-lock.json4380
-rw-r--r--plugins/auth_internal/init.php4
-rw-r--r--themes/compact.css13
-rw-r--r--themes/compact_night.css13
-rw-r--r--themes/light-high-contrast.css13
-rw-r--r--themes/light.css13
-rw-r--r--themes/light/cdm.less15
-rw-r--r--themes/night.css13
-rw-r--r--themes/night_blue.css13
-rw-r--r--utils/phpstan-watcher.sh4
-rw-r--r--vendor/autoload.php18
-rw-r--r--vendor/composer/ClassLoader.php156
-rw-r--r--vendor/composer/InstalledVersions.php564
-rw-r--r--vendor/composer/LICENSE2
-rw-r--r--vendor/composer/autoload_classmap.php2
-rw-r--r--vendor/composer/autoload_files.php9
-rw-r--r--vendor/composer/autoload_namespaces.php2
-rw-r--r--vendor/composer/autoload_psr4.php7
-rw-r--r--vendor/composer/autoload_real.php49
-rw-r--r--vendor/composer/autoload_static.php38
-rw-r--r--vendor/composer/installed.json270
-rw-r--r--vendor/composer/installed.php847
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/.editorconfig16
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/.github/workflows/main.yaml44
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/.gitignore17
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/CONTRIBUTING.md3
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/LICENSE21
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/README.md219
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/build/.gitignore2
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/composer.json62
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/examples/config.php26
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/examples/jaeger.php51
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/phpcs.xml.dist37
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/phpunit.xml.dist47
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/scripts/thrift-gen.sh27
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/AgentClient/HttpAgentClient.php27
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/BinaryCodec.php39
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecInterface.php36
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecUtility.php41
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/TextCodec.php184
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/ZipkinCodec.php85
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Config.php390
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Constants.php100
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Mapper/SpanToJaegerMapper.php171
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/CompositeReporter.php51
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/InMemoryReporter.php47
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/JaegerReporter.php35
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/LoggingReporter.php51
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/NullReporter.php32
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/RemoteReporter.php46
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/ReporterInterface.php28
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/AbstractReporterFactory.php23
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerHttpReporterFactory.php35
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerReporterFactory.php44
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ReporterFactoryInterface.php10
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php46
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ConstSampler.php68
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ProbabilisticSampler.php88
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/RateLimitingSampler.php62
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/SamplerInterface.php29
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Scope.php71
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ScopeManager.php45
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/JaegerSender.php236
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/SenderInterface.php12
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/UdpSender.php305
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Span.php476
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/SpanContext.php120
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentClient.php76
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentIf.php30
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitBatch_args.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitZipkinBatch_args.php60
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorClient.php83
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorIf.php27
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_args.php55
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_result.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestriction.php65
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerClient.php83
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerIf.php31
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_args.php55
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_result.php60
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependencies.php61
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyClient.php105
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyIf.php31
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyLink.php74
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_args.php55
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_result.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_saveDependencies_args.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/OperationSamplingStrategy.php66
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/PerOperationSamplingStrategies.php88
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ProbabilisticSamplingStrategy.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/RateLimitingSamplingStrategy.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerClient.php83
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerIf.php27
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_args.php55
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_result.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyResponse.php86
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyType.php28
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ValidateTraceResponse.php65
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Annotation.php87
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/AnnotationType.php38
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/BinaryAnnotation.php106
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Constant.php246
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Endpoint.php108
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Response.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Span.php190
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorClient.php83
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorIf.php27
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_args.php60
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_result.php60
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Batch.php71
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/BatchSubmitResponse.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorClient.php83
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorIf.php27
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_args.php60
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_result.php60
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Downstream.php102
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/JoinTraceRequest.php66
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/ObservedSpan.php74
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/StartTraceRequest.php84
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TraceResponse.php82
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceClient.php134
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceIf.php40
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_args.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_result.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_args.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_result.php56
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Transport.php30
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Log.php70
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Process.php70
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Span.php161
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRef.php83
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRefType.php28
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Tag.php110
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/TagType.php34
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ThriftUdpTransport.php151
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Tracer.php420
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php128
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Codec/TextCodecTest.php170
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Codec/ZipkinCodecTest.php104
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ConfigTest.php257
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Logger/StackLogger.php30
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Mapper/SpanToJaegerMapperTest.php169
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/CompositeReporterTest.php52
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/InMemoryReporterTest.php24
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/LoggingReporterTest.php31
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/NullReporterTest.php29
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/RemoteReporterTest.php46
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/ConstSamplerTest.php43
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/ProbablisticSamplerTest.php68
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/RateLimitSamplerTest.php48
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ScopeManagerTest.php49
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ScopeTest.php58
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/JaegerThriftSenderTest.php126
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/UdpSenderTest.php116
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/SpanContextTest.php37
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/SpanTest.php293
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ThriftUdpTransportTest.php166
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/TracerTest.php262
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/README.md48
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/tests/php-test.sh64
-rw-r--r--vendor/opentracing/opentracing/.github/ISSUE_TEMPLATE.md21
-rw-r--r--vendor/opentracing/opentracing/.github/PULL_REQUEST_TEMPLATE.md24
-rw-r--r--vendor/opentracing/opentracing/.github/workflows/ci.yml44
-rw-r--r--vendor/opentracing/opentracing/.gitignore4
-rw-r--r--vendor/opentracing/opentracing/CONTRIBUTING.md75
-rw-r--r--vendor/opentracing/opentracing/LICENSE201
-rw-r--r--vendor/opentracing/opentracing/README.md306
-rw-r--r--vendor/opentracing/opentracing/composer.json44
-rw-r--r--vendor/opentracing/opentracing/phpstan.neon5
-rw-r--r--vendor/opentracing/opentracing/phpunit.xml27
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Formats.php49
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/GlobalTracer.php60
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/InvalidReferenceArgumentException.php33
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/InvalidReferencesSetException.php30
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/InvalidSpanOptionException.php131
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Mock/MockScope.php62
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Mock/MockScopeManager.php49
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Mock/MockSpan.php145
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Mock/MockSpanContext.php100
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Mock/MockTracer.php152
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/NoopScope.php23
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/NoopScopeManager.php24
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/NoopSpan.php67
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/NoopSpanContext.php35
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/NoopTracer.php62
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Reference.php77
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Scope.php32
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/ScopeManager.php40
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Span.php95
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/SpanContext.php37
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/StartSpanOptions.php206
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Tags.php124
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/Tracer.php119
-rw-r--r--vendor/opentracing/opentracing/src/OpenTracing/UnsupportedFormatException.php22
-rw-r--r--vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockScopeManagerTest.php63
-rw-r--r--vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockSpanContextTest.php54
-rw-r--r--vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockSpanTest.php52
-rw-r--r--vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockTracerTest.php139
-rw-r--r--vendor/opentracing/opentracing/tests/OpenTracing/ReferenceTest.php45
-rw-r--r--vendor/opentracing/opentracing/tests/OpenTracing/StartSpanOptionsTest.php129
-rw-r--r--vendor/packaged/thrift/.gitignore2
-rw-r--r--vendor/packaged/thrift/README.md44
-rw-r--r--vendor/packaged/thrift/composer.json16
-rw-r--r--vendor/packaged/thrift/src/Base/TBase.php382
-rw-r--r--vendor/packaged/thrift/src/ClassLoader/ThriftClassLoader.php206
-rw-r--r--vendor/packaged/thrift/src/Exception/TApplicationException.php76
-rw-r--r--vendor/packaged/thrift/src/Exception/TException.php384
-rw-r--r--vendor/packaged/thrift/src/Exception/TProtocolException.php50
-rw-r--r--vendor/packaged/thrift/src/Exception/TTransportException.php40
-rw-r--r--vendor/packaged/thrift/src/Factory/TBinaryProtocolFactory.php45
-rw-r--r--vendor/packaged/thrift/src/Factory/TCompactProtocolFactory.php40
-rw-r--r--vendor/packaged/thrift/src/Factory/TJSONProtocolFactory.php40
-rw-r--r--vendor/packaged/thrift/src/Factory/TProtocolFactory.php36
-rw-r--r--vendor/packaged/thrift/src/Factory/TStringFuncFactory.php66
-rw-r--r--vendor/packaged/thrift/src/Factory/TTransportFactory.php18
-rw-r--r--vendor/packaged/thrift/src/Protocol/JSON/BaseContext.php39
-rw-r--r--vendor/packaged/thrift/src/Protocol/JSON/ListContext.php54
-rw-r--r--vendor/packaged/thrift/src/Protocol/JSON/LookaheadReader.php57
-rw-r--r--vendor/packaged/thrift/src/Protocol/JSON/PairContext.php64
-rw-r--r--vendor/packaged/thrift/src/Protocol/SimpleJSON/CollectionMapKeyException.php33
-rw-r--r--vendor/packaged/thrift/src/Protocol/SimpleJSON/Context.php35
-rw-r--r--vendor/packaged/thrift/src/Protocol/SimpleJSON/ListContext.php45
-rw-r--r--vendor/packaged/thrift/src/Protocol/SimpleJSON/MapContext.php47
-rw-r--r--vendor/packaged/thrift/src/Protocol/SimpleJSON/StructContext.php52
-rw-r--r--vendor/packaged/thrift/src/Protocol/TBinaryProtocol.php453
-rw-r--r--vendor/packaged/thrift/src/Protocol/TBinaryProtocolAccelerated.php67
-rw-r--r--vendor/packaged/thrift/src/Protocol/TCompactProtocol.php739
-rw-r--r--vendor/packaged/thrift/src/Protocol/TJSONProtocol.php815
-rw-r--r--vendor/packaged/thrift/src/Protocol/TMultiplexedProtocol.php85
-rw-r--r--vendor/packaged/thrift/src/Protocol/TProtocol.php352
-rw-r--r--vendor/packaged/thrift/src/Protocol/TProtocolDecorator.php285
-rw-r--r--vendor/packaged/thrift/src/Protocol/TSimpleJSONProtocol.php374
-rw-r--r--vendor/packaged/thrift/src/Serializer/TBinarySerializer.php87
-rw-r--r--vendor/packaged/thrift/src/Server/TForkingServer.php125
-rw-r--r--vendor/packaged/thrift/src/Server/TSSLServerSocket.php97
-rw-r--r--vendor/packaged/thrift/src/Server/TServer.php102
-rw-r--r--vendor/packaged/thrift/src/Server/TServerSocket.php124
-rw-r--r--vendor/packaged/thrift/src/Server/TServerTransport.php56
-rw-r--r--vendor/packaged/thrift/src/Server/TSimpleServer.php60
-rw-r--r--vendor/packaged/thrift/src/StoredMessageProtocol.php53
-rw-r--r--vendor/packaged/thrift/src/StringFunc/Core.php40
-rw-r--r--vendor/packaged/thrift/src/StringFunc/Mbstring.php46
-rw-r--r--vendor/packaged/thrift/src/StringFunc/TStringFunc.php28
-rw-r--r--vendor/packaged/thrift/src/TMultiplexedProcessor.php118
-rw-r--r--vendor/packaged/thrift/src/Transport/TBufferedTransport.php206
-rw-r--r--vendor/packaged/thrift/src/Transport/TCurlClient.php281
-rw-r--r--vendor/packaged/thrift/src/Transport/TFramedTransport.php192
-rw-r--r--vendor/packaged/thrift/src/Transport/THttpClient.php258
-rw-r--r--vendor/packaged/thrift/src/Transport/TMemoryBuffer.php106
-rw-r--r--vendor/packaged/thrift/src/Transport/TNullTransport.php56
-rw-r--r--vendor/packaged/thrift/src/Transport/TPhpStream.php124
-rw-r--r--vendor/packaged/thrift/src/Transport/TSSLSocket.php117
-rw-r--r--vendor/packaged/thrift/src/Transport/TSocket.php366
-rw-r--r--vendor/packaged/thrift/src/Transport/TSocketPool.php310
-rw-r--r--vendor/packaged/thrift/src/Transport/TTransport.php98
-rw-r--r--vendor/packaged/thrift/src/Type/TConstant.php52
-rw-r--r--vendor/packaged/thrift/src/Type/TMessageType.php34
-rw-r--r--vendor/packaged/thrift/src/Type/TType.php47
-rw-r--r--vendor/packaged/thrift/update.sh22
-rw-r--r--vendor/psr/cache/CHANGELOG.md16
-rw-r--r--vendor/psr/cache/LICENSE.txt19
-rw-r--r--vendor/psr/cache/README.md12
-rw-r--r--vendor/psr/cache/composer.json25
-rw-r--r--vendor/psr/cache/src/CacheException.php10
-rw-r--r--vendor/psr/cache/src/CacheItemInterface.php105
-rw-r--r--vendor/psr/cache/src/CacheItemPoolInterface.php138
-rw-r--r--vendor/psr/cache/src/InvalidArgumentException.php13
-rw-r--r--vendor/psr/log/LICENSE19
-rw-r--r--vendor/psr/log/README.md58
-rw-r--r--vendor/psr/log/composer.json26
-rw-r--r--vendor/psr/log/src/AbstractLogger.php15
-rw-r--r--vendor/psr/log/src/InvalidArgumentException.php7
-rw-r--r--vendor/psr/log/src/LogLevel.php18
-rw-r--r--vendor/psr/log/src/LoggerAwareInterface.php18
-rw-r--r--vendor/psr/log/src/LoggerAwareTrait.php26
-rw-r--r--vendor/psr/log/src/LoggerInterface.php125
-rw-r--r--vendor/psr/log/src/LoggerTrait.php142
-rw-r--r--vendor/psr/log/src/NullLogger.php30
322 files changed, 30194 insertions, 863 deletions
diff --git a/.docker/app/Dockerfile b/.docker/app/Dockerfile
new file mode 100644
index 000000000..e1a70d011
--- /dev/null
+++ b/.docker/app/Dockerfile
@@ -0,0 +1,87 @@
+FROM registry.fakecake.org/docker.io/alpine:3.17
+EXPOSE 9000/tcp
+
+ENV SCRIPT_ROOT=/opt/tt-rss
+ENV SRC_DIR=/src/tt-rss/
+
+RUN apk add --no-cache dcron php81 php81-fpm php81-phar php81-sockets php81-pecl-apcu \
+ php81-pdo php81-gd php81-pgsql php81-pdo_pgsql php81-xmlwriter php81-opcache \
+ php81-mbstring php81-intl php81-xml php81-curl php81-simplexml \
+ php81-session php81-tokenizer php81-dom php81-fileinfo php81-ctype \
+ php81-json php81-iconv php81-pcntl php81-posix php81-zip php81-exif \
+ php81-openssl git postgresql-client sudo php81-pecl-xdebug rsync tzdata && \
+ sed -i 's/\(memory_limit =\) 128M/\1 256M/' /etc/php81/php.ini && \
+ sed -i -e 's/^listen = 127.0.0.1:9000/listen = 9000/' \
+ -e 's/;\(clear_env\) = .*/\1 = no/i' \
+ -e 's/^\(user\|group\) = .*/\1 = app/i' \
+ -e 's/;\(php_admin_value\[error_log\]\) = .*/\1 = \/tmp\/error.log/' \
+ -e 's/;\(php_admin_flag\[log_errors\]\) = .*/\1 = on/' \
+ /etc/php81/php-fpm.d/www.conf && \
+ mkdir -p /var/www ${SCRIPT_ROOT}/config.d
+
+ARG CI_COMMIT_BRANCH
+ENV CI_COMMIT_BRANCH=${CI_COMMIT_BRANCH}
+
+ARG CI_COMMIT_SHORT_SHA
+ENV CI_COMMIT_SHORT_SHA=${CI_COMMIT_SHORT_SHA}
+
+ARG CI_COMMIT_TIMESTAMP
+ENV CI_COMMIT_TIMESTAMP=${CI_COMMIT_TIMESTAMP}
+
+ARG CI_COMMIT_SHA
+ENV CI_COMMIT_SHA=${CI_COMMIT_SHA}
+
+ADD --chmod=0755 startup.sh ${SCRIPT_ROOT}
+ADD --chmod=0755 updater.sh ${SCRIPT_ROOT}
+ADD --chmod=0755 dcron.sh ${SCRIPT_ROOT}
+ADD --chmod=0755 backup.sh /etc/periodic/weekly/backup
+
+ADD index.php ${SCRIPT_ROOT}
+ADD config.docker.php ${SCRIPT_ROOT}
+
+COPY --from=app-src . ${SRC_DIR}
+
+ARG ORIGIN_REPO_XACCEL=https://git.tt-rss.org/fox/ttrss-nginx-xaccel.git
+
+RUN git clone --depth=1 ${ORIGIN_REPO_XACCEL} ${SRC_DIR}/plugins.local/nginx_xaccel
+
+ENV OWNER_UID=1000
+ENV OWNER_GID=1000
+
+ENV PHP_WORKER_MAX_CHILDREN=5
+ENV PHP_WORKER_MEMORY_LIMIT=256M
+
+# these are applied on every startup, if set
+ENV ADMIN_USER_PASS=""
+# see classes/UserHelper.php ACCESS_LEVEL_*
+# setting this to -2 would effectively disable built-in admin user
+# unless single user mode is enabled
+ENV ADMIN_USER_ACCESS_LEVEL=""
+
+# these are applied unless user already exists
+ENV AUTO_CREATE_USER=""
+ENV AUTO_CREATE_USER_PASS=""
+ENV AUTO_CREATE_USER_ACCESS_LEVEL="0"
+
+# TODO: remove prefix from container variables not used by tt-rss itself:
+#
+# - TTRSS_NO_STARTUP_PLUGIN_UPDATES -> NO_STARTUP_PLUGIN_UPDATES
+# - TTRSS_XDEBUG_... -> XDEBUG_...
+
+# don't try to update local plugins on startup
+ENV TTRSS_NO_STARTUP_PLUGIN_UPDATES=""
+
+# TTRSS_XDEBUG_HOST defaults to host IP if unset
+ENV TTRSS_XDEBUG_ENABLED=""
+ENV TTRSS_XDEBUG_HOST=""
+ENV TTRSS_XDEBUG_PORT="9000"
+
+ENV TTRSS_DB_TYPE="pgsql"
+ENV TTRSS_DB_HOST="db"
+ENV TTRSS_DB_PORT="5432"
+
+ENV TTRSS_MYSQL_CHARSET="UTF8"
+ENV TTRSS_PHP_EXECUTABLE="/usr/bin/php81"
+ENV TTRSS_PLUGINS="auth_internal, note, nginx_xaccel"
+
+CMD ${SCRIPT_ROOT}/startup.sh
diff --git a/.docker/app/backup.sh b/.docker/app/backup.sh
new file mode 100644
index 000000000..a28c39544
--- /dev/null
+++ b/.docker/app/backup.sh
@@ -0,0 +1,31 @@
+#!/bin/sh -e
+
+DST_DIR=/backups
+KEEP_DAYS=28
+APP_ROOT=/var/www/html/tt-rss
+
+if pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; then
+ DST_FILE=ttrss-backup-$(date +%Y%m%d).sql.gz
+
+ echo backing up tt-rss database to $DST_DIR/$DST_FILE...
+
+ export PGPASSWORD=$TTRSS_DB_PASS
+
+ pg_dump --clean -h $TTRSS_DB_HOST -U $TTRSS_DB_USER $TTRSS_DB_NAME | gzip > $DST_DIR/$DST_FILE
+
+ DST_FILE=ttrss-backup-$(date +%Y%m%d).tar.gz
+
+ echo backing up tt-rss local directories to $DST_DIR/$DST_FILE...
+
+ tar -cz -f $DST_DIR/$DST_FILE $APP_ROOT/*.local \
+ $APP_ROOT/feed-icons/ \
+ $APP_ROOT/config.php
+
+ echo cleaning up...
+
+ find $DST_DIR -type f -name '*.gz' -mtime +$KEEP_DAYS -delete
+
+ echo done.
+else
+ echo backup failed: database is not ready.
+fi
diff --git a/.docker/app/config.docker.php b/.docker/app/config.docker.php
new file mode 100644
index 000000000..fbf42e43b
--- /dev/null
+++ b/.docker/app/config.docker.php
@@ -0,0 +1,8 @@
+<?php
+
+ $snippets = glob(getenv("SCRIPT_ROOT")."/config.d/*.php");
+
+ foreach ($snippets as $snippet) {
+ require_once $snippet;
+ }
+
diff --git a/.docker/app/dcron.sh b/.docker/app/dcron.sh
new file mode 100644
index 000000000..b16f15a9c
--- /dev/null
+++ b/.docker/app/dcron.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+# https://github.com/dubiousjim/dcron/issues/13
+set -e
+
+/usr/sbin/crond "$@"
diff --git a/.docker/app/index.php b/.docker/app/index.php
new file mode 100644
index 000000000..78e5c3f88
--- /dev/null
+++ b/.docker/app/index.php
@@ -0,0 +1,3 @@
+<?php
+ header("Location: /tt-rss/");
+ return;
diff --git a/.docker/app/startup.sh b/.docker/app/startup.sh
new file mode 100644
index 000000000..134428276
--- /dev/null
+++ b/.docker/app/startup.sh
@@ -0,0 +1,153 @@
+#!/bin/sh -e
+
+while ! pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; do
+ echo waiting until $TTRSS_DB_HOST is ready...
+ sleep 3
+done
+
+# We don't need those here (HTTP_HOST would cause false SELF_URL_PATH check failures)
+unset HTTP_PORT
+unset HTTP_HOST
+
+if ! id app >/dev/null 2>&1; then
+ addgroup -g $OWNER_GID app
+ adduser -D -h /var/www/html -G app -u $OWNER_UID app
+fi
+
+update-ca-certificates || true
+
+DST_DIR=/var/www/html/tt-rss
+
+[ -e $DST_DIR ] && rm -f $DST_DIR/.app_is_ready
+
+export PGPASSWORD=$TTRSS_DB_PASS
+
+[ ! -e /var/www/html/index.php ] && cp ${SCRIPT_ROOT}/index.php /var/www/html
+
+if [ ! -d $DST_DIR ]; then
+ mkdir -p $DST_DIR
+ chown $OWNER_UID:$OWNER_GID $DST_DIR
+
+ sudo -u app rsync -a \
+ $SRC_DIR/ $DST_DIR/
+else
+ chown -R $OWNER_UID:$OWNER_GID $DST_DIR
+
+ sudo -u app rsync -a --delete \
+ --exclude /cache \
+ --exclude /lock \
+ --exclude /feed-icons \
+ --exclude /plugins/af_comics/filters.local \
+ --exclude /plugins.local \
+ --exclude /templates.local \
+ --exclude /themes.local \
+ $SRC_DIR/ $DST_DIR/
+
+ sudo -u app rsync -a --delete \
+ $SRC_DIR/plugins.local/nginx_xaccel \
+ $DST_DIR/plugins.local/nginx_xaccel
+fi
+
+for d in cache lock feed-icons plugins.local themes.local; do
+ sudo -u app mkdir -p $DST_DIR/$d
+done
+
+for d in cache lock feed-icons; do
+ chmod 777 $DST_DIR/$d
+ find $DST_DIR/$d -type f -exec chmod 666 {} \;
+done
+
+sudo -u app cp ${SCRIPT_ROOT}/config.docker.php $DST_DIR/config.php
+chmod 644 $DST_DIR/config.php
+
+chown -R $OWNER_UID:$OWNER_GID $DST_DIR \
+ /var/log/php81
+
+if [ -z "$TTRSS_NO_STARTUP_PLUGIN_UPDATES" ]; then
+ echo updating all local plugins...
+
+ find $DST_DIR/plugins.local -mindepth 1 -maxdepth 1 -type d | while read PLUGIN; do
+ if [ -d $PLUGIN/.git ]; then
+ echo updating $PLUGIN...
+
+ cd $PLUGIN && \
+ sudo -u app git config core.filemode false && \
+ sudo -u app git config pull.rebase false && \
+ sudo -u app git pull origin master || echo warning: attempt to update plugin $PLUGIN failed.
+ fi
+ done
+else
+ echo skipping local plugin updates, disabled.
+fi
+
+PSQL="psql -q -h $TTRSS_DB_HOST -U $TTRSS_DB_USER $TTRSS_DB_NAME"
+
+$PSQL -c "create extension if not exists pg_trgm"
+
+RESTORE_SCHEMA=${SCRIPT_ROOT}/restore-schema.sql.gz
+
+if [ -r $RESTORE_SCHEMA ]; then
+ $PSQL -c "drop schema public cascade; create schema public;"
+ zcat $RESTORE_SCHEMA | $PSQL
+fi
+
+# this was previously generated
+rm -f $DST_DIR/config.php.bak
+
+if [ ! -z "${TTRSS_XDEBUG_ENABLED}" ]; then
+ if [ -z "${TTRSS_XDEBUG_HOST}" ]; then
+ export TTRSS_XDEBUG_HOST=$(ip ro sh 0/0 | cut -d " " -f 3)
+ fi
+ echo enabling xdebug with the following parameters:
+ env | grep TTRSS_XDEBUG
+ cat > /etc/php81/conf.d/50_xdebug.ini <<EOF
+zend_extension=xdebug.so
+xdebug.mode=develop,trace,debug
+xdebug.start_with_request = yes
+xdebug.client_port = ${TTRSS_XDEBUG_PORT}
+xdebug.client_host = ${TTRSS_XDEBUG_HOST}
+EOF
+fi
+
+sed -i.bak "s/^\(memory_limit\) = \(.*\)/\1 = ${PHP_WORKER_MEMORY_LIMIT}/" \
+ /etc/php81/php.ini
+
+sed -i.bak "s/^\(pm.max_children\) = \(.*\)/\1 = ${PHP_WORKER_MAX_CHILDREN}/" \
+ /etc/php81/php-fpm.d/www.conf
+
+sudo -Eu app php81 $DST_DIR/update.php --update-schema=force-yes
+
+if [ ! -z "$ADMIN_USER_PASS" ]; then
+ sudo -Eu app php81 $DST_DIR/update.php --user-set-password "admin:$ADMIN_USER_PASS"
+else
+ if sudo -Eu app php81 $DST_DIR/update.php --user-check-password "admin:password"; then
+ RANDOM_PASS=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 16 ; echo '')
+
+ echo "*****************************************************************************"
+ echo "* Setting initial built-in admin user password to '$RANDOM_PASS' *"
+ echo "* If you want to set it manually, use ADMIN_USER_PASS environment variable. *"
+ echo "*****************************************************************************"
+
+ sudo -Eu app php81 $DST_DIR/update.php --user-set-password "admin:$RANDOM_PASS"
+ fi
+fi
+
+if [ ! -z "$ADMIN_USER_ACCESS_LEVEL" ]; then
+ sudo -Eu app php81 $DST_DIR/update.php --user-set-access-level "admin:$ADMIN_USER_ACCESS_LEVEL"
+fi
+
+if [ ! -z "$AUTO_CREATE_USER" ]; then
+ sudo -Eu app /bin/sh -c "php81 $DST_DIR/update.php --user-exists $AUTO_CREATE_USER ||
+ php81 $DST_DIR/update.php --force-yes --user-add \"$AUTO_CREATE_USER:$AUTO_CREATE_USER_PASS:$AUTO_CREATE_USER_ACCESS_LEVEL\""
+fi
+
+rm -f /tmp/error.log && mkfifo /tmp/error.log && chown app:app /tmp/error.log
+
+(tail -q -f /tmp/error.log >> /proc/1/fd/2) &
+
+unset ADMIN_USER_PASS
+unset AUTO_CREATE_USER_PASS
+
+touch $DST_DIR/.app_is_ready
+
+exec /usr/sbin/php-fpm81 --nodaemonize --force-stderr
diff --git a/.docker/app/updater.sh b/.docker/app/updater.sh
new file mode 100644
index 000000000..219041a59
--- /dev/null
+++ b/.docker/app/updater.sh
@@ -0,0 +1,33 @@
+#!/bin/sh -e
+
+# We don't need those here (HTTP_HOST would cause false SELF_URL_PATH check failures)
+unset HTTP_PORT
+unset HTTP_HOST
+
+unset ADMIN_USER_PASS
+unset AUTO_CREATE_USER_PASS
+
+# wait for the app container to delete .app_is_ready and perform rsync, etc.
+sleep 30
+
+if ! id app; then
+ addgroup -g $OWNER_GID app
+ adduser -D -h /var/www/html -G app -u $OWNER_UID app
+fi
+
+while ! pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; do
+ echo waiting until $TTRSS_DB_HOST is ready...
+ sleep 3
+done
+
+sed -i.bak "s/^\(memory_limit\) = \(.*\)/\1 = ${PHP_WORKER_MEMORY_LIMIT}/" \
+ /etc/php81/php.ini
+
+DST_DIR=/var/www/html/tt-rss
+
+while [ ! -s $DST_DIR/config.php -a -e $DST_DIR/.app_is_ready ]; do
+ echo waiting for app container...
+ sleep 3
+done
+
+sudo -E -u app /usr/bin/php81 /var/www/html/tt-rss/update_daemon2.php
diff --git a/.docker/web-nginx/Dockerfile b/.docker/web-nginx/Dockerfile
new file mode 100644
index 000000000..679323b1c
--- /dev/null
+++ b/.docker/web-nginx/Dockerfile
@@ -0,0 +1,15 @@
+FROM registry.fakecake.org/docker.io/nginx:alpine
+
+HEALTHCHECK CMD curl --fail http://localhost/tt-rss/index.php || exit 1
+
+COPY nginx.conf /etc/nginx/templates/nginx.conf.template
+
+# By default, nginx will send the php requests to "app" server, but this server
+# name can be overridden at runtime by passing an APP_UPSTREAM env var
+ENV APP_UPSTREAM=${APP_UPSTREAM:-app}
+
+# It's necessary to set the following NGINX_ENVSUBST_OUTPUT_DIR env var to tell
+# nginx to replace the env vars of /etc/nginx/templates/nginx.conf.template
+# and put the result in /etc/nginx/nginx.conf (instead of /etc/nginx/conf.d/nginx.conf)
+# See https://github.com/docker-library/docs/tree/master/nginx#using-environment-variables-in-nginx-configuration-new-in-119
+ENV NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx
diff --git a/.docker/web-nginx/nginx.conf b/.docker/web-nginx/nginx.conf
new file mode 100644
index 000000000..f7d47c453
--- /dev/null
+++ b/.docker/web-nginx/nginx.conf
@@ -0,0 +1,61 @@
+worker_processes auto;
+pid /var/run/nginx.pid;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ access_log /dev/stdout;
+ error_log /dev/stderr warn;
+
+ sendfile on;
+
+ index index.php;
+
+ upstream app {
+ server ${APP_UPSTREAM}:9000;
+ }
+
+ server {
+ listen 80;
+ listen [::]:80;
+
+ root /var/www/html;
+
+ location /tt-rss/cache {
+ aio threads;
+ internal;
+ }
+
+ location /tt-rss/backups {
+ internal;
+ }
+
+ location ~ \.php$ {
+ # regex to split $uri to $fastcgi_script_name and $fastcgi_path
+ fastcgi_split_path_info ^(.+?\.php)(/.*)$;
+
+ # Check that the PHP script exists before passing it
+ try_files $fastcgi_script_name =404;
+
+ # Bypass the fact that try_files resets $fastcgi_path_info
+ # see: http://trac.nginx.org/nginx/ticket/321
+ set $path_info $fastcgi_path_info;
+ fastcgi_param PATH_INFO $path_info;
+
+ fastcgi_index index.php;
+ include fastcgi.conf;
+
+ fastcgi_pass app;
+ }
+
+ location / {
+ try_files $uri $uri/ =404;
+ }
+
+ }
+}
diff --git a/.gitignore b/.gitignore
index f310f9dca..076e64b20 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,6 @@ Thumbs.db
/messages.mo
/node_modules
/locale/**/*.po~
-/package-lock.json
/plugins.local/*
/themes.local/*
/config.php
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 000000000..5a5aa9bed
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,60 @@
+stages:
+ - lint
+ - build
+
+variables:
+ ESLINT_PATHS: js plugins
+
+include:
+ - project: 'ci/ci-templates'
+ ref: master
+ file: .ci-build-docker.yml
+ - project: 'ci/ci-templates'
+ ref: master
+ file: .ci-lint-common.yml
+
+phpunit:
+ extends: .phpunit
+
+eslint:
+ extends: .eslint
+
+phpstan:
+ extends: .phpstan
+
+ttrss-web-nginx:
+ extends: .build-master
+ variables:
+ BUILD_CONTEXT: ${CI_PROJECT_DIR}/.docker/web-nginx
+
+ttrss-web-nginx:branch:
+ extends: .build-branch
+ variables:
+ BUILD_CONTEXT: ${CI_PROJECT_DIR}/.docker/web-nginx
+
+ttrss-fpm-pgsql-static:
+ extends: .build-master
+ variables:
+ BUILD_CONTEXT: ${CI_PROJECT_DIR}/.docker/app
+
+ttrss-fpm-pgsql-static:branch:
+ extends: .build-branch
+ variables:
+ BUILD_CONTEXT: ${CI_PROJECT_DIR}/.docker/app
+
+phpdoc:
+ image:
+ name: ${CI_DOCKER_IMAGE}
+ stage: build
+ rules:
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "web" && $PHPDOC_DEPLOY_SSH_KEY != null
+ changes:
+ - '**/*.php'
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $PHPDOC_DEPLOY_SSH_KEY != null
+ when: manual
+ script:
+ - php81 /phpDocumentor.phar -d classes -d include -t phpdoc --visibility=public
+ - mkdir -p ~/.ssh &&
+ cp ${PHPDOC_DEPLOY_SSH_KEY} ~/.ssh/id_ed25519 &&
+ chmod 0600 ~/.ssh/id_ed25519
+ - rsync -av -e 'ssh -o StrictHostKeyChecking=no' phpdoc/ ${PHPDOC_DEPLOY_HOST}:phpdoc/
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 778d80c5d..000000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,33 +0,0 @@
-pipeline {
- agent any
-
- options {
- buildDiscarder(logRotator(numToKeepStr: '5'))
- }
-
- stages {
- stage('phpunit') {
- steps {
- sh """
- docker run --rm \
- --workdir /app \
- -v ${env.WORKSPACE}:/app \
- registry.fakecake.org/php:8.1-cli \
- php ./vendor/bin/phpunit
- """
- }
- }
- stage('phpstan') {
- steps {
- sh """
- # php -d memory_limit=-1 ....
- docker run --rm \
- --workdir /app \
- -v ${env.WORKSPACE}:/app \
- registry.fakecake.org/php:8.1-cli \
- php -d memory_limit=-1 ./vendor/bin/phpstan --memory-limit=2G
- """
- }
- }
- }
-}
diff --git a/backend.php b/backend.php
index e246ea088..c322e1e55 100644
--- a/backend.php
+++ b/backend.php
@@ -30,11 +30,16 @@
$op = (string)clean($op);
$method = (string)clean($method);
+ $scope = Tracer::start(__FILE__, ['tags' => json_encode($_REQUEST)]);
+
startup_gettext();
$script_started = microtime(true);
- if (!init_plugins()) return;
+ if (!init_plugins()) {
+ $scope->close();
+ return;
+ }
header("Content-Type: text/json; charset=utf-8");
@@ -46,6 +51,9 @@
if (!\Sessions\validate_session()) {
header("Content-Type: text/json");
print Errors::to_json(Errors::E_UNAUTHORIZED);
+
+ $scope->getSpan()->setTag('error', Errors::E_UNAUTHORIZED);
+ $scope->close();
return;
}
UserHelper::load_user_plugins($_SESSION["uid"]);
@@ -53,6 +61,9 @@
if (Config::is_migration_needed()) {
print Errors::to_json(Errors::E_SCHEMA_MISMATCH);
+
+ $scope->getSpan()->setTag('error', Errors::E_SCHEMA_MISMATCH);
+ $scope->close();
return;
}
@@ -114,10 +125,14 @@
user_error("Refusing to invoke method $method of handler $op which starts with underscore.", E_USER_WARNING);
header("Content-Type: text/json");
print Errors::to_json(Errors::E_UNAUTHORIZED);
+
+ $scope->getSpan()->setTag('error', Errors::E_UNAUTHORIZED);
+ $scope->close();
return;
}
if ($override) {
+ /** @var Plugin|IHandler|ICatchall $handler */
$handler = $override;
} else {
$reflection = new ReflectionClass($op);
@@ -125,10 +140,18 @@
}
if (implements_interface($handler, 'IHandler')) {
+ $h_scope = Tracer::start("construct/$op");
$handler->__construct($_REQUEST);
+ $h_scope->close();
if (validate_csrf($csrf_token) || $handler->csrf_ignore($method)) {
- if ($handler->before($method)) {
+
+ $b_scope = Tracer::start("before/$method");
+ $before = $handler->before($method);
+ $b_scope->close();
+
+ if ($before) {
+ $m_scope = Tracer::start("method/$method");
if ($method && method_exists($handler, $method)) {
$reflection = new ReflectionMethod($handler, $method);
@@ -137,6 +160,8 @@
} else {
user_error("Refusing to invoke method $method of handler $op which has required parameters.", E_USER_WARNING);
header("Content-Type: text/json");
+
+ $m_scope->getSpan()->setTag('error', Errors::E_UNAUTHORIZED);
print Errors::to_json(Errors::E_UNAUTHORIZED);
}
} else {
@@ -144,20 +169,34 @@
$handler->catchall($method);
} else {
header("Content-Type: text/json");
+
+ $m_scope->getSpan()->setTag('error', Errors::E_UNKNOWN_METHOD);
print Errors::to_json(Errors::E_UNKNOWN_METHOD, ["info" => get_class($handler) . "->$method"]);
}
}
+ $m_scope->close();
+
+ $a_scope = Tracer::start("after/$method");
$handler->after();
+ $a_scope->close();
+
+ $scope->close();
return;
} else {
header("Content-Type: text/json");
print Errors::to_json(Errors::E_UNAUTHORIZED);
+
+ $scope->getSpan()->setTag('error', Errors::E_UNAUTHORIZED);
+ $scope->close();
return;
}
} else {
user_error("Refusing to invoke method $method of handler $op with invalid CSRF token.", E_USER_WARNING);
header("Content-Type: text/json");
print Errors::to_json(Errors::E_UNAUTHORIZED);
+
+ $scope->getSpan()->setTag('error', Errors::E_UNAUTHORIZED);
+ $scope->close();
return;
}
}
@@ -166,4 +205,5 @@
header("Content-Type: text/json");
print Errors::to_json(Errors::E_UNKNOWN_METHOD, [ "info" => (isset($handler) ? get_class($handler) : "UNKNOWN:".$op) . "->$method"]);
-?>
+ $scope->getSpan()->setTag('error', Errors::E_UNKNOWN_METHOD);
+ $scope->close();
diff --git a/classes/api.php b/classes/api.php
index b482a70eb..255de52d4 100755
--- a/classes/api.php
+++ b/classes/api.php
@@ -99,7 +99,7 @@ class API extends Handler {
}
function isLoggedIn(): bool {
- return $this->_wrap(self::STATUS_OK, array("status" => $_SESSION["uid"] != ''));
+ return $this->_wrap(self::STATUS_OK, array("status" => (bool)($_SESSION["uid"] ?? '')));
}
function getUnread(): bool {
diff --git a/classes/article.php b/classes/article.php
index 609ddeebe..63469ccd2 100755
--- a/classes/article.php
+++ b/classes/article.php
@@ -239,8 +239,7 @@ class Article extends Handler_Protected {
print json_encode(["id" => (int)$id, "tags" => $this->_get_tags($id)]);
}
-
- /*function completeTags() {
+ function completeTags(): void {
$search = clean($_REQUEST["search"]);
$sth = $this->pdo->prepare("SELECT DISTINCT tag_name FROM ttrss_tags
@@ -250,12 +249,14 @@ class Article extends Handler_Protected {
$sth->execute([$_SESSION['uid'], "$search%"]);
- print "<ul>";
+ $results = [];
+
while ($line = $sth->fetch()) {
- print "<li>" . $line["tag_name"] . "</li>";
+ array_push($results, $line["tag_name"]);
}
- print "</ul>";
- }*/
+
+ print json_encode($results);
+ }
function assigntolabel(): void {
$this->_label_ops(true);
@@ -297,6 +298,8 @@ class Article extends Handler_Protected {
* @return array{'formatted': string, 'entries': array<int, array<string, mixed>>}
*/
static function _format_enclosures(int $id, bool $always_display_enclosures, string $article_content, bool $hide_images = false): array {
+ $scope = Tracer::start(__METHOD__);
+
$enclosures = self::_get_enclosures($id);
$enclosures_formatted = "";
@@ -323,6 +326,7 @@ class Article extends Handler_Protected {
$enclosures_formatted, $enclosures, $id, $always_display_enclosures, $article_content, $hide_images);
if (!empty($enclosures_formatted)) {
+ $scope->close();
return [
'formatted' => $enclosures_formatted,
'entries' => []
@@ -366,6 +370,7 @@ class Article extends Handler_Protected {
}
}
+ $scope->close();
return $rv;
}
@@ -373,6 +378,7 @@ class Article extends Handler_Protected {
* @return array<int, string>
*/
static function _get_tags(int $id, int $owner_uid = 0, ?string $tag_cache = null): array {
+ $scope = Tracer::start(__METHOD__);
$a_id = $id;
@@ -421,6 +427,7 @@ class Article extends Handler_Protected {
$sth->execute([$tags_str, $id, $owner_uid]);
}
+ $scope->close();
return $tags;
}
@@ -515,6 +522,8 @@ class Article extends Handler_Protected {
* @return array<int, array<int, int|string>>
*/
static function _get_labels(int $id, ?int $owner_uid = null): array {
+ $scope = Tracer::start(__METHOD__, []);
+
$rv = array();
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
@@ -560,6 +569,8 @@ class Article extends Handler_Protected {
else
Labels::update_cache($owner_uid, $id, array("no-labels" => 1));
+ $scope->close();
+
return $rv;
}
@@ -570,6 +581,7 @@ class Article extends Handler_Protected {
* @return array<int, Article::ARTICLE_KIND_*|string>
*/
static function _get_image(array $enclosures, string $content, string $site_url, array $headline) {
+ $scope = Tracer::start(__METHOD__);
$article_image = "";
$article_stream = "";
@@ -648,6 +660,8 @@ class Article extends Handler_Protected {
if ($article_stream && $cache->exists(sha1($article_stream)))
$article_stream = $cache->get_url(sha1($article_stream));
+ $scope->close();
+
return [$article_image, $article_stream, $article_kind];
}
@@ -661,6 +675,8 @@ class Article extends Handler_Protected {
if (count($article_ids) == 0)
return [];
+ $scope = Tracer::start(__METHOD__);
+
$entries = ORM::for_table('ttrss_entries')
->table_alias('e')
->join('ttrss_user_entries', ['ref_id', '=', 'id'], 'ue')
@@ -680,6 +696,8 @@ class Article extends Handler_Protected {
}
}
+ $scope->close();
+
return array_unique($rv);
}
@@ -691,6 +709,8 @@ class Article extends Handler_Protected {
if (count($article_ids) == 0)
return [];
+ $scope = Tracer::start(__METHOD__);
+
$entries = ORM::for_table('ttrss_entries')
->table_alias('e')
->join('ttrss_user_entries', ['ref_id', '=', 'id'], 'ue')
@@ -703,6 +723,8 @@ class Article extends Handler_Protected {
array_push($rv, $entry->feed_id);
}
+ $scope->close();
+
return array_unique($rv);
}
}
diff --git a/classes/config.php b/classes/config.php
index a865266ca..afdb7b8ef 100644
--- a/classes/config.php
+++ b/classes/config.php
@@ -192,6 +192,12 @@ class Config {
/** delay updates for this feed if received HTTP 429 (Too Many Requests) for this amount of seconds (base value, actual delay is base...base*2) */
const HTTP_429_THROTTLE_INTERVAL = "HTTP_429_THROTTLE_INTERVAL";
+ /** host running Jaeger collector to receive traces (disabled if empty) */
+ const JAEGER_REPORTING_HOST = "JAEGER_REPORTING_HOST";
+
+ /** Jaeger service name */
+ const JAEGER_SERVICE_NAME = "JAEGER_SERVICE_NAME";
+
/** default values for all global configuration options */
private const _DEFAULTS = [
Config::DB_TYPE => [ "pgsql", Config::T_STRING ],
@@ -249,6 +255,8 @@ class Config {
Config::HTTP_USER_AGENT => [ 'Tiny Tiny RSS/%s (https://tt-rss.org/)',
Config::T_STRING ],
Config::HTTP_429_THROTTLE_INTERVAL => [ 3600, Config::T_INT ],
+ Config::JAEGER_REPORTING_HOST => [ "", Config::T_STRING ],
+ Config::JAEGER_SERVICE_NAME => [ "tt-rss", Config::T_STRING ],
];
/** @var Config|null */
@@ -303,7 +311,11 @@ class Config {
static function get_version_html() : string {
$version = self::get_version(false);
- return sprintf("<span title=\"%s\">%s</span>", date("Y-m-d H:i:s", ($version['timestamp'] ?? 0)), $version['version']);
+ return sprintf("<span title=\"%s\n%s\n%s\">%s</span>",
+ date("Y-m-d H:i:s", ($version['timestamp'] ?? 0)),
+ $version['commit'],
+ $version['branch'] ?? '',
+ $version['version']);
}
/**
@@ -315,8 +327,16 @@ class Config {
if (empty($this->version)) {
$this->version["status"] = -1;
- if (PHP_OS === "Darwin") {
- $ttrss_version["version"] = "UNKNOWN (Unsupported, Darwin)";
+ if (getenv("CI_COMMIT_SHORT_SHA") && getenv("CI_COMMIT_TIMESTAMP")) {
+
+ $this->version["branch"] = getenv("CI_COMMIT_BRANCH");
+ $this->version["timestamp"] = strtotime(getenv("CI_COMMIT_TIMESTAMP"));
+ $this->version["version"] = sprintf("%s-%s", date("y.m", $this->version["timestamp"]), getenv("CI_COMMIT_SHORT_SHA"));
+ $this->version["commit"] = getenv("CI_COMMIT_SHORT_SHA");
+ $this->version["status"] = 0;
+
+ } else if (PHP_OS === "Darwin") {
+ $this->version["version"] = "UNKNOWN (Unsupported, Darwin)";
} else if (file_exists("$root_dir/version_static.txt")) {
$this->version["version"] = trim(file_get_contents("$root_dir/version_static.txt")) . " (Unsupported)";
} else if (ini_get("open_basedir")) {
@@ -352,6 +372,7 @@ class Config {
$rv = [
"status" => -1,
"version" => "",
+ "branch" => "",
"commit" => "",
"timestamp" => 0,
];
diff --git a/classes/counters.php b/classes/counters.php
index 41bb1b9ae..fcf28f938 100644
--- a/classes/counters.php
+++ b/classes/counters.php
@@ -145,6 +145,7 @@ class Counters {
* @return array<int, array<string, int|string>>
*/
private static function get_feeds(array $feed_ids = null): array {
+ $scope = Tracer::start(__METHOD__);
$ret = [];
@@ -211,6 +212,8 @@ class Counters {
}
+ $scope->close();
+
return $ret;
}
@@ -218,6 +221,8 @@ class Counters {
* @return array<int, array<string, int|string>>
*/
private static function get_global(): array {
+ $scope = Tracer::start(__METHOD__);
+
$ret = [
[
"id" => "global-unread",
@@ -234,6 +239,8 @@ class Counters {
"counter" => $subcribed_feeds
]);
+ $scope->close();
+
return $ret;
}
@@ -241,6 +248,7 @@ class Counters {
* @return array<int, array<string, int|string>>
*/
private static function get_virt(): array {
+ $scope = Tracer::start(__METHOD__);
$ret = [];
@@ -287,6 +295,7 @@ class Counters {
}
}
+ $scope->close();
return $ret;
}
@@ -295,6 +304,7 @@ class Counters {
* @return array<int, array<string, int|string>>
*/
static function get_labels(array $label_ids = null): array {
+ $scope = Tracer::start(__METHOD__);
$ret = [];
@@ -346,6 +356,7 @@ class Counters {
array_push($ret, $cv);
}
+ $scope->close();
return $ret;
}
}
diff --git a/classes/digest.php b/classes/digest.php
index b19c37c5f..d77a83b8c 100644
--- a/classes/digest.php
+++ b/classes/digest.php
@@ -2,6 +2,7 @@
class Digest
{
static function send_headlines_digests(): void {
+ $scope = Tracer::start(__METHOD__);
$user_limit = 15; // amount of users to process (e.g. emails to send out)
$limit = 1000; // maximum amount of headlines to include
@@ -75,6 +76,8 @@ class Digest
}
}
}
+
+ $scope->close();
Debug::log("All done.");
}
diff --git a/classes/diskcache.php b/classes/diskcache.php
index 2a3f8c8d7..6a9038289 100644
--- a/classes/diskcache.php
+++ b/classes/diskcache.php
@@ -221,7 +221,11 @@ class DiskCache implements Cache_Adapter {
}
public function remove(string $filename): bool {
- return $this->adapter->remove($filename);
+ $scope = Tracer::start(__METHOD__, ['filename' => $filename]);
+ $rc = $this->adapter->remove($filename);
+ $scope->close();
+
+ return $rc;
}
public function set_dir(string $dir) : void {
@@ -244,14 +248,22 @@ class DiskCache implements Cache_Adapter {
}
public function exists(string $filename): bool {
- return $this->adapter->exists(basename($filename));
+ $scope = Tracer::start(__METHOD__, ['filename' => $filename]);
+ $rc = $this->adapter->exists(basename($filename));
+ $scope->close();
+
+ return $rc;
}
/**
* @return int|false -1 if the file doesn't exist, false if an error occurred, size in bytes otherwise
*/
public function get_size(string $filename) {
- return $this->adapter->get_size(basename($filename));
+ $scope = Tracer::start(__METHOD__, ['filename' => $filename]);
+ $rc = $this->adapter->get_size(basename($filename));
+ $scope->close();
+
+ return $rc;
}
/**
@@ -260,7 +272,11 @@ class DiskCache implements Cache_Adapter {
* @return int|false Bytes written or false if an error occurred.
*/
public function put(string $filename, $data) {
- return $this->adapter->put(basename($filename), $data);
+ $scope = Tracer::start(__METHOD__);
+ $rc = $this->adapter->put(basename($filename), $data);
+ $scope->close();
+
+ return $rc;
}
/** @deprecated we can't assume cached files are local, and other storages
@@ -304,11 +320,16 @@ class DiskCache implements Cache_Adapter {
}
public function send(string $filename) {
+ $scope = Tracer::start(__METHOD__, ['filename' => $filename]);
+
$filename = basename($filename);
if (!$this->exists($filename)) {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
echo "File not found.";
+
+ $scope->getSpan()->setTag('error', '404 not found');
+ $scope->close();
return false;
}
@@ -317,6 +338,9 @@ class DiskCache implements Cache_Adapter {
if (($_SERVER['HTTP_IF_MODIFIED_SINCE'] ?? '') == $gmt_modified || ($_SERVER['HTTP_IF_NONE_MATCH'] ?? '') == $file_mtime) {
header('HTTP/1.1 304 Not Modified');
+
+ $scope->getSpan()->setTag('error', '304 not modified');
+ $scope->close();
return false;
}
@@ -334,6 +358,9 @@ class DiskCache implements Cache_Adapter {
header("Content-type: text/plain");
print "Stored file has disallowed content type ($mimetype)";
+
+ $scope->getSpan()->setTag('error', '400 disallowed content type');
+ $scope->close();
return false;
}
@@ -355,7 +382,13 @@ class DiskCache implements Cache_Adapter {
header_remove("Pragma");
- return $this->adapter->send($filename);
+ $scope->getSpan()->setTag('mimetype', $mimetype);
+
+ $rc = $this->adapter->send($filename);
+
+ $scope->close();
+
+ return $rc;
}
public function get_full_path(string $filename): string {
@@ -384,8 +417,14 @@ class DiskCache implements Cache_Adapter {
// plugins work on original source URLs used before caching
// NOTE: URLs should be already absolutized because this is called after sanitize()
static public function rewrite_urls(string $str): string {
+ $scope = Tracer::start(__METHOD__);
+
$res = trim($str);
- if (!$res) return '';
+
+ if (!$res) {
+ $scope->close();
+ return '';
+ }
$doc = new DOMDocument();
if (@$doc->loadHTML('<?xml encoding="UTF-8">' . $res)) {
@@ -397,6 +436,8 @@ class DiskCache implements Cache_Adapter {
$need_saving = false;
foreach ($entries as $entry) {
+ $e_scope = Tracer::start('entry', ['tagName' => $entry->tagName]);
+
foreach (array('src', 'poster') as $attr) {
if ($entry->hasAttribute($attr)) {
$url = $entry->getAttribute($attr);
@@ -428,6 +469,8 @@ class DiskCache implements Cache_Adapter {
$entry->setAttribute("srcset", RSSUtils::encode_srcset($matches));
}
+
+ $e_scope->close();
}
if ($need_saving) {
@@ -437,6 +480,9 @@ class DiskCache implements Cache_Adapter {
$res = $doc->saveHTML();
}
}
+
+ $scope->close();
+
return $res;
}
}
diff --git a/classes/feeds.php b/classes/feeds.php
index 002a9eae7..68619302f 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -49,12 +49,6 @@ class Feeds extends Handler_Protected {
const NEVER_GROUP_FEEDS = [ Feeds::FEED_RECENTLY_READ, Feeds::FEED_ARCHIVED ];
const NEVER_GROUP_BY_DATE = [ Feeds::FEED_PUBLISHED, Feeds::FEED_STARRED, Feeds::FEED_FRESH ];
- /** @var int|float int on 64-bit, float on 32-bit */
- private $viewfeed_timestamp;
-
- /** @var int|float int on 64-bit, float on 32-bit */
- private $viewfeed_timestamp_last;
-
function csrf_ignore(string $method): bool {
$csrf_ignored = array("index");
@@ -71,7 +65,7 @@ class Feeds extends Handler_Protected {
$disable_cache = false;
- $this->_mark_timestamp("init");
+ $scope = Tracer::start(__METHOD__, [], func_get_args());
$reply = [];
$rgba_cache = [];
@@ -157,8 +151,6 @@ class Feeds extends Handler_Protected {
$qfh_ret = $this->_get_headlines($params);
}
- $this->_mark_timestamp("db query");
-
$vfeed_group_enabled = get_pref(Prefs::VFEED_GROUP_BY_FEED) &&
!(in_array($feed, self::NEVER_GROUP_FEEDS) && !$cat_view);
@@ -176,6 +168,8 @@ class Feeds extends Handler_Protected {
$reply['search_query'] = [$search, $search_language];
$reply['vfeed_group_enabled'] = $vfeed_group_enabled;
+ $p_scope = Tracer::start('plugin_menu_items');
+
$plugin_menu_items = "";
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM2,
function ($result) use (&$plugin_menu_items) {
@@ -208,13 +202,15 @@ class Feeds extends Handler_Protected {
},
$feed, $cat_view, $qfh_ret);
- $this->_mark_timestamp("object header");
+ $p_scope->close();
+
+ $a_scope = Tracer::start('articles');
$headlines_count = 0;
if ($result instanceof PDOStatement) {
while ($line = $result->fetch(PDO::FETCH_ASSOC)) {
- $this->_mark_timestamp("article start: " . $line["id"] . " " . $line["title"]);
+ $aa_scope = Tracer::start('article', ['id' => $line['id']]);
++$headlines_count;
@@ -232,8 +228,6 @@ class Feeds extends Handler_Protected {
$line, $max_excerpt_length);
}
- $this->_mark_timestamp(" hook_query_headlines");
-
$id = $line["id"];
// frontend doesn't expect pdo returning booleans as strings on mysql
@@ -281,8 +275,6 @@ class Feeds extends Handler_Protected {
array_push($topmost_article_ids, $id);
}
- $this->_mark_timestamp(" labels");
-
$line["feed_title"] = $line["feed_title"] ?? "";
$button_doc = new DOMDocument();
@@ -312,6 +304,7 @@ class Feeds extends Handler_Protected {
$line);
$line["buttons"] = "";
+
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_ARTICLE_BUTTON,
function ($result, $plugin) use (&$line, &$button_doc) {
if ($result && $button_doc->loadXML($result)) {
@@ -335,13 +328,9 @@ class Feeds extends Handler_Protected {
},
$line);
- $this->_mark_timestamp(" pre-sanitize");
-
$line["content"] = Sanitizer::sanitize($line["content"],
$line['hide_images'], null, $line["site_url"], $highlight_words, $line["id"]);
- $this->_mark_timestamp(" sanitize");
-
if (!get_pref(Prefs::CDM_EXPANDED)) {
$line["cdm_excerpt"] = "<span class='collapse'>
<i class='material-icons' onclick='return Article.cdmUnsetActive(event)'
@@ -352,8 +341,6 @@ class Feeds extends Handler_Protected {
}
}
- $this->_mark_timestamp(" pre-enclosures");
-
if ($line["num_enclosures"] > 0) {
$line["enclosures"] = Article::_format_enclosures($id,
sql_bool_to_bool($line["always_display_enclosures"]),
@@ -363,16 +350,12 @@ class Feeds extends Handler_Protected {
$line["enclosures"] = [ 'formatted' => '', 'entries' => [] ];
}
- $this->_mark_timestamp(" enclosures");
-
$line["updated_long"] = TimeHelper::make_local_datetime($line["updated"],true);
$line["updated"] = TimeHelper::make_local_datetime($line["updated"], false, null, false, true);
$line['imported'] = T_sprintf("Imported at %s",
TimeHelper::make_local_datetime($line["date_entered"], false));
- $this->_mark_timestamp(" local-datetime");
-
if ($line["tag_cache"])
$tags = explode(",", $line["tag_cache"]);
else
@@ -382,14 +365,12 @@ class Feeds extends Handler_Protected {
//$line["tags"] = Article::_get_tags($line["id"], false, $line["tag_cache"]);
- $this->_mark_timestamp(" tags");
-
$line['has_icon'] = self::_has_icon($feed_id);
//setting feed headline background color, needs to change text color based on dark/light
$fav_color = $line['favicon_avg_color'] ?? false;
- $this->_mark_timestamp(" pre-color");
+ $c_scope = Tracer::start('colors');
require_once "colors.php";
@@ -405,22 +386,16 @@ class Feeds extends Handler_Protected {
$line['feed_bg_color'] = 'rgba(' . implode(",", $rgba_cache[$feed_id]) . ',0.3)';
}
- $this->_mark_timestamp(" color");
- $this->_mark_timestamp(" pre-hook_render_cdm");
+ $c_scope->close();
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_RENDER_ARTICLE_CDM,
function ($result, $plugin) use (&$line) {
$line = $result;
- $this->_mark_timestamp(" hook: " . get_class($plugin));
},
$line);
- $this->_mark_timestamp(" hook_render_cdm");
-
$line['content'] = DiskCache::rewrite_urls($line['content']);
- $this->_mark_timestamp(" disk_cache_rewrite");
-
/* we don't need those */
foreach (["date_entered", "guid", "last_published", "last_marked", "tag_cache", "favicon_avg_color",
@@ -429,11 +404,11 @@ class Feeds extends Handler_Protected {
array_push($reply['content'], $line);
- $this->_mark_timestamp("article end");
+ $aa_scope->close();
}
}
- $this->_mark_timestamp("end of articles");
+ $a_scope->close();
if (!$headlines_count) {
@@ -494,7 +469,7 @@ class Feeds extends Handler_Protected {
}
}
- $this->_mark_timestamp("end");
+ $scope->close();
return array($topmost_article_ids, $headlines_count, $feed, $disable_cache, $reply);
}
@@ -987,6 +962,7 @@ class Feeds extends Handler_Protected {
* @throws PDOException
*/
static function _get_counters($feed, bool $is_cat = false, bool $unread_only = false, ?int $owner_uid = null): int {
+ $scope = Tracer::start(__METHOD__, [], func_get_args());
$n_feed = (int) $feed;
$need_entries = false;
@@ -1010,11 +986,14 @@ class Feeds extends Handler_Protected {
$handler = PluginHost::getInstance()->get_feed_handler($feed_id);
if (implements_interface($handler, 'IVirtualFeed')) {
/** @var IVirtualFeed $handler */
+ $scope->close();
return $handler->get_unread($feed_id);
} else {
+ $scope->close();
return 0;
}
} else if ($n_feed == Feeds::FEED_RECENTLY_READ) {
+ $scope->close();
return 0;
// tags
} else if ($feed != "0" && $n_feed == 0) {
@@ -1028,6 +1007,7 @@ class Feeds extends Handler_Protected {
$row = $sth->fetch();
// Handle 'SUM()' returning null if there are no results
+ $scope->close();
return $row["count"] ?? 0;
} else if ($n_feed == Feeds::FEED_STARRED) {
@@ -1061,6 +1041,7 @@ class Feeds extends Handler_Protected {
$label_id = Labels::feed_to_label_id($feed);
+ $scope->close();
return self::_get_label_unread($label_id, $owner_uid);
}
@@ -1080,6 +1061,7 @@ class Feeds extends Handler_Protected {
$sth->execute([$owner_uid]);
$row = $sth->fetch();
+ $scope->close();
return $row["unread"];
} else {
@@ -1092,6 +1074,7 @@ class Feeds extends Handler_Protected {
$sth->execute([$feed, $owner_uid]);
$row = $sth->fetch();
+ $scope->close();
return $row["unread"];
}
}
@@ -1489,6 +1472,8 @@ class Feeds extends Handler_Protected {
*/
static function _get_headlines($params): array {
+ $scope = Tracer::start(__METHOD__, [], func_get_args());
+
$pdo = Db::pdo();
// WARNING: due to highly dynamic nature of this query its going to quote parameters
@@ -1981,8 +1966,9 @@ class Feeds extends Handler_Protected {
$res = $pdo->query($query);
}
- return array($res, $feed_title, $feed_site_url, $last_error, $last_updated, $search_words, $first_id, $vfeed_query_part != "", $query_error_override);
+ $scope->close();
+ return array($res, $feed_title, $feed_site_url, $last_error, $last_updated, $search_words, $first_id, $vfeed_query_part != "", $query_error_override);
}
/**
@@ -2495,23 +2481,5 @@ class Feeds extends Handler_Protected {
return [$query, $skip_first_id];
}
- private function _mark_timestamp(string $label): void {
-
- if (empty($_REQUEST['timestamps']))
- return;
-
- if (!$this->viewfeed_timestamp) $this->viewfeed_timestamp = hrtime(true);
- if (!$this->viewfeed_timestamp_last) $this->viewfeed_timestamp_last = hrtime(true);
-
- $timestamp = hrtime(true);
-
- printf("[%4d ms, %4d abs] %s\n",
- ($timestamp - $this->viewfeed_timestamp_last) / 1e6,
- ($timestamp - $this->viewfeed_timestamp) / 1e6,
- $label);
-
- $this->viewfeed_timestamp_last = $timestamp;
- }
-
}
diff --git a/classes/handler/public.php b/classes/handler/public.php
index d776e27cd..d7a7010fe 100755
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -416,10 +416,10 @@ class Handler_Public extends Handler {
$_SESSION["login_error_msg"] ??= __("Incorrect username or password");
}
- $return = clean($_REQUEST['return']);
+ $return = clean($_REQUEST['return'] ?? '');
- if ($_REQUEST['return'] && mb_strpos($return, Config::get_self_url()) === 0) {
- header("Location: " . clean($_REQUEST['return']));
+ if ($return && mb_strpos($return, Config::get_self_url()) === 0) {
+ header("Location: $return");
} else {
header("Location: " . Config::get_self_url());
}
diff --git a/classes/icatchall.php b/classes/icatchall.php
new file mode 100644
index 000000000..29954d35a
--- /dev/null
+++ b/classes/icatchall.php
@@ -0,0 +1,4 @@
+<?php
+interface ICatchall {
+ function catchall(string $method): void;
+}
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index ab26780c7..bdbecca13 100755
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -339,10 +339,13 @@ class PluginHost {
*/
function chain_hooks_callback(string $hook, Closure $callback, &...$args): void {
$method = strtolower((string)$hook);
+ $scope = Tracer::start(__METHOD__, ['hook' => $hook]);
foreach ($this->get_hooks((string)$hook) as $plugin) {
//Debug::log("invoking: " . get_class($plugin) . "->$hook()", Debug::$LOG_VERBOSE);
+ $p_scope = Tracer::start("$hook - " . get_class($plugin));
+
try {
if ($callback($plugin->$method(...$args), $plugin))
break;
@@ -351,7 +354,11 @@ class PluginHost {
} catch (Error $err) {
user_error($err, E_USER_WARNING);
}
+
+ $p_scope->close();
}
+
+ $scope->close();
}
/**
@@ -431,6 +438,8 @@ class PluginHost {
* @param PluginHost::KIND_* $kind
*/
function load(string $classlist, int $kind, int $owner_uid = null, bool $skip_init = false): void {
+ $scope = Tracer::start(__METHOD__);
+
$plugins = explode(",", $classlist);
$this->owner_uid = (int) $owner_uid;
@@ -439,18 +448,21 @@ class PluginHost {
$class = trim($class);
$class_file = strtolower(basename(clean($class)));
+ $p_scope = Tracer::start("loading $class_file");
+
// try system plugin directory first
$file = dirname(__DIR__) . "/plugins/$class_file/init.php";
if (!file_exists($file)) {
$file = dirname(__DIR__) . "/plugins.local/$class_file/init.php";
- if (!file_exists($file))
+ if (!file_exists($file)) {
+ $p_scope->close();
continue;
+ }
}
if (!isset($this->plugins[$class])) {
-
// WIP hack
// we can't catch incompatible method signatures via Throwable
// this also enables global tt-rss safe mode in case there are more plugins like this
@@ -464,6 +476,8 @@ class PluginHost {
$_SESSION["safe_mode"] = 1;
+ $p_scope->getSpan()->setTag('error', 'plugin is blacklisted');
+ $p_scope->close();
continue;
}
@@ -474,16 +488,21 @@ class PluginHost {
} catch (Error $err) {
user_error($err, E_USER_WARNING);
+
+ $p_scope->getSpan()->setTag('error', $err);
+ $p_scope->close();
continue;
}
if (class_exists($class) && is_subclass_of($class, "Plugin")) {
-
$plugin = new $class($this);
$plugin_api = $plugin->api_version();
if ($plugin_api < self::API_VERSION) {
user_error("Plugin $class is not compatible with current API version (need: " . self::API_VERSION . ", got: $plugin_api)", E_USER_WARNING);
+
+ $p_scope->getSpan()->setTag('error', 'plugin is not compatible with API version');
+ $p_scope->close();
continue;
}
@@ -492,6 +511,8 @@ class PluginHost {
_bind_textdomain_codeset($class, "UTF-8");
}
+ $i_scope = Tracer::start('init and register plugin');
+
try {
switch ($kind) {
case $this::KIND_SYSTEM:
@@ -516,11 +537,17 @@ class PluginHost {
} catch (Error $err) {
user_error($err, E_USER_WARNING);
}
+
+ $i_scope->close();
+
}
}
+ $p_scope->close();
}
$this->load_data();
+
+ $scope->close();
}
function is_system(Plugin $plugin): bool {
@@ -613,6 +640,8 @@ class PluginHost {
}
private function load_data(): void {
+ $scope = Tracer::start(__METHOD__);
+
if ($this->owner_uid && !$this->data_loaded && get_schema_version() > 100) {
$sth = $this->pdo->prepare("SELECT name, content FROM ttrss_plugin_storage
WHERE owner_uid = ?");
@@ -624,10 +653,13 @@ class PluginHost {
$this->data_loaded = true;
}
+
+ $scope->close();
}
private function save_data(string $plugin): void {
if ($this->owner_uid) {
+ $scope = Tracer::start(__METHOD__);
if (!$this->pdo_data)
$this->pdo_data = Db::instance()->pdo_connect();
@@ -655,6 +687,7 @@ class PluginHost {
}
$this->pdo_data->commit();
+ $scope->close();
}
}
diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php
index ed6560fd3..fb7e01af8 100755
--- a/classes/pref/feeds.php
+++ b/classes/pref/feeds.php
@@ -1104,12 +1104,16 @@ class Pref_Feeds extends Handler_Protected {
* @return array<string, mixed>
*/
private function feedlist_init_feed(int $feed_id, ?string $title = null, bool $unread = false, string $error = '', string $updated = ''): array {
+ $scope = Tracer::start(__METHOD__, []);
+
if (!$title)
$title = Feeds::_get_title($feed_id, false);
if ($unread === false)
$unread = Feeds::_get_counters($feed_id, false, true);
+ $scope->close();
+
return [
'id' => 'FEED:' . $feed_id,
'name' => $title,
diff --git a/classes/rpc.php b/classes/rpc.php
index 204b002d5..afd3c0c79 100755
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -106,6 +106,8 @@ class RPC extends Handler_Protected {
}
function getAllCounters(): void {
+ $scope = Tracer::start(__METHOD__);
+
@$seq = (int) $_REQUEST['seq'];
$feed_id_count = (int) ($_REQUEST["feed_id_count"] ?? -1);
@@ -132,6 +134,7 @@ class RPC extends Handler_Protected {
'seq' => $seq
];
+ $scope->close();
print json_encode($reply);
}
diff --git a/classes/rssutils.php b/classes/rssutils.php
index 385ab31e6..d1096cc85 100755
--- a/classes/rssutils.php
+++ b/classes/rssutils.php
@@ -68,6 +68,8 @@ class RSSUtils {
* @param array<string, false|string> $options
*/
static function update_daemon_common(int $limit = 0, array $options = []): int {
+ $scope = Tracer::start(__METHOD__);
+
if (!$limit) $limit = Config::get(Config::DAEMON_FEED_LIMIT);
if (Config::get_schema_version() != Config::SCHEMA_VERSION) {
@@ -283,6 +285,8 @@ class RSSUtils {
// Send feed digests by email if needed.
Digest::send_headlines_digests();
+ $scope->close();
+
return $nf;
}
@@ -349,6 +353,7 @@ class RSSUtils {
static function update_rss_feed(int $feed, bool $no_cache = false) : bool {
+ $scope = Tracer::start(__METHOD__, [], func_get_args());
Debug::log("start", Debug::LOG_VERBOSE);
$pdo = Db::pdo();
@@ -383,16 +388,19 @@ class RSSUtils {
if ($user) {
if ($user->access_level == UserHelper::ACCESS_LEVEL_READONLY) {
Debug::log("error: denied update for $feed: permission denied by owner access level");
+ $scope->close();
return false;
}
} else {
// this would indicate database corruption of some kind
Debug::log("error: owner not found for feed: $feed");
+ $scope->close();
return false;
}
} else {
Debug::log("error: feeds table record not found for feed: $feed");
+ $scope->close();
return false;
}
@@ -550,6 +558,7 @@ class RSSUtils {
$feed_obj->save();
}
+ $scope->close();
return $error_message == "";
}
@@ -675,7 +684,7 @@ class RSSUtils {
]);
$feed_obj->save();
-
+ $scope->close();
return true; // no articles
}
@@ -684,6 +693,8 @@ class RSSUtils {
$tstart = time();
foreach ($items as $item) {
+ $a_scope = Tracer::start('article');
+
$pdo->beginTransaction();
Debug::log("=================================================================================================================================",
@@ -1276,6 +1287,7 @@ class RSSUtils {
Debug::log("article processed.", Debug::LOG_VERBOSE);
$pdo->commit();
+ $a_scope->close();
}
Debug::log("=================================================================================================================================",
@@ -1317,10 +1329,12 @@ class RSSUtils {
unset($rss);
Debug::log("update failed.", Debug::LOG_VERBOSE);
+ $scope->close();
return false;
}
Debug::log("update done.", Debug::LOG_VERBOSE);
+ $scope->close();
return true;
}
@@ -1485,6 +1499,8 @@ class RSSUtils {
* @return array<int, array<string, string>> An array of filter action arrays with keys "type" and "param"
*/
static function get_article_filters(array $filters, string $title, string $content, string $link, string $author, array $tags, array &$matched_rules = null, array &$matched_filters = null): array {
+ $scope = Tracer::start(__METHOD__);
+
$matches = array();
foreach ($filters as $filter) {
@@ -1526,6 +1542,9 @@ class RSSUtils {
$match = @preg_match("/$reg_exp/iu", $author);
break;
case "tag":
+ if (count($tags) == 0)
+ array_push($tags, ''); // allow matching if there are no tags
+
foreach ($tags as $tag) {
if (@preg_match("/$reg_exp/iu", $tag)) {
$match = true;
@@ -1565,6 +1584,8 @@ class RSSUtils {
}
}
+ $scope->close();
+
return $matches;
}
diff --git a/classes/sanitizer.php b/classes/sanitizer.php
index 8b4584a28..28874d16f 100644
--- a/classes/sanitizer.php
+++ b/classes/sanitizer.php
@@ -63,6 +63,7 @@ class Sanitizer {
* @return false|string The HTML, or false if an error occurred.
*/
public static function sanitize(string $str, ?bool $force_remove_images = false, int $owner = null, string $site_url = null, array $highlight_words = null, int $article_id = null) {
+ $scope = Tracer::start(__METHOD__);
if (!$owner && isset($_SESSION["uid"]))
$owner = $_SESSION["uid"];
@@ -223,6 +224,8 @@ class Sanitizer {
$res = $doc->saveHTML();
+ $scope->close();
+
/* strip everything outside of <body>...</body> */
$res_frag = array();
diff --git a/classes/tracer.php b/classes/tracer.php
new file mode 100644
index 000000000..5a23dfeba
--- /dev/null
+++ b/classes/tracer.php
@@ -0,0 +1,69 @@
+<?php
+use OpenTracing\GlobalTracer;
+use OpenTracing\Scope;
+
+class Tracer {
+ /** @var Tracer $instance */
+ private static $instance;
+
+ public function __construct() {
+ $jaeger_host = Config::get(Config::JAEGER_REPORTING_HOST);
+
+ if ($jaeger_host) {
+ $config = new \Jaeger\Config(
+ [
+ 'sampler' => [
+ 'type' => \Jaeger\SAMPLER_TYPE_CONST,
+ 'param' => true,
+ ],
+ 'logging' => true,
+ "local_agent" => [
+ "reporting_host" => $jaeger_host,
+ "reporting_port" => 6832
+ ],
+ 'dispatch_mode' => \Jaeger\Config::JAEGER_OVER_BINARY_UDP,
+ ],
+ Config::get(Config::JAEGER_SERVICE_NAME)
+ );
+
+ $config->initializeTracer();
+
+ register_shutdown_function(function() {
+ $tracer = GlobalTracer::get();
+ $tracer->flush();
+ });
+ }
+ }
+
+ /**
+ * @param string $name
+ * @param array<string>|array<string, array<string, mixed>> $tags
+ * @param array<string> $args
+ * @return Scope
+ */
+ private function _start(string $name, array $tags = [], array $args = []): Scope {
+ $tracer = GlobalTracer::get();
+
+ $tags['args'] = json_encode($args);
+
+ return $tracer->startActiveSpan($name, ['tags' => $tags]);
+ }
+
+ /**
+ * @param string $name
+ * @param array<string>|array<string, array<string, mixed>> $tags
+ * @param array<string> $args
+ * @return Scope
+ */
+ public static function start(string $name, array $tags = [], array $args = []) : Scope {
+ return self::get_instance()->_start($name, $tags, $args);
+ }
+
+ public static function get_instance() : Tracer {
+ if (self::$instance == null)
+ self::$instance = new self();
+
+ return self::$instance;
+ }
+
+}
diff --git a/classes/urlhelper.php b/classes/urlhelper.php
index dc47f5ad8..6300e7346 100644
--- a/classes/urlhelper.php
+++ b/classes/urlhelper.php
@@ -185,10 +185,14 @@ class UrlHelper {
* @return false|string
*/
static function resolve_redirects(string $url, int $timeout, int $nest = 0) {
+ $scope = Tracer::start(__METHOD__, ['url' => $url]);
// too many redirects
- if ($nest > 10)
+ if ($nest > 10) {
+ $scope->getSpan()->setTag('error', 'too many redirects');
+ $scope->close();
return false;
+ }
$context_options = array(
'http' => array(
@@ -222,9 +226,12 @@ class UrlHelper {
}
}
+ $scope->close();
return $url;
}
+ $scope->getSpan()->setTag('error', 'request failed');
+ $scope->close();
// request failed?
return false;
}
@@ -270,8 +277,10 @@ class UrlHelper {
"useragent" => @func_get_arg(7)
); */
}
-
$url = $options["url"];
+
+ $scope = Tracer::start(__METHOD__, ['url' => $url]);
+
$type = isset($options["type"]) ? $options["type"] : false;
$login = isset($options["login"]) ? $options["login"] : false;
$pass = isset($options["pass"]) ? $options["pass"] : false;
@@ -293,6 +302,9 @@ class UrlHelper {
if (!$url) {
self::$fetch_last_error = "Requested URL failed extended validation.";
+
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -301,6 +313,9 @@ class UrlHelper {
if (!$ip_addr || strpos($ip_addr, "127.") === 0) {
self::$fetch_last_error = "URL hostname failed to resolve or resolved to a loopback address ($ip_addr)";
+
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -310,7 +325,12 @@ class UrlHelper {
$ch = curl_init($url);
- if (!$ch) return false;
+ if (!$ch) {
+ self::$fetch_last_error = "curl_init() failed";
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
+ return false;
+ }
$curl_http_headers = [];
@@ -412,6 +432,8 @@ class UrlHelper {
if (!self::validate(self::$fetch_effective_url, true)) {
self::$fetch_last_error = "URL received after redirection failed extended validation.";
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -420,6 +442,8 @@ class UrlHelper {
if (!self::$fetch_effective_ip_addr || strpos(self::$fetch_effective_ip_addr, "127.") === 0) {
self::$fetch_last_error = "URL hostname received after redirection failed to resolve or resolved to a loopback address (".self::$fetch_effective_ip_addr.")";
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -435,6 +459,9 @@ class UrlHelper {
self::$fetch_last_error_content = $contents;
curl_close($ch);
+
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -445,6 +472,9 @@ class UrlHelper {
self::$fetch_last_error = curl_errno($ch) . " " . curl_error($ch);
}
curl_close($ch);
+
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -458,6 +488,8 @@ class UrlHelper {
if ($tmp) $contents = $tmp;
}
+ $scope->close();
+
return $contents;
} else {
@@ -511,6 +543,8 @@ class UrlHelper {
if (!self::validate(self::$fetch_effective_url, true)) {
self::$fetch_last_error = "URL received after redirection failed extended validation.";
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -519,6 +553,8 @@ class UrlHelper {
if (!self::$fetch_effective_ip_addr || strpos(self::$fetch_effective_ip_addr, "127.") === 0) {
self::$fetch_last_error = "URL hostname received after redirection failed to resolve or resolved to a loopback address (".self::$fetch_effective_ip_addr.")";
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -526,6 +562,9 @@ class UrlHelper {
if ($data === false) {
self::$fetch_last_error = "'file_get_contents' failed.";
+
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -561,6 +600,8 @@ class UrlHelper {
self::$fetch_last_error_content = $data;
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
@@ -573,9 +614,13 @@ class UrlHelper {
if ($tmp) $data = $tmp;
}
+ $scope->close();
return $data;
} else {
self::$fetch_last_error = 'Successful response, but no content was received.';
+
+ $scope->getSpan()->setTag('error', self::$fetch_last_error);
+ $scope->close();
return false;
}
}
diff --git a/composer.json b/composer.json
index be5dbc3c4..68076f778 100644
--- a/composer.json
+++ b/composer.json
@@ -13,7 +13,8 @@
"spomky-labs/otphp": "^10.0",
"chillerlan/php-qrcode": "^4.3.3",
"mervick/material-design-icons": "^2.2",
- "j4mie/idiorm": "dev-master"
+ "j4mie/idiorm": "dev-master",
+ "jonahgeorge/jaeger-client-php": "^1.4"
},
"require-dev": {
"phpstan/phpstan": "1.10.3",
diff --git a/composer.lock b/composer.lock
index f704f1075..3793968c9 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "d2be3e2749aff1bebf6257ecbfd6dcb3",
+ "content-hash": "de4af0d5d452fc73fe4f5d584163af9a",
"packages": [
{
"name": "beberlei/assert",
@@ -281,6 +281,74 @@
"time": "2022-03-26T15:19:01+00:00"
},
{
+ "name": "jonahgeorge/jaeger-client-php",
+ "version": "v1.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jonahgeorge/jaeger-client-php.git",
+ "reference": "3173d9c68ad8cea16058f25337982b00cc3d1c2b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jonahgeorge/jaeger-client-php/zipball/3173d9c68ad8cea16058f25337982b00cc3d1c2b",
+ "reference": "3173d9c68ad8cea16058f25337982b00cc3d1c2b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-sockets": "*",
+ "opentracing/opentracing": "^1.0",
+ "packaged/thrift": "^0.13",
+ "php": "^7.1 || ^8.0 || ^8.1",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0",
+ "psr/log": "^1.0 || ^2.0 || ^3.0"
+ },
+ "require-dev": {
+ "cache/array-adapter": "^1.0",
+ "phpunit/phpunit": "^7 || ^8 || ^9",
+ "squizlabs/php_codesniffer": "3.*",
+ "symfony/polyfill-php73": "^1.10"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "./src/Jaeger/Constants.php"
+ ],
+ "psr-4": {
+ "Jaeger\\": "src/Jaeger/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonah George",
+ "homepage": "http://twitter.com/jonahgeorge"
+ },
+ {
+ "name": "José Carlos Chávez",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/jonahgeorge/jaeger-client-php/graphs/contributors"
+ }
+ ],
+ "description": "Jaeger Bindings for PHP OpenTracing API",
+ "keywords": [
+ "jaeger",
+ "opentracing",
+ "trace",
+ "tracing"
+ ],
+ "support": {
+ "issues": "https://github.com/jonahgeorge/jaeger-client-php/issues",
+ "source": "https://github.com/jonahgeorge/jaeger-client-php/tree/v1.4.4"
+ },
+ "time": "2023-01-31T13:40:20+00:00"
+ },
+ {
"name": "mervick/material-design-icons",
"version": "2.2.0",
"source": {
@@ -324,6 +392,94 @@
"time": "2016-02-22T01:05:40+00:00"
},
{
+ "name": "opentracing/opentracing",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/opentracing/opentracing-php.git",
+ "reference": "cd60bd1fb2a25280600bc74c7f9e0c13881a9116"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/opentracing/opentracing-php/zipball/cd60bd1fb2a25280600bc74c7f9e0c13881a9116",
+ "reference": "cd60bd1fb2a25280600bc74c7f9e0c13881a9116",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "~0.12",
+ "phpunit/phpunit": "^7.0 || ^9.0",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/OpenTracing/Tags.php",
+ "src/OpenTracing/Formats.php"
+ ],
+ "psr-4": {
+ "OpenTracing\\": "src/OpenTracing/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "José Carlos Chávez",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "OpenTracing API for PHP",
+ "support": {
+ "issues": "https://github.com/opentracing/opentracing-php/issues",
+ "source": "https://github.com/opentracing/opentracing-php/tree/1.0.2"
+ },
+ "time": "2022-01-27T19:59:21+00:00"
+ },
+ {
+ "name": "packaged/thrift",
+ "version": "0.13.01",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/packaged/thrift.git",
+ "reference": "e3dbcfb79e319971d64264ffe9c340590cc8a228"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/packaged/thrift/zipball/e3dbcfb79e319971d64264ffe9c340590cc8a228",
+ "reference": "e3dbcfb79e319971d64264ffe9c340590cc8a228",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Thrift\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "description": "Apache Thrift",
+ "homepage": "http://thrift.apache.org/",
+ "keywords": [
+ "apache",
+ "thrift"
+ ],
+ "support": {
+ "issues": "https://github.com/packaged/thrift/issues",
+ "source": "https://github.com/packaged/thrift/tree/0.13.01"
+ },
+ "time": "2021-01-25T13:32:28+00:00"
+ },
+ {
"name": "paragonie/constant_time_encoding",
"version": "v2.6.3",
"source": {
@@ -391,6 +547,105 @@
"time": "2022-06-14T06:56:20+00:00"
},
{
+ "name": "psr/cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
+ },
+ "time": "2021-02-03T23:26:27+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
+ },
+ "time": "2021-07-14T16:46:02+00:00"
+ },
+ {
"name": "spomky-labs/otphp",
"version": "v10.0.3",
"source": {
@@ -2690,5 +2945,5 @@
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.0.0"
}
diff --git a/js/Article.js b/js/Article.js
index 703b634d5..5f3a8c2e9 100644
--- a/js/Article.js
+++ b/js/Article.js
@@ -333,6 +333,20 @@ const Article = {
return false;
},
+ autocompleteInject: function(elem, targetId) {
+ const target = App.byId(targetId);
+
+ if (!target)
+ return;
+
+ target.value = target.value.split(',')
+ .slice(0, -1)
+ .map((w) => w.trim())
+ .concat([elem.innerText])
+ .join(', ') + ', ';
+
+ target.focus();
+ },
editTags: function (id) {
const dialog = new fox.SingleUseDialog({
title: __("Article tags"),
@@ -348,7 +362,7 @@ const Article = {
<section>
<textarea dojoType='dijit.form.SimpleTextarea' rows='4' disabled='true'
id='tags_str' name='tags_str'>${__("Loading, please wait...")}</textarea>
- <div class='autocomplete' id='tags_choices' style='display:none'></div>
+ <span id='tags_choices'></span>
</section>
<footer>
@@ -387,9 +401,15 @@ const Article = {
.attr('value', reply.tags.join(", "))
.attr('disabled', false);
- /* new Ajax.Autocompleter("tags_str", "tags_choices",
- "backend.php?op=article&method=completeTags",
- {tokens: ',', paramName: "search"}); */
+ App.byId('tags_str').onkeyup = (e) => {
+ const last_tag = e.target.value.split(',').pop().trim();
+
+ xhr.json("backend.php", {op: 'article', method: 'completeTags', search: last_tag}, (data) => {
+ App.byId("tags_choices").innerHTML = `${data.map((tag) =>
+ `<a href="#" onclick="Article.autocompleteInject(this, 'tags_str')">${tag}</a>` )
+ .join(', ')}`
+ });
+ };
});
});
diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js
index 4cfc6ec70..a141c29be 100644
--- a/js/CommonDialogs.js
+++ b/js/CommonDialogs.js
@@ -599,7 +599,7 @@ const CommonDialogs = {
<input style="display: none" type="file" onchange="App.dialogOf(this).uploadIcon(this)">
</label>
- ${App.FormFields.submit_tag(App.FormFields.icon("delete") + " " + __("Remove"), {class: "alt-danger", onclick: "App.dialogOf(this).removeIcon("+feed_id+")"})}
+ ${App.FormFields.button_tag(App.FormFields.icon("delete") + " " + __("Remove"), "", {class: "alt-danger", onclick: "App.dialogOf(this).removeIcon("+feed_id+")"})}
</div>
<div dojoType="dijit.layout.ContentPane" title="${__('Plugins')}">
${reply.plugin_data}
diff --git a/js/Headlines.js b/js/Headlines.js
index be17bf832..5706377f8 100755
--- a/js/Headlines.js
+++ b/js/Headlines.js
@@ -13,6 +13,7 @@ const Headlines = {
_scroll_reset_timeout: false,
default_force_previous: false,
default_force_to_top: false,
+ default_move_on_expand: true,
line_scroll_offset: 120, /* px */
sticky_header_observer: new IntersectionObserver(
(entries, observer) => {
@@ -255,7 +256,8 @@ const Headlines = {
// this would only work if there's enough space
App.byId("headlines-frame").scrollTop -= scroll_position_A-scroll_position_B;
- Article.cdmMoveToId(id);
+ if (this.default_move_on_expand)
+ Article.cdmMoveToId(id);
}
} else if (in_body) {
diff --git a/js/common.js b/js/common.js
index b972f2376..9635ab492 100755
--- a/js/common.js
+++ b/js/common.js
@@ -29,6 +29,25 @@ function $$(query) {
return document.querySelectorAll(query);
}
+// polyfill for safari https://raw.githubusercontent.com/pladaria/requestidlecallback-polyfill/master/index.js
+window.requestIdleCallback =
+ window.requestIdleCallback ||
+ function (callback) {
+ const start = Date.now();
+ return setTimeout(() => {
+ callback({
+ didTimeout: false,
+ timeRemaining: () => Math.max(0, 50 - (Date.now() - start))
+ },
+ );
+ }, 1);
+ };
+
+window.cancelIdleCallback =
+ window.cancelIdleCallback ||
+ function (id) {
+ clearTimeout(id);
+ };
Element.prototype.hasClassName = function(className) {
return this.classList.contains(className);
diff --git a/lib/dijit/bower.json b/lib/dijit/bower.json
index 6c72245ec..c912e5dd8 100644
--- a/lib/dijit/bower.json
+++ b/lib/dijit/bower.json
@@ -15,7 +15,7 @@
"url": "https://github.com/dojo/dijit.git"
},
"dependencies": {
- "dojo": "1.16.4"
+ "dojo": "1.16.5"
},
"devDependencies": {
}
diff --git a/lib/dijit/form/_FormSelectWidget.js b/lib/dijit/form/_FormSelectWidget.js
index 58c34e0a2..b6d1de198 100644
--- a/lib/dijit/form/_FormSelectWidget.js
+++ b/lib/dijit/form/_FormSelectWidget.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/form/_FormSelectWidget",["dojo/_base/array","dojo/_base/Deferred","dojo/aspect","dojo/data/util/sorter","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/when","dojo/store/util/QueryResults","./_FormValueWidget"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d){var _e=_5("dijit.form._FormSelectWidget",_d,{multiple:false,options:null,store:null,_setStoreAttr:function(_f){if(this._created){this._deprecatedSetStore(_f);}},query:null,_setQueryAttr:function(_10){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{query:_10});}},queryOptions:null,_setQueryOptionsAttr:function(_11){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{queryOptions:_11});}},labelAttr:"",onFetch:null,sortByLabel:true,loadChildrenOnOpen:false,onLoadDeferred:null,getOptions:function(_12){var _13=this.options||[];if(_12==null){return _13;}if(_9.isArrayLike(_12)){return _1.map(_12,"return this.getOptions(item);",this);}if(_9.isString(_12)){_12={value:_12};}if(_9.isObject(_12)){if(!_1.some(_13,function(_14,idx){for(var a in _12){if(!(a in _14)||_14[a]!=_12[a]){return false;}}_12=idx;return true;})){_12=-1;}}if(_12>=0&&_12<_13.length){return _13[_12];}return null;},addOption:function(_15){_1.forEach(_9.isArrayLike(_15)?_15:[_15],function(i){if(i&&_9.isObject(i)){this.options.push(i);}},this);this._loadChildren();},removeOption:function(_16){var _17=this.getOptions(_9.isArrayLike(_16)?_16:[_16]);_1.forEach(_17,function(_18){if(_18){this.options=_1.filter(this.options,function(_19){return (_19.value!==_18.value||_19.label!==_18.label);});this._removeOptionItem(_18);}},this);this._loadChildren();},updateOption:function(_1a){_1.forEach(_9.isArrayLike(_1a)?_1a:[_1a],function(i){var _1b=this.getOptions({value:i.value}),k;if(_1b){for(k in i){_1b[k]=i[k];}}},this);this._loadChildren();},setStore:function(_1c,_1d,_1e){_8.deprecated(this.declaredClass+"::setStore(store, selectedValue, fetchArgs) is deprecated. Use set('query', fetchArgs.query), set('queryOptions', fetchArgs.queryOptions), set('store', store), or set('value', selectedValue) instead.","","2.0");this._deprecatedSetStore(_1c,_1d,_1e);},_deprecatedSetStore:function(_1f,_20,_21){var _22=this.store;_21=_21||{};if(_22!==_1f){var h;while((h=this._notifyConnections.pop())){h.remove();}if(!_1f.get){_9.mixin(_1f,{_oldAPI:true,get:function(id){var _23=new _2();this.fetchItemByIdentity({identity:id,onItem:function(_24){_23.resolve(_24);},onError:function(_25){_23.reject(_25);}});return _23.promise;},query:function(_26,_27){var _28=new _2(function(){if(_29.abort){_29.abort();}});_28.total=new _2();var _29=this.fetch(_9.mixin({query:_26,onBegin:function(_2a){_28.total.resolve(_2a);},onComplete:function(_2b){_28.resolve(_2b);},onError:function(_2c){_28.reject(_2c);}},_27));return new _c(_28);}});if(_1f.getFeatures()["dojo.data.api.Notification"]){this._notifyConnections=[_3.after(_1f,"onNew",_9.hitch(this,"_onNewItem"),true),_3.after(_1f,"onDelete",_9.hitch(this,"_onDeleteItem"),true),_3.after(_1f,"onSet",_9.hitch(this,"_onSetItem"),true)];}}this._set("store",_1f);}if(this.options&&this.options.length){this.removeOption(this.options);}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}if(_21.query){this._set("query",_21.query);}if(_21.queryOptions){this._set("queryOptions",_21.queryOptions);}if(_1f&&_1f.query){this._loadingStore=true;this.onLoadDeferred=new _2();this._queryRes=_1f.query(this.query,this.queryOptions);_b(this._queryRes,_9.hitch(this,function(_2d){if(this.sortByLabel&&!_21.sort&&_2d.length){if(_1f.getValue){_2d.sort(_4.createSortFunction([{attribute:_1f.getLabelAttributes(_2d[0])[0]}],_1f));}else{var _2e=this.labelAttr;_2d.sort(function(a,b){return a[_2e]>b[_2e]?1:b[_2e]>a[_2e]?-1:0;});}}if(_21.onFetch){_2d=_21.onFetch.call(this,_2d,_21);}_1.forEach(_2d,function(i){this._addOptionForItem(i);},this);if(this._queryRes.observe){this._observeHandle=this._queryRes.observe(_9.hitch(this,function(_2f,_30,_31){if(_30==_31){this._onSetItem(_2f);}else{if(_30!=-1){this._onDeleteItem(_2f);}if(_31!=-1){this._onNewItem(_2f);}}}),true);}this._loadingStore=false;this.set("value","_pendingValue" in this?this._pendingValue:_20);delete this._pendingValue;if(!this.loadChildrenOnOpen){this._loadChildren();}else{this._pseudoLoadChildren(_2d);}this.onLoadDeferred.resolve(true);this.onSetStore();}),_9.hitch(this,function(err){console.error("dijit.form.Select: "+err.toString());this.onLoadDeferred.reject(err);}));}return _22;},_setValueAttr:function(_32,_33){if(!this._onChangeActive){_33=null;}if(this._loadingStore){this._pendingValue=_32;return;}if(_32==null){return;}if(_9.isArrayLike(_32)){_32=_1.map(_32,function(_34){return _9.isObject(_34)?_34:{value:_34};});}else{if(_9.isObject(_32)){_32=[_32];}else{_32=[{value:_32}];}}_32=_1.filter(this.getOptions(_32),function(i){return i&&i.value;});var _35=this.getOptions()||[];if(!this.multiple&&(!_32[0]||!_32[0].value)&&!!_35.length){_32[0]=_35[0];}_1.forEach(_35,function(opt){opt.selected=_1.some(_32,function(v){return v.value===opt.value;});});var val=_1.map(_32,function(opt){return opt.value;});if(typeof val=="undefined"||typeof val[0]=="undefined"){return;}var _36=_1.map(_32,function(opt){return opt.label;});this._setDisplay(this.multiple?_36:_36[0]);this.inherited(arguments,[this.multiple?val:val[0],_33]);this._updateSelection();},_getDisplayedValueAttr:function(){var ret=_1.map([].concat(this.get("selectedOptions")),function(v){if(v&&"label" in v){return v.label;}else{if(v){return v.value;}}return null;},this);return this.multiple?ret:ret[0];},_setDisplayedValueAttr:function(_37){this.set("value",this.getOptions(typeof _37=="string"?{label:_37}:_37));},_loadChildren:function(){if(this._loadingStore){return;}_1.forEach(this._getChildren(),function(_38){_38.destroyRecursive();});_1.forEach(this.options,this._addOptionItem,this);this._updateSelection();},_updateSelection:function(){this.focusedChild=null;this._set("value",this._getValueFromOpts());var val=[].concat(this.value);if(val&&val[0]){var _39=this;_1.forEach(this._getChildren(),function(_3a){var _3b=_1.some(val,function(v){return _3a.option&&(v===_3a.option.value);});if(_3b&&!_39.multiple){_39.focusedChild=_3a;}_7.toggle(_3a.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),_3b);_3a.domNode.setAttribute("aria-selected",_3b?"true":"false");},this);}},_getValueFromOpts:function(){var _3c=this.getOptions()||[];if(!this.multiple&&_3c.length){var opt=_1.filter(_3c,function(i){return i.selected;})[0];if(opt&&opt.value){return opt.value;}else{_3c[0].selected=true;return _3c[0].value;}}else{if(this.multiple){return _1.map(_1.filter(_3c,function(i){return i.selected;}),function(i){return i.value;})||[];}}return "";},_onNewItem:function(_3d,_3e){if(!_3e||!_3e.parent){this._addOptionForItem(_3d);}},_onDeleteItem:function(_3f){var _40=this.store;this.removeOption({value:_40.getIdentity(_3f)});},_onSetItem:function(_41){this.updateOption(this._getOptionObjForItem(_41));},_getOptionObjForItem:function(_42){var _43=this.store,_44=(this.labelAttr&&this.labelAttr in _42)?_42[this.labelAttr]:_43.getLabel(_42),_45=(_44?_43.getIdentity(_42):null);return {value:_45,label:_44,item:_42};},_addOptionForItem:function(_46){var _47=this.store;if(_47.isItemLoaded&&!_47.isItemLoaded(_46)){_47.loadItem({item:_46,onItem:function(i){this._addOptionForItem(i);},scope:this});return;}var _48=this._getOptionObjForItem(_46);this.addOption(_48);},constructor:function(_49){this._oValue=(_49||{}).value||null;this._notifyConnections=[];},buildRendering:function(){this.inherited(arguments);_6.setSelectable(this.focusNode,false);},_fillContent:function(){if(!this.options){this.options=this.srcNodeRef?_a("> *",this.srcNodeRef).map(function(_4a){if(_4a.getAttribute("type")==="separator"){return {value:"",label:"",selected:false,disabled:false};}return {value:(_4a.getAttribute("data-"+_8._scopeName+"-value")||_4a.getAttribute("value")),label:String(_4a.innerHTML),selected:_4a.getAttribute("selected")||false,disabled:_4a.getAttribute("disabled")||false};},this):[];}if(!this.value){this._set("value",this._getValueFromOpts());}else{if(this.multiple&&typeof this.value=="string"){this._set("value",this.value.split(","));}}},postCreate:function(){this.inherited(arguments);_3.after(this,"onChange",_9.hitch(this,"_updateSelection"));var _4b=this.store;if(_4b&&(_4b.getIdentity||_4b.getFeatures()["dojo.data.api.Identity"])){this.store=null;this._deprecatedSetStore(_4b,this._oValue,{query:this.query,queryOptions:this.queryOptions});}this._storeInitialized=true;},startup:function(){this._loadChildren();this.inherited(arguments);},destroy:function(){var h;while((h=this._notifyConnections.pop())){h.remove();}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}this.inherited(arguments);},_addOptionItem:function(){},_removeOptionItem:function(){},_setDisplay:function(){},_getChildren:function(){return [];},_getSelectedOptionsAttr:function(){return this.getOptions({selected:true});},_pseudoLoadChildren:function(){},onSetStore:function(){}});return _e;}); \ No newline at end of file
+define("dijit/form/_FormSelectWidget",["dojo/_base/array","dojo/_base/Deferred","dojo/aspect","dojo/data/util/sorter","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/when","dojo/store/util/QueryResults","./_FormValueWidget"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d){var _e=_5("dijit.form._FormSelectWidget",_d,{multiple:false,options:null,store:null,_setStoreAttr:function(_f){if(this._created){this._deprecatedSetStore(_f);}},query:null,_setQueryAttr:function(_10){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{query:_10});}},queryOptions:null,_setQueryOptionsAttr:function(_11){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{queryOptions:_11});}},labelAttr:"",onFetch:null,sortByLabel:true,loadChildrenOnOpen:false,onLoadDeferred:null,getOptions:function(_12){var _13=this.options||[];if(_12==null){return _13;}if(_9.isArrayLike(_12)){return _1.map(_12,function(_14){return this.getOptions(_14);},this);}if(_9.isString(_12)){_12={value:_12};}if(_9.isObject(_12)){if(!_1.some(_13,function(_15,idx){for(var a in _12){if(!(a in _15)||_15[a]!=_12[a]){return false;}}_12=idx;return true;})){_12=-1;}}if(_12>=0&&_12<_13.length){return _13[_12];}return null;},addOption:function(_16){_1.forEach(_9.isArrayLike(_16)?_16:[_16],function(i){if(i&&_9.isObject(i)){this.options.push(i);}},this);this._loadChildren();},removeOption:function(_17){var _18=this.getOptions(_9.isArrayLike(_17)?_17:[_17]);_1.forEach(_18,function(_19){if(_19){this.options=_1.filter(this.options,function(_1a){return (_1a.value!==_19.value||_1a.label!==_19.label);});this._removeOptionItem(_19);}},this);this._loadChildren();},updateOption:function(_1b){_1.forEach(_9.isArrayLike(_1b)?_1b:[_1b],function(i){var _1c=this.getOptions({value:i.value}),k;if(_1c){for(k in i){_1c[k]=i[k];}}},this);this._loadChildren();},setStore:function(_1d,_1e,_1f){_8.deprecated(this.declaredClass+"::setStore(store, selectedValue, fetchArgs) is deprecated. Use set('query', fetchArgs.query), set('queryOptions', fetchArgs.queryOptions), set('store', store), or set('value', selectedValue) instead.","","2.0");this._deprecatedSetStore(_1d,_1e,_1f);},_deprecatedSetStore:function(_20,_21,_22){var _23=this.store;_22=_22||{};if(_23!==_20){var h;while((h=this._notifyConnections.pop())){h.remove();}if(!_20.get){_9.mixin(_20,{_oldAPI:true,get:function(id){var _24=new _2();this.fetchItemByIdentity({identity:id,onItem:function(_25){_24.resolve(_25);},onError:function(_26){_24.reject(_26);}});return _24.promise;},query:function(_27,_28){var _29=new _2(function(){if(_2a.abort){_2a.abort();}});_29.total=new _2();var _2a=this.fetch(_9.mixin({query:_27,onBegin:function(_2b){_29.total.resolve(_2b);},onComplete:function(_2c){_29.resolve(_2c);},onError:function(_2d){_29.reject(_2d);}},_28));return new _c(_29);}});if(_20.getFeatures()["dojo.data.api.Notification"]){this._notifyConnections=[_3.after(_20,"onNew",_9.hitch(this,"_onNewItem"),true),_3.after(_20,"onDelete",_9.hitch(this,"_onDeleteItem"),true),_3.after(_20,"onSet",_9.hitch(this,"_onSetItem"),true)];}}this._set("store",_20);}if(this.options&&this.options.length){this.removeOption(this.options);}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}if(_22.query){this._set("query",_22.query);}if(_22.queryOptions){this._set("queryOptions",_22.queryOptions);}if(_20&&_20.query){this._loadingStore=true;this.onLoadDeferred=new _2();this._queryRes=_20.query(this.query,this.queryOptions);_b(this._queryRes,_9.hitch(this,function(_2e){if(this.sortByLabel&&!_22.sort&&_2e.length){if(_20.getValue){_2e.sort(_4.createSortFunction([{attribute:_20.getLabelAttributes(_2e[0])[0]}],_20));}else{var _2f=this.labelAttr;_2e.sort(function(a,b){return a[_2f]>b[_2f]?1:b[_2f]>a[_2f]?-1:0;});}}if(_22.onFetch){_2e=_22.onFetch.call(this,_2e,_22);}_1.forEach(_2e,function(i){this._addOptionForItem(i);},this);if(this._queryRes.observe){this._observeHandle=this._queryRes.observe(_9.hitch(this,function(_30,_31,_32){if(_31==_32){this._onSetItem(_30);}else{if(_31!=-1){this._onDeleteItem(_30);}if(_32!=-1){this._onNewItem(_30);}}}),true);}this._loadingStore=false;this.set("value","_pendingValue" in this?this._pendingValue:_21);delete this._pendingValue;if(!this.loadChildrenOnOpen){this._loadChildren();}else{this._pseudoLoadChildren(_2e);}this.onLoadDeferred.resolve(true);this.onSetStore();}),_9.hitch(this,function(err){console.error("dijit.form.Select: "+err.toString());this.onLoadDeferred.reject(err);}));}return _23;},_setValueAttr:function(_33,_34){if(!this._onChangeActive){_34=null;}if(this._loadingStore){this._pendingValue=_33;return;}if(_33==null){return;}if(_9.isArrayLike(_33)){_33=_1.map(_33,function(_35){return _9.isObject(_35)?_35:{value:_35};});}else{if(_9.isObject(_33)){_33=[_33];}else{_33=[{value:_33}];}}_33=_1.filter(this.getOptions(_33),function(i){return i&&i.value;});var _36=this.getOptions()||[];if(!this.multiple&&(!_33[0]||!_33[0].value)&&!!_36.length){_33[0]=_36[0];}_1.forEach(_36,function(opt){opt.selected=_1.some(_33,function(v){return v.value===opt.value;});});var val=_1.map(_33,function(opt){return opt.value;});if(typeof val=="undefined"||typeof val[0]=="undefined"){return;}var _37=_1.map(_33,function(opt){return opt.label;});this._setDisplay(this.multiple?_37:_37[0]);this.inherited(arguments,[this.multiple?val:val[0],_34]);this._updateSelection();},_getDisplayedValueAttr:function(){var ret=_1.map([].concat(this.get("selectedOptions")),function(v){if(v&&"label" in v){return v.label;}else{if(v){return v.value;}}return null;},this);return this.multiple?ret:ret[0];},_setDisplayedValueAttr:function(_38){this.set("value",this.getOptions(typeof _38=="string"?{label:_38}:_38));},_loadChildren:function(){if(this._loadingStore){return;}_1.forEach(this._getChildren(),function(_39){_39.destroyRecursive();});_1.forEach(this.options,this._addOptionItem,this);this._updateSelection();},_updateSelection:function(){this.focusedChild=null;this._set("value",this._getValueFromOpts());var val=[].concat(this.value);if(val&&val[0]){var _3a=this;_1.forEach(this._getChildren(),function(_3b){var _3c=_1.some(val,function(v){return _3b.option&&(v===_3b.option.value);});if(_3c&&!_3a.multiple){_3a.focusedChild=_3b;}_7.toggle(_3b.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),_3c);_3b.domNode.setAttribute("aria-selected",_3c?"true":"false");},this);}},_getValueFromOpts:function(){var _3d=this.getOptions()||[];if(!this.multiple&&_3d.length){var opt=_1.filter(_3d,function(i){return i.selected;})[0];if(opt&&opt.value){return opt.value;}else{_3d[0].selected=true;return _3d[0].value;}}else{if(this.multiple){return _1.map(_1.filter(_3d,function(i){return i.selected;}),function(i){return i.value;})||[];}}return "";},_onNewItem:function(_3e,_3f){if(!_3f||!_3f.parent){this._addOptionForItem(_3e);}},_onDeleteItem:function(_40){var _41=this.store;this.removeOption({value:_41.getIdentity(_40)});},_onSetItem:function(_42){this.updateOption(this._getOptionObjForItem(_42));},_getOptionObjForItem:function(_43){var _44=this.store,_45=(this.labelAttr&&this.labelAttr in _43)?_43[this.labelAttr]:_44.getLabel(_43),_46=(_45?_44.getIdentity(_43):null);return {value:_46,label:_45,item:_43};},_addOptionForItem:function(_47){var _48=this.store;if(_48.isItemLoaded&&!_48.isItemLoaded(_47)){_48.loadItem({item:_47,onItem:function(i){this._addOptionForItem(i);},scope:this});return;}var _49=this._getOptionObjForItem(_47);this.addOption(_49);},constructor:function(_4a){this._oValue=(_4a||{}).value||null;this._notifyConnections=[];},buildRendering:function(){this.inherited(arguments);_6.setSelectable(this.focusNode,false);},_fillContent:function(){if(!this.options){this.options=this.srcNodeRef?_a("> *",this.srcNodeRef).map(function(_4b){if(_4b.getAttribute("type")==="separator"){return {value:"",label:"",selected:false,disabled:false};}return {value:(_4b.getAttribute("data-"+_8._scopeName+"-value")||_4b.getAttribute("value")),label:String(_4b.innerHTML),selected:_4b.getAttribute("selected")||false,disabled:_4b.getAttribute("disabled")||false};},this):[];}if(!this.value){this._set("value",this._getValueFromOpts());}else{if(this.multiple&&typeof this.value=="string"){this._set("value",this.value.split(","));}}},postCreate:function(){this.inherited(arguments);_3.after(this,"onChange",_9.hitch(this,"_updateSelection"));var _4c=this.store;if(_4c&&(_4c.getIdentity||_4c.getFeatures()["dojo.data.api.Identity"])){this.store=null;this._deprecatedSetStore(_4c,this._oValue,{query:this.query,queryOptions:this.queryOptions});}this._storeInitialized=true;},startup:function(){this._loadChildren();this.inherited(arguments);},destroy:function(){var h;while((h=this._notifyConnections.pop())){h.remove();}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}this.inherited(arguments);},_addOptionItem:function(){},_removeOptionItem:function(){},_setDisplay:function(){},_getChildren:function(){return [];},_getSelectedOptionsAttr:function(){return this.getOptions({selected:true});},_pseudoLoadChildren:function(){},onSetStore:function(){}});return _e;}); \ No newline at end of file
diff --git a/lib/dijit/package.json b/lib/dijit/package.json
index 8213c20e3..311a2e1b2 100644
--- a/lib/dijit/package.json
+++ b/lib/dijit/package.json
@@ -1,12 +1,12 @@
{
"name": "dijit",
- "version": "1.16.4",
+ "version": "1.16.5",
"directories": {
"lib": "."
},
"main": "main",
"dependencies": {
- "dojo": "1.16.4"
+ "dojo": "1.16.5"
},
"description": "Dijit provides a complete collection of user interface controls based on Dojo, giving you the power to create web applications that are highly optimized for usability, performance, internationalization, accessibility, but above all deliver an incredible user experience.",
"license" : "BSD-3-Clause OR AFL-2.1",
diff --git a/lib/dojo-src/rebuild-dojo.sh b/lib/dojo-src/rebuild-dojo.sh
index ab7f3a0a2..5feb01327 100755
--- a/lib/dojo-src/rebuild-dojo.sh
+++ b/lib/dojo-src/rebuild-dojo.sh
@@ -7,7 +7,7 @@
# Dojo requires Java runtime to build. Further information on rebuilding Dojo
# is available here: http://dojotoolkit.org/reference-guide/build/index.html
-VERSION=1.16.4
+VERSION=1.16.5
# Download and extract dojo src code if it doesn't already exist
if [ ! -d "dojo" ]; then
diff --git a/lib/dojo/_base/kernel.js b/lib/dojo/_base/kernel.js
index 378e2ab92..1ae6bea75 100644
--- a/lib/dojo/_base/kernel.js
+++ b/lib/dojo/_base/kernel.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/_base/kernel",["../global","../has","./config","require","module"],function(_1,_2,_3,_4,_5){var i,p,_6={},_7={},_8={config:_3,global:_1,dijit:_6,dojox:_7};var _9={dojo:["dojo",_8],dijit:["dijit",_6],dojox:["dojox",_7]},_a=(_4.map&&_4.map[_5.id.match(/[^\/]+/)[0]]),_b;for(p in _a){if(_9[p]){_9[p][0]=_a[p];}else{_9[p]=[_a[p],{}];}}for(p in _9){_b=_9[p];_b[1]._scopeName=_b[0];if(!_3.noGlobals){_1[_b[0]]=_b[1];}}_8.scopeMap=_9;_8.baseUrl=_8.config.baseUrl=_4.baseUrl;_8.isAsync=!1||_4.async;_8.locale=_3.locale;var _c="$Rev:$".match(/[0-9a-f]{7,}/);_8.version={major:1,minor:16,patch:4,flag:"",revision:_c?_c[0]:NaN,toString:function(){var v=_8.version;return v.major+"."+v.minor+"."+v.patch+v.flag+" ("+v.revision+")";}};1||_2.add("extend-dojo",1);if(!_2("csp-restrictions")){(Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(_8);}if(0){_8.exit=function(_d){quit(_d);};}else{_8.exit=function(){};}if(!_2("host-webworker")){1||_2.add("dojo-guarantee-console",1);}if(1){_2.add("console-as-object",function(){return Function.prototype.bind&&console&&typeof console.log==="object";});typeof console!="undefined"||(console={});var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var tn;i=0;while((tn=cn[i++])){if(!console[tn]){(function(){var _e=tn+"";console[_e]=("log" in console)?function(){var a=Array.prototype.slice.call(arguments);a.unshift(_e+":");console["log"](a.join(" "));}:function(){};console[_e]._fake=true;})();}else{if(_2("console-as-object")){console[tn]=Function.prototype.bind.call(console[tn],console);}}}}_2.add("dojo-debug-messages",!!_3.isDebug);_8.deprecated=_8.experimental=function(){};if(_2("dojo-debug-messages")){_8.deprecated=function(_f,_10,_11){var _12="DEPRECATED: "+_f;if(_10){_12+=" "+_10;}if(_11){_12+=" -- will be removed in version: "+_11;}console.warn(_12);};_8.experimental=function(_13,_14){var _15="EXPERIMENTAL: "+_13+" -- APIs subject to change without notice.";if(_14){_15+=" "+_14;}console.warn(_15);};}1||_2.add("dojo-modulePaths",1);if(1){if(_3.modulePaths){_8.deprecated("dojo.modulePaths","use paths configuration");var _16={};for(p in _3.modulePaths){_16[p.replace(/\./g,"/")]=_3.modulePaths[p];}_4({paths:_16});}}1||_2.add("dojo-moduleUrl",1);if(1){_8.moduleUrl=function(_17,url){_8.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var _18=null;if(_17){_18=_4.toUrl(_17.replace(/\./g,"/")+(url?("/"+url):"")+"/*.*").replace(/\/\*\.\*/,"")+(url?"":"/");}return _18;};}_8._hasResource={};return _8;}); \ No newline at end of file
+define("dojo/_base/kernel",["../global","../has","./config","require","module"],function(_1,_2,_3,_4,_5){var i,p,_6={},_7={},_8={config:_3,global:_1,dijit:_6,dojox:_7};var _9={dojo:["dojo",_8],dijit:["dijit",_6],dojox:["dojox",_7]},_a=(_4.map&&_4.map[_5.id.match(/[^\/]+/)[0]]),_b;for(p in _a){if(_9[p]){_9[p][0]=_a[p];}else{_9[p]=[_a[p],{}];}}for(p in _9){_b=_9[p];_b[1]._scopeName=_b[0];if(!_3.noGlobals){_1[_b[0]]=_b[1];}}_8.scopeMap=_9;_8.baseUrl=_8.config.baseUrl=_4.baseUrl;_8.isAsync=!1||_4.async;_8.locale=_3.locale;var _c="$Rev:$".match(/[0-9a-f]{7,}/);_8.version={major:1,minor:16,patch:5,flag:"",revision:_c?_c[0]:NaN,toString:function(){var v=_8.version;return v.major+"."+v.minor+"."+v.patch+v.flag+" ("+v.revision+")";}};1||_2.add("extend-dojo",1);if(!_2("csp-restrictions")){(Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(_8);}if(0){_8.exit=function(_d){quit(_d);};}else{_8.exit=function(){};}if(!_2("host-webworker")){1||_2.add("dojo-guarantee-console",1);}if(1){_2.add("console-as-object",function(){return Function.prototype.bind&&console&&typeof console.log==="object";});typeof console!="undefined"||(console={});var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var tn;i=0;while((tn=cn[i++])){if(!console[tn]){(function(){var _e=tn+"";console[_e]=("log" in console)?function(){var a=Array.prototype.slice.call(arguments);a.unshift(_e+":");console["log"](a.join(" "));}:function(){};console[_e]._fake=true;})();}else{if(_2("console-as-object")){console[tn]=Function.prototype.bind.call(console[tn],console);}}}}_2.add("dojo-debug-messages",!!_3.isDebug);_8.deprecated=_8.experimental=function(){};if(_2("dojo-debug-messages")){_8.deprecated=function(_f,_10,_11){var _12="DEPRECATED: "+_f;if(_10){_12+=" "+_10;}if(_11){_12+=" -- will be removed in version: "+_11;}console.warn(_12);};_8.experimental=function(_13,_14){var _15="EXPERIMENTAL: "+_13+" -- APIs subject to change without notice.";if(_14){_15+=" "+_14;}console.warn(_15);};}1||_2.add("dojo-modulePaths",1);if(1){if(_3.modulePaths){_8.deprecated("dojo.modulePaths","use paths configuration");var _16={};for(p in _3.modulePaths){_16[p.replace(/\./g,"/")]=_3.modulePaths[p];}_4({paths:_16});}}1||_2.add("dojo-moduleUrl",1);if(1){_8.moduleUrl=function(_17,url){_8.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var _18=null;if(_17){_18=_4.toUrl(_17.replace(/\./g,"/")+(url?("/"+url):"")+"/*.*").replace(/\/\*\.\*/,"")+(url?"":"/");}return _18;};}_8._hasResource={};return _8;}); \ No newline at end of file
diff --git a/lib/dojo/_base/lang.js b/lib/dojo/_base/lang.js
index af3939a23..83666f193 100644
--- a/lib/dojo/_base/lang.js
+++ b/lib/dojo/_base/lang.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/_base/lang",["./kernel","../has","../sniff"],function(_1,_2){_2.add("bug-for-in-skips-shadowed",function(){for(var i in {toString:1}){return 0;}return 1;});var _3=_2("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],_4=_3.length,_5=function(_6,_7,_8){if(!_8){if(_6[0]&&_1.scopeMap[_6[0]]){_8=_1.scopeMap[_6.shift()][1];}else{_8=_1.global;}}try{for(var i=0;i<_6.length;i++){var p=_6[i];if(!(p in _8)){if(_7){_8[p]={};}else{return;}}_8=_8[p];}return _8;}catch(e){}},_9=Object.prototype.toString,_a=function(_b,_c,_d){return (_d||[]).concat(Array.prototype.slice.call(_b,_c||0));},_e=/\{([^\}]+)\}/g;var _f={_extraNames:_3,_mixin:function(_10,_11,_12){var _13,s,i,_14={};for(_13 in _11){s=_11[_13];if(!(_13 in _10)||(_10[_13]!==s&&(!(_13 in _14)||_14[_13]!==s))){_10[_13]=_12?_12(s):s;}}if(_2("bug-for-in-skips-shadowed")){if(_11){for(i=0;i<_4;++i){_13=_3[i];s=_11[_13];if(!(_13 in _10)||(_10[_13]!==s&&(!(_13 in _14)||_14[_13]!==s))){_10[_13]=_12?_12(s):s;}}}}return _10;},mixin:function(_15,_16){if(!_15){_15={};}for(var i=1,l=arguments.length;i<l;i++){_f._mixin(_15,arguments[i]);}return _15;},setObject:function(_17,_18,_19){var _1a=_17.split("."),p=_1a.pop(),obj=_5(_1a,true,_19);return obj&&p?(obj[p]=_18):undefined;},getObject:function(_1b,_1c,_1d){return !_1b?_1d:_5(_1b.split("."),_1c,_1d);},exists:function(_1e,obj){return _f.getObject(_1e,false,obj)!==undefined;},isString:function(it){return (typeof it=="string"||it instanceof String);},isArray:Array.isArray||function(it){return _9.call(it)=="[object Array]";},isFunction:function(it){return _9.call(it)==="[object Function]";},isObject:function(it){return it!==undefined&&(it===null||typeof it=="object"||_f.isArray(it)||_f.isFunction(it));},isArrayLike:function(it){return !!it&&!_f.isString(it)&&!_f.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(_f.isArray(it)||isFinite(it.length));},isAlien:function(it){return it&&!_f.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));},extend:function(_1f,_20){for(var i=1,l=arguments.length;i<l;i++){_f._mixin(_1f.prototype,arguments[i]);}return _1f;},_hitchArgs:function(_21,_22){var pre=_f._toArray(arguments,2);var _23=_f.isString(_22);return function(){var _24=_f._toArray(arguments);var f=_23?(_21||_1.global)[_22]:_22;return f&&f.apply(_21||this,pre.concat(_24));};},hitch:function(_25,_26){if(arguments.length>2){return _f._hitchArgs.apply(_1,arguments);}if(!_26){_26=_25;_25=null;}if(_f.isString(_26)){_25=_25||_1.global;if(!_25[_26]){throw (["lang.hitch: scope[\"",_26,"\"] is null (scope=\"",_25,"\")"].join(""));}return function(){return _25[_26].apply(_25,arguments||[]);};}return !_25?_26:function(){return _26.apply(_25,arguments||[]);};},delegate:(function(){function TMP(){};return function(obj,_27){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_27){_f._mixin(tmp,_27);}return tmp;};})(),_toArray:_2("ie")?(function(){function _28(obj,_29,_2a){var arr=_2a||[];for(var x=_29||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};return function(obj){return ((obj.item)?_28:_a).apply(this,arguments);};})():_a,partial:function(_2b){var arr=[null];return _f.hitch.apply(_1,arr.concat(_f._toArray(arguments)));},clone:function(src){if(!src||typeof src!="object"||_f.isFunction(src)){return src;}if(src.nodeType&&"cloneNode" in src){return src.cloneNode(true);}if(src instanceof Date){return new Date(src.getTime());}if(src instanceof RegExp){return new RegExp(src);}var r,i,l;if(_f.isArray(src)){r=[];for(i=0,l=src.length;i<l;++i){if(i in src){r[i]=_f.clone(src[i]);}}}else{r=src.constructor?new src.constructor():{};}return _f._mixin(r,src,_f.clone);},trim:String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");},replace:function(_2c,map,_2d){return _2c.replace(_2d||_e,_f.isFunction(map)?map:function(_2e,k){return _f.getObject(k,false,map);});}};1&&_f.mixin(_1,_f);return _f;}); \ No newline at end of file
+define("dojo/_base/lang",["./kernel","../has","../sniff"],function(_1,_2){_2.add("bug-for-in-skips-shadowed",function(){for(var i in {toString:1}){return 0;}return 1;});var _3=_2("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],_4=_3.length,_5=function(_6,_7,_8){if(!_8){if(_6[0]&&_1.scopeMap[_6[0]]){_8=_1.scopeMap[_6.shift()][1];}else{_8=_1.global;}}try{for(var i=0;i<_6.length;i++){var p=_6[i];if(p==="__proto__"||p==="constructor"){return;}if(!(p in _8)){if(_7){_8[p]={};}else{return;}}_8=_8[p];}return _8;}catch(e){}},_9=Object.prototype.toString,_a=function(_b,_c,_d){return (_d||[]).concat(Array.prototype.slice.call(_b,_c||0));},_e=/\{([^\}]+)\}/g;var _f={_extraNames:_3,_mixin:function(_10,_11,_12){var _13,s,i,_14={};for(_13 in _11){s=_11[_13];if(!(_13 in _10)||(_10[_13]!==s&&(!(_13 in _14)||_14[_13]!==s))){_10[_13]=_12?_12(s):s;}}if(_2("bug-for-in-skips-shadowed")){if(_11){for(i=0;i<_4;++i){_13=_3[i];s=_11[_13];if(!(_13 in _10)||(_10[_13]!==s&&(!(_13 in _14)||_14[_13]!==s))){_10[_13]=_12?_12(s):s;}}}}return _10;},mixin:function(_15,_16){if(!_15){_15={};}for(var i=1,l=arguments.length;i<l;i++){_f._mixin(_15,arguments[i]);}return _15;},setObject:function(_17,_18,_19){var _1a=_17.split("."),p=_1a.pop(),obj=_5(_1a,true,_19);return obj&&p?(obj[p]=_18):undefined;},getObject:function(_1b,_1c,_1d){return !_1b?_1d:_5(_1b.split("."),_1c,_1d);},exists:function(_1e,obj){return _f.getObject(_1e,false,obj)!==undefined;},isString:function(it){return (typeof it=="string"||it instanceof String);},isArray:Array.isArray||function(it){return _9.call(it)=="[object Array]";},isFunction:function(it){return _9.call(it)==="[object Function]";},isObject:function(it){return it!==undefined&&(it===null||typeof it=="object"||_f.isArray(it)||_f.isFunction(it));},isArrayLike:function(it){return !!it&&!_f.isString(it)&&!_f.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(_f.isArray(it)||isFinite(it.length));},isAlien:function(it){return it&&!_f.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));},extend:function(_1f,_20){for(var i=1,l=arguments.length;i<l;i++){_f._mixin(_1f.prototype,arguments[i]);}return _1f;},_hitchArgs:function(_21,_22){var pre=_f._toArray(arguments,2);var _23=_f.isString(_22);return function(){var _24=_f._toArray(arguments);var f=_23?(_21||_1.global)[_22]:_22;return f&&f.apply(_21||this,pre.concat(_24));};},hitch:function(_25,_26){if(arguments.length>2){return _f._hitchArgs.apply(_1,arguments);}if(!_26){_26=_25;_25=null;}if(_f.isString(_26)){_25=_25||_1.global;if(!_25[_26]){throw (["lang.hitch: scope[\"",_26,"\"] is null (scope=\"",_25,"\")"].join(""));}return function(){return _25[_26].apply(_25,arguments||[]);};}return !_25?_26:function(){return _26.apply(_25,arguments||[]);};},delegate:(function(){function TMP(){};return function(obj,_27){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_27){_f._mixin(tmp,_27);}return tmp;};})(),_toArray:_2("ie")?(function(){function _28(obj,_29,_2a){var arr=_2a||[];for(var x=_29||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};return function(obj){return ((obj.item)?_28:_a).apply(this,arguments);};})():_a,partial:function(_2b){var arr=[null];return _f.hitch.apply(_1,arr.concat(_f._toArray(arguments)));},clone:function(src){if(!src||typeof src!="object"||_f.isFunction(src)){return src;}if(src.nodeType&&"cloneNode" in src){return src.cloneNode(true);}if(src instanceof Date){return new Date(src.getTime());}if(src instanceof RegExp){return new RegExp(src);}var r,i,l;if(_f.isArray(src)){r=[];for(i=0,l=src.length;i<l;++i){if(i in src){r[i]=_f.clone(src[i]);}}}else{r=src.constructor?new src.constructor():{};}return _f._mixin(r,src,_f.clone);},trim:String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");},replace:function(_2c,map,_2d){return _2c.replace(_2d||_e,_f.isFunction(map)?map:function(_2e,k){return _f.getObject(k,false,map);});}};1&&_f.mixin(_1,_f);return _f;}); \ No newline at end of file
diff --git a/lib/dojo/dojo.js b/lib/dojo/dojo.js
index 14bfe1164..795fcc810 100644
--- a/lib/dojo/dojo.js
+++ b/lib/dojo/dojo.js
@@ -5,4 +5,4 @@
*/
//>>built
-(function(_1,_2){var _3=(function(){if(typeof _4!=="undefined"&&typeof _4!=="function"){return _4;}else{if(typeof window!=="undefined"){return window;}else{if(typeof self!=="undefined"){return self;}}}return this;})();var _5=function(){},_6=function(it){for(var p in it){return 0;}return 1;},_7={}.toString,_8=function(it){return _7.call(it)=="[object Function]";},_9=function(it){return _7.call(it)=="[object String]";},_a=function(it){return _7.call(it)=="[object Array]";},_b=function(_c,_d){if(_c){for(var i=0;i<_c.length;){_d(_c[i++]);}}},_e=function(_f,src){for(var p in src){_f[p]=src[p];}return _f;},_10=function(_11,_12){return _e(new Error(_11),{src:"dojoLoader",info:_12});},_13=1,uid=function(){return "_"+_13++;},req=function(_14,_15,_16){return _17(_14,_15,_16,0,req);},_4=_3,doc=_4.document,_18=doc&&doc.createElement("DiV"),has=req.has=function(_19){return _8(_1a[_19])?(_1a[_19]=_1a[_19](_4,doc,_18)):_1a[_19];},_1a=has.cache=_2.hasCache;if(_8(_1)){_1=_1(_3);}has.add=function(_1b,_1c,now,_1d){(_1a[_1b]===undefined||_1d)&&(_1a[_1b]=_1c);return now&&has(_1b);};0&&has.add("host-node",_1.has&&"host-node" in _1.has?_1.has["host-node"]:(typeof process=="object"&&process.versions&&process.versions.node&&process.versions.v8));if(0){require("./_base/configNode.js").config(_2);_2.loaderPatch.nodeRequire=require;}0&&has.add("host-rhino",_1.has&&"host-rhino" in _1.has?_1.has["host-rhino"]:(typeof load=="function"&&(typeof Packages=="function"||typeof Packages=="object")));if(0){for(var _1e=_1.baseUrl||".",arg,_1f=this.arguments,i=0;i<_1f.length;){arg=(_1f[i++]+"").split("=");if(arg[0]=="baseUrl"){_1e=arg[1];break;}}load(_1e+"/_base/configRhino.js");rhinoDojoConfig(_2,_1e,_1f);}has.add("host-webworker",((typeof WorkerGlobalScope!=="undefined")&&(self instanceof WorkerGlobalScope)));if(has("host-webworker")){_e(_2.hasCache,{"host-browser":0,"dom":0,"dojo-dom-ready-api":0,"dojo-sniff":0,"dojo-inject-api":1,"host-webworker":1,"dojo-guarantee-console":0});_2.loaderPatch={injectUrl:function(url,_20){try{importScripts(url);_20();}catch(e){console.error(e);}}};}for(var p in _1.has){has.add(p,_1.has[p],0,1);}var _21=1,_22=2,_23=3,_24=4,_25=5;if(0){_21="requested";_22="arrived";_23="not-a-module";_24="executing";_25="executed";}var _26=0,_27="sync",xd="xd",_28=[],_29=0,_2a=_5,_2b=_5,_2c;if(1){req.isXdUrl=_5;req.initSyncLoader=function(_2d,_2e,_2f){if(!_29){_29=_2d;_2a=_2e;_2b=_2f;}return {sync:_27,requested:_21,arrived:_22,nonmodule:_23,executing:_24,executed:_25,syncExecStack:_28,modules:_30,execQ:_31,getModule:_32,injectModule:_33,setArrived:_34,signal:_35,finishExec:_36,execModule:_37,dojoRequirePlugin:_29,getLegacyMode:function(){return _26;},guardCheckComplete:_38};};if(1||has("host-webworker")){var _39=location.protocol,_3a=location.host;req.isXdUrl=function(url){if(/^\./.test(url)){return false;}if(/^\/\//.test(url)){return true;}var _3b=url.match(/^([^\/\:]+\:)\/+([^\/]+)/);return _3b&&(_3b[1]!=_39||(_3a&&_3b[2]!=_3a));};1||has.add("dojo-xhr-factory",1);has.add("dojo-force-activex-xhr",1&&!doc.addEventListener&&window.location.protocol=="file:");has.add("native-xhr",typeof XMLHttpRequest!="undefined");if(has("native-xhr")&&!has("dojo-force-activex-xhr")){_2c=function(){return new XMLHttpRequest();};}else{for(var _3c=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],_3d,i=0;i<3;){try{_3d=_3c[i++];if(new ActiveXObject(_3d)){break;}}catch(e){}}_2c=function(){return new ActiveXObject(_3d);};}req.getXhr=_2c;has.add("dojo-gettext-api",1);req.getText=function(url,_3e,_3f){var xhr=_2c();xhr.open("GET",_40(url),false);xhr.send(null);if(xhr.status==200||(!location.host&&!xhr.status)){if(_3f){_3f(xhr.responseText,_3e);}}else{throw _10("xhrFailed",xhr.status);}return xhr.responseText;};}}else{req.async=1;}var _41=has("csp-restrictions")?function(){}:new Function("return eval(arguments[0]);");req.eval=function(_42,_43){return _41(_42+"\r\n//# sourceURL="+_43);};var _44={},_45="error",_35=req.signal=function(_46,_47){var _48=_44[_46];_b(_48&&_48.slice(0),function(_49){_49.apply(null,_a(_47)?_47:[_47]);});},on=req.on=function(_4a,_4b){var _4c=_44[_4a]||(_44[_4a]=[]);_4c.push(_4b);return {remove:function(){for(var i=0;i<_4c.length;i++){if(_4c[i]===_4b){_4c.splice(i,1);return;}}}};};var _4d=[],_4e={},_4f=[],_50={},map=req.map={},_51=[],_30={},_52="",_53={},_54="url:",_55={},_56={},_57=0;if(1){if(!has("foreign-loader")){var _58=function(_59,_5a){_5a=_5a!==false;var p,_5b,_5c,now,m;for(p in _55){_5b=_55[p];_5c=p.match(/^url\:(.+)/);if(_5c){_53[_54+_5d(_5c[1],_59)]=_5b;}else{if(p=="*now"){now=_5b;}else{if(p!="*noref"){m=_5e(p,_59,true);_53[m.mid]=_53[_54+m.url]=_5b;}}}}if(now){now(_5f(_59));}if(_5a){_55={};}};}var _60=function(s){return s.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(c){return "\\"+c;});},_61=function(map,_62){_62.splice(0,_62.length);for(var p in map){_62.push([p,map[p],new RegExp("^"+_60(p)+"(/|$)"),p.length]);}_62.sort(function(lhs,rhs){return rhs[3]-lhs[3];});return _62;},_63=function(_64,_65){_b(_64,function(_66){_65.push([_9(_66[0])?new RegExp("^"+_60(_66[0])+"$"):_66[0],_66[1]]);});},_67=function(_68){var _69=_68.name;if(!_69){_69=_68;_68={name:_69};}_68=_e({main:"main"},_68);_68.location=_68.location?_68.location:_69;if(_68.packageMap){map[_69]=_68.packageMap;}if(!_68.main.indexOf("./")){_68.main=_68.main.substring(2);}_50[_69]=_68;},_6a=[],_6b=function(_6c,_6d,_6e){for(var p in _6c){if(p=="waitSeconds"){req.waitms=(_6c[p]||0)*1000;}if(p=="cacheBust"){_52=_6c[p]?(_9(_6c[p])?_6c[p]:(new Date()).getTime()+""):"";}if(p=="baseUrl"||p=="combo"){req[p]=_6c[p];}if(1&&p=="async"){var _6f=_6c[p];req.legacyMode=_26=(_9(_6f)&&/sync|legacyAsync/.test(_6f)?_6f:(!_6f?_27:false));req.async=!_26;}if(_6c[p]!==_1a){req.rawConfig[p]=_6c[p];p!="has"&&has.add("config-"+p,_6c[p],0,_6d);}}if(!req.baseUrl){req.baseUrl="./";}if(!/\/$/.test(req.baseUrl)){req.baseUrl+="/";}for(p in _6c.has){has.add(p,_6c.has[p],0,_6d);}_b(_6c.packages,_67);for(var _70 in _6c.packagePaths){_b(_6c.packagePaths[_70],function(_71){var _72=_70+"/"+_71;if(_9(_71)){_71={name:_71};}_71.location=_72;_67(_71);});}_61(_e(map,_6c.map),_51);_b(_51,function(_73){_73[1]=_61(_73[1],[]);if(_73[0]=="*"){_51.star=_73;}});_61(_e(_4e,_6c.paths),_4f);_63(_6c.aliases,_4d);if(!has("foreign-loader")){if(_6d){_6a.push({config:_6c.config});}else{for(p in _6c.config){var _74=_32(p,_6e);_74.config=_e(_74.config||{},_6c.config[p]);}}if(_6c.cache){_58();_55=_6c.cache;_58(0,!!_6c.cache["*noref"]);}}_35("config",[_6c,req.rawConfig]);};if(has("dojo-cdn")||1){var _75=doc.getElementsByTagName("script"),i=0,_76,_77,src,_78;while(i<_75.length){_76=_75[i++];if((src=_76.getAttribute("src"))&&(_78=src.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){_77=_78[3]||"";_2.baseUrl=_2.baseUrl||_77;_57=_76;}if((src=(_76.getAttribute("data-dojo-config")||_76.getAttribute("djConfig")))){_56=req.eval("({ "+src+" })","data-dojo-config");_57=_76;}if(0){if((src=_76.getAttribute("data-main"))){_56.deps=_56.deps||[src];}}}}if(0){try{if(window.parent!=window&&window.parent.require){var doh=window.parent.require("doh");doh&&_e(_56,doh.testConfig);}}catch(e){}}req.rawConfig={};_6b(_2,1);if(has("dojo-cdn")){_50.dojo.location=_77;if(_77){_77+="/";}_50.dijit.location=_77+"../dijit/";_50.dojox.location=_77+"../dojox/";}_6b(_1,1);_6b(_56,1);}else{_4e=_2.paths;_4f=_2.pathsMapProg;_50=_2.packs;_4d=_2.aliases;_51=_2.mapProgs;_30=_2.modules;_53=_2.cache;_52=_2.cacheBust;req.rawConfig=_2;}if(!has("foreign-loader")){if(0){req.combo=req.combo||{add:_5};var _79=0,_7a=[],_7b=null;}var _7c=function(_7d){_38(function(){_b(_7d.deps,_33);if(0&&_79&&!_7b){_7b=setTimeout(function(){_79=0;_7b=null;req.combo.done(function(_7e,url){var _7f=function(){_80(0,_7e);_81();};_7a.push(_7e);_82=_7e;req.injectUrl(url,_7f,_7e);_82=0;},req);},0);}});},_17=function(a1,a2,a3,_83,_84){var _85,_86;if(_9(a1)){_85=_32(a1,_83,true);if(_85&&_85.executed){return _85.result;}throw _10("undefinedModule",a1);}if(!_a(a1)){_6b(a1,0,_83);a1=a2;a2=a3;}if(_a(a1)){if(!a1.length){a2&&a2();}else{_86="require*"+uid();for(var mid,_87=[],i=0;i<a1.length;){mid=a1[i++];_87.push(_32(mid,_83));}_85=_e(_88("",_86,0,""),{injected:_22,deps:_87,def:a2||_5,require:_83?_83.require:req,gc:1});_30[_85.mid]=_85;_7c(_85);var _89=_8a&&_26!=_27;_38(function(){_37(_85,_89);});if(!_85.executed){_31.push(_85);}_81();}}return _84;},_5f=function(_8b){if(!_8b){return req;}var _8c=_8b.require;if(!_8c){_8c=function(a1,a2,a3){return _17(a1,a2,a3,_8b,_8c);};_8b.require=_e(_8c,req);_8c.module=_8b;_8c.toUrl=function(_8d){return _5d(_8d,_8b);};_8c.toAbsMid=function(mid){return _bc(mid,_8b);};if(0){_8c.undef=function(mid){req.undef(mid,_8b);};}if(1){_8c.syncLoadNls=function(mid){var _8e=_5e(mid,_8b),_8f=_30[_8e.mid];if(!_8f||!_8f.executed){_90=_53[_8e.mid]||_53[_54+_8e.url];if(_90){_91(_90);_8f=_30[_8e.mid];}}return _8f&&_8f.executed&&_8f.result;};}}return _8c;},_31=[],_92=[],_93={},_94=function(_95){_95.injected=_21;_93[_95.mid]=1;if(_95.url){_93[_95.url]=_95.pack||1;}_96();},_34=function(_97){_97.injected=_22;delete _93[_97.mid];if(_97.url){delete _93[_97.url];}if(_6(_93)){_98();1&&_26==xd&&(_26=_27);}},_99=req.idle=function(){return !_92.length&&_6(_93)&&!_31.length&&!_8a;};}var _9a=function(_9b,map){if(map){for(var i=0;i<map.length;i++){if(map[i][2].test(_9b)){return map[i];}}}return 0;},_9c=function(_9d){var _9e=[],_9f,_a0;_9d=_9d.replace(/\\/g,"/").split("/");while(_9d.length){_9f=_9d.shift();if(_9f==".."&&_9e.length&&_a0!=".."){_9e.pop();_a0=_9e[_9e.length-1];}else{if(_9f!="."){_9e.push(_a0=_9f);}}}return _9e.join("/");},_88=function(pid,mid,_a1,url){if(1){var xd=req.isXdUrl(url);return {pid:pid,mid:mid,pack:_a1,url:url,executed:0,def:0,isXd:xd,isAmd:!!(xd||(_50[pid]&&_50[pid].isAmd))};}else{return {pid:pid,mid:mid,pack:_a1,url:url,executed:0,def:0};}},_a2=function(mid,_a3,_a4,_a5,_a6,_a7,_a8,_a9,_aa,_ab){var pid,_ac,_ad,_ae,url,_af,_b0,_b1;_b1=mid;_b0=/^\./.test(mid);if(/(^\/)|(\:)|(\.js$)/.test(mid)||(_b0&&!_a3)){return _88(0,mid,0,mid);}else{mid=_9c(_b0?(_a3.mid+"/../"+mid):mid);if(/^\./.test(mid)){throw _10("irrationalPath",mid);}if(!_ab&&!_b0&&_a7.star){_ae=_9a(mid,_a7.star[1]);}if(!_ae&&_a3){_ae=_9a(_a3.mid,_a7);_ae=_ae&&_9a(mid,_ae[1]);}if(_ae){mid=_ae[1]+mid.substring(_ae[3]);}_78=mid.match(/^([^\/]+)(\/(.+))?$/);pid=_78?_78[1]:"";if((_ac=_a4[pid])){mid=pid+"/"+(_ad=(_78[3]||_ac.main));}else{pid="";}var _b2=0,_b3=0;_b(_a9,function(_b4){var _b5=mid.match(_b4[0]);if(_b5&&_b5.length>_b2){_b3=_8(_b4[1])?mid.replace(_b4[0],_b4[1]):_b4[1];}});if(_b3){return _a2(_b3,0,_a4,_a5,_a6,_a7,_a8,_a9,_aa);}_af=_a5[mid];if(_af){return _aa?_88(_af.pid,_af.mid,_af.pack,_af.url):_a5[mid];}}_ae=_9a(mid,_a8);if(_ae){url=_ae[1]+mid.substring(_ae[3]);}else{if(pid){url=(_ac.location.slice(-1)==="/"?_ac.location.slice(0,-1):_ac.location)+"/"+_ad;}else{if(has("config-tlmSiblingOfDojo")){url="../"+mid;}else{url=mid;}}}if(!(/(^\/)|(\:)/.test(url))){url=_a6+url;}url+=".js";return _88(pid,mid,_ac,_9c(url));},_5e=function(mid,_b6,_b7){return _a2(mid,_b6,_50,_30,req.baseUrl,_51,_4f,_4d,undefined,_b7);};if(!has("foreign-loader")){var _b8=function(_b9,_ba,_bb){return _b9.normalize?_b9.normalize(_ba,function(mid){return _bc(mid,_bb);}):_bc(_ba,_bb);},_bd=0,_32=function(mid,_be,_bf){var _c0,_c1,_c2,_c3;_c0=mid.match(/^(.+?)\!(.*)$/);if(_c0){_c1=_32(_c0[1],_be,_bf);if(1&&_26==_27&&!_c1.executed){_33(_c1);if(_c1.injected===_22&&!_c1.executed){_38(function(){_37(_c1);});}if(_c1.executed){_c4(_c1);}else{_31.unshift(_c1);}}if(_c1.executed===_25&&!_c1.load){_c4(_c1);}if(_c1.load){_c2=_b8(_c1,_c0[2],_be);mid=(_c1.mid+"!"+(_c1.dynamic?++_bd+"!":"")+_c2);}else{_c2=_c0[2];mid=_c1.mid+"!"+(++_bd)+"!waitingForPlugin";}_c3={plugin:_c1,mid:mid,req:_5f(_be),prid:_c2};}else{_c3=_5e(mid,_be);}return _30[_c3.mid]||(!_bf&&(_30[_c3.mid]=_c3));};}var _bc=req.toAbsMid=function(mid,_c5){return _5e(mid,_c5).mid;},_5d=req.toUrl=function(_c6,_c7){var _c8=_5e(_c6+"/x",_c7),url=_c8.url;return _40(_c8.pid===0?_c6:url.substring(0,url.length-5));};if(!has("foreign-loader")){var _c9={injected:_22,executed:_25,def:_23,result:_23},_ca=function(mid){return _30[mid]=_e({mid:mid},_c9);},_cb=_ca("require"),_cc=_ca("exports"),_cd=_ca("module"),_ce=function(_cf,_d0){req.trace("loader-run-factory",[_cf.mid]);var _d1=_cf.def,_d2;1&&_28.unshift(_cf);if(has("config-dojo-loader-catches")){try{_d2=_8(_d1)?_d1.apply(null,_d0):_d1;}catch(e){_35(_45,_cf.result=_10("factoryThrew",[_cf,e]));}}else{_d2=_8(_d1)?_d1.apply(null,_d0):_d1;}_cf.result=_d2===undefined&&_cf.cjs?_cf.cjs.exports:_d2;1&&_28.shift(_cf);},_d3={},_d4=0,_c4=function(_d5){var _d6=_d5.result;_d5.dynamic=_d6.dynamic;_d5.normalize=_d6.normalize;_d5.load=_d6.load;return _d5;},_d7=function(_d8){var map={};_b(_d8.loadQ,function(_d9){var _da=_b8(_d8,_d9.prid,_d9.req.module),mid=_d8.dynamic?_d9.mid.replace(/waitingForPlugin$/,_da):(_d8.mid+"!"+_da),_db=_e(_e({},_d9),{mid:mid,prid:_da,injected:0});if(!_30[mid]||!_30[mid].injected){_ed(_30[mid]=_db);}map[_d9.mid]=_30[mid];_34(_d9);delete _30[_d9.mid];});_d8.loadQ=0;var _dc=function(_dd){for(var _de,_df=_dd.deps||[],i=0;i<_df.length;i++){_de=map[_df[i].mid];if(_de){_df[i]=_de;}}};for(var p in _30){_dc(_30[p]);}_b(_31,_dc);},_36=function(_e0){req.trace("loader-finish-exec",[_e0.mid]);_e0.executed=_25;_e0.defOrder=_d4++;1&&_b(_e0.provides,function(cb){cb();});if(_e0.loadQ){_c4(_e0);_d7(_e0);}for(i=0;i<_31.length;){if(_31[i]===_e0){_31.splice(i,1);}else{i++;}}if(/^require\*/.test(_e0.mid)){delete _30[_e0.mid];}},_e1=[],_37=function(_e2,_e3){if(_e2.executed===_24){req.trace("loader-circular-dependency",[_e1.concat(_e2.mid).join("->")]);return (!_e2.def||_e3)?_d3:(_e2.cjs&&_e2.cjs.exports);}if(!_e2.executed){if(!_e2.def){return _d3;}var mid=_e2.mid,_e4=_e2.deps||[],arg,_e5,_e6=[],i=0;if(0){_e1.push(mid);req.trace("loader-exec-module",["exec",_e1.length,mid]);}_e2.executed=_24;while((arg=_e4[i++])){_e5=((arg===_cb)?_5f(_e2):((arg===_cc)?_e2.cjs.exports:((arg===_cd)?_e2.cjs:_37(arg,_e3))));if(_e5===_d3){_e2.executed=0;req.trace("loader-exec-module",["abort",mid]);0&&_e1.pop();return _d3;}_e6.push(_e5);}_ce(_e2,_e6);_36(_e2);0&&_e1.pop();}return _e2.result;},_8a=0,_38=function(_e7){try{_8a++;_e7();}catch(e){throw e;}finally{_8a--;}if(_99()){_35("idle",[]);}},_81=function(){if(_8a){return;}_38(function(){_2a();for(var _e8,_e9,i=0;i<_31.length;){_e8=_d4;_e9=_31[i];_37(_e9);if(_e8!=_d4){_2a();i=0;}else{i++;}}});};}var _40=typeof _1.fixupUrl=="function"?_1.fixupUrl:function(url){url+="";return url+(_52?((/\?/.test(url)?"&":"?")+_52):"");};if(0){req.undef=function(_ea,_eb){var _ec=_32(_ea,_eb);_34(_ec);_e(_ec,{def:0,executed:0,injected:0,node:0,load:0});};}if(1){if(has("dojo-loader-eval-hint-url")===undefined){has.add("dojo-loader-eval-hint-url",1);}var _ed=function(_ee){var _ef=_ee.plugin;if(_ef.executed===_25&&!_ef.load){_c4(_ef);}var _f0=function(def){_ee.result=def;_34(_ee);_36(_ee);_81();};if(_ef.load){_ef.load(_ee.prid,_ee.req,_f0);}else{if(_ef.loadQ){_ef.loadQ.push(_ee);}else{_ef.loadQ=[_ee];_31.unshift(_ef);_33(_ef);}}},_90=0,_82=0,_f1=0,_91=function(_f2,_f3){if(has("config-stripStrict")){_f2=_f2.replace(/(["'])use strict\1/g,"");}_f1=1;if(has("config-dojo-loader-catches")){try{if(_f2===_90){_90.call(null);}else{req.eval(_f2,has("dojo-loader-eval-hint-url")?_f3.url:_f3.mid);}}catch(e){_35(_45,_10("evalModuleThrew",_f3));}}else{if(_f2===_90){_90.call(null);}else{req.eval(_f2,has("dojo-loader-eval-hint-url")?_f3.url:_f3.mid);}}_f1=0;},_33=function(_f4){var mid=_f4.mid,url=_f4.url;if(_f4.executed||_f4.injected||_93[mid]||(_f4.url&&((_f4.pack&&_93[_f4.url]===_f4.pack)||_93[_f4.url]==1))){return;}_94(_f4);if(0){var _f5=0;if(_f4.plugin&&_f4.plugin.isCombo){req.combo.add(_f4.plugin.mid,_f4.prid,0,req);_f5=1;}else{if(!_f4.plugin){_f5=req.combo.add(0,_f4.mid,_f4.url,req);}}if(_f5){_79=1;return;}}if(_f4.plugin){_ed(_f4);return;}var _f6=function(){_80(_f4);if(_f4.injected!==_22){if(has("dojo-enforceDefine")){_35(_45,_10("noDefine",_f4));return;}_34(_f4);_e(_f4,_c9);req.trace("loader-define-nonmodule",[_f4.url]);}if(1&&_26){!_28.length&&_81();}else{_81();}};_90=_53[mid]||_53[_54+_f4.url];if(_90){req.trace("loader-inject",["cache",_f4.mid,url]);_91(_90,_f4);_f6();return;}if(1&&_26){if(_f4.isXd){_26==_27&&(_26=xd);}else{if(_f4.isAmd&&_26!=_27){}else{var _f7=function(_f8){if(_26==_27){_28.unshift(_f4);_91(_f8,_f4);_28.shift();_80(_f4);if(!_f4.cjs){_34(_f4);_36(_f4);}if(_f4.finish){var _f9=mid+"*finish",_fa=_f4.finish;delete _f4.finish;def(_f9,["dojo",("dojo/require!"+_fa.join(",")).replace(/\./g,"/")],function(_fb){_b(_fa,function(mid){_fb.require(mid);});});_31.unshift(_32(_f9));}_f6();}else{_f8=_2b(_f4,_f8);if(_f8){_91(_f8,_f4);_f6();}else{_82=_f4;req.injectUrl(_40(url),_f6,_f4);_82=0;}}};req.trace("loader-inject",["xhr",_f4.mid,url,_26!=_27]);if(has("config-dojo-loader-catches")){try{req.getText(url,_26!=_27,_f7);}catch(e){_35(_45,_10("xhrInjectFailed",[_f4,e]));}}else{req.getText(url,_26!=_27,_f7);}return;}}}req.trace("loader-inject",["script",_f4.mid,url]);_82=_f4;req.injectUrl(_40(url),_f6,_f4);_82=0;},_fc=function(_fd,_fe,def){req.trace("loader-define-module",[_fd.mid,_fe]);if(0&&_fd.plugin&&_fd.plugin.isCombo){_fd.result=_8(def)?def():def;_34(_fd);_36(_fd);return _fd;}var mid=_fd.mid;if(_fd.injected===_22){_35(_45,_10("multipleDefine",_fd));return _fd;}_e(_fd,{deps:_fe,def:def,cjs:{id:_fd.mid,uri:_fd.url,exports:(_fd.result={}),setExports:function(_ff){_fd.cjs.exports=_ff;},config:function(){return _fd.config;}}});for(var i=0;_fe[i];i++){_fe[i]=_32(_fe[i],_fd);}if(1&&_26&&!_93[mid]){_7c(_fd);_31.push(_fd);_81();}_34(_fd);if(!_8(def)&&!_fe.length){_fd.result=def;_36(_fd);}return _fd;},_80=function(_100,mids){var _101=[],_102,args;while(_92.length){args=_92.shift();mids&&(args[0]=mids.shift());_102=(args[0]&&_32(args[0]))||_100;_101.push([_102,args[1],args[2]]);}_58(_100);_b(_101,function(args){_7c(_fc.apply(null,args));});};}var _103=0,_98=_5,_96=_5;if(1){_98=function(){_103&&clearTimeout(_103);_103=0;};_96=function(){_98();if(req.waitms){_103=_4.setTimeout(function(){_98();_35(_45,_10("timeout",_93));},req.waitms);}};}if(1){has.add("ie-event-behavior",doc.attachEvent&&typeof Windows==="undefined"&&(typeof opera==="undefined"||opera.toString()!="[object Opera]"));}if(1&&(1||1)){var _104=function(node,_105,_106,_107){if(!has("ie-event-behavior")){node.addEventListener(_105,_107,false);return function(){node.removeEventListener(_105,_107,false);};}else{node.attachEvent(_106,_107);return function(){node.detachEvent(_106,_107);};}},_108=_104(window,"load","onload",function(){req.pageLoaded=1;try{doc.readyState!="complete"&&(doc.readyState="complete");}catch(e){}_108();});if(1){var _75=doc.getElementsByTagName("script"),i=0,_76;while(!_57){if(!/^dojo/.test((_76=_75[i++])&&_76.type)){_57=_76;}}req.injectUrl=function(url,_109,_10a){var node=_10a.node=doc.createElement("script"),_10b=function(e){e=e||window.event;var node=e.target||e.srcElement;if(e.type==="load"||/complete|loaded/.test(node.readyState)){_10c();_10d();_109&&_109();}},_10c=_104(node,"load","onreadystatechange",_10b),_10d=_104(node,"error","onerror",function(e){_10c();_10d();_35(_45,_10("scriptError: "+url,[url,e]));});node.type="text/javascript";node.charset="utf-8";node.src=url;_57.parentNode.insertBefore(node,_57);return node;};}}if(1){req.log=function(){try{for(var i=0;i<arguments.length;i++){}}catch(e){}};}else{req.log=_5;}if(0){var _10e=req.trace=function(_10f,args){if(_10e.on&&_10e.group[_10f]){_35("trace",[_10f,args]);for(var arg,dump=[],text="trace:"+_10f+(args.length?(":"+args[0]):""),i=1;i<args.length;){arg=args[i++];if(_9(arg)){text+=", "+arg;}else{dump.push(arg);}}req.log(text);dump.length&&dump.push(".");req.log.apply(req,dump);}};_e(_10e,{on:1,group:{},set:function(_110,_111){if(_9(_110)){_10e.group[_110]=_111;}else{_e(_10e.group,_110);}}});_10e.set(_e(_e(_e({},_2.trace),_1.trace),_56.trace));on("config",function(_112){_112.trace&&_10e.set(_112.trace);});}else{req.trace=_5;}if(!has("foreign-loader")){var def=function(mid,_113,_114){var _115=arguments.length,_116=["require","exports","module"],args=[0,mid,_113];if(_115==1){args=[0,(_8(mid)?_116:[]),mid];}else{if(_115==2&&_9(mid)){args=[mid,(_8(_113)?_116:[]),_113];}else{if(_115==3){args=[mid,_113,_114];}}}if(0&&args[1]===_116){args[2].toString().replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,"").replace(/require\(["']([\w\!\-_\.\/]+)["']\)/g,function(_117,dep){args[1].push(dep);});}req.trace("loader-define",args.slice(0,2));var _118=args[0]&&_32(args[0]),_119;if(_118&&!_93[_118.mid]){_7c(_fc(_118,args[1],args[2]));}else{if(!has("ie-event-behavior")||!1||_f1){_92.push(args);}else{_118=_118||_82;if(!_118){for(mid in _93){_119=_30[mid];if(_119&&_119.node&&_119.node.readyState==="interactive"){_118=_119;break;}}if(0&&!_118){for(var i=0;i<_7a.length;i++){_118=_7a[i];if(_118.node&&_118.node.readyState==="interactive"){break;}_118=0;}}}if(0&&_a(_118)){_7c(_fc(_32(_118.shift()),args[1],args[2]));if(!_118.length){_7a.splice(i,1);}}else{if(_118){_58(_118);_7c(_fc(_118,args[1],args[2]));}else{_35(_45,_10("ieDefineFailed",args[0]));}}_81();}}};def.amd={vendor:"dojotoolkit.org"};if(0){req.def=def;}}else{var def=_5;}_e(_e(req,_2.loaderPatch),_1.loaderPatch);on(_45,function(arg){try{console.error(arg);if(arg instanceof Error){for(var p in arg){}}}catch(e){}});_e(req,{uid:uid,cache:_53,packs:_50});if(0){_e(req,{paths:_4e,aliases:_4d,modules:_30,legacyMode:_26,execQ:_31,defQ:_92,waiting:_93,packs:_50,mapProgs:_51,pathsMapProg:_4f,listenerQueues:_44,computeMapProg:_61,computeAliases:_63,runMapProg:_9a,compactPath:_9c,getModuleInfo:_a2});}if(_4.define){if(1){_35(_45,_10("defineAlreadyDefined",0));}return;}else{_4.define=def;_4.require=req;if(0){require=req;}}if(0&&req.combo&&req.combo.plugins){var _11a=req.combo.plugins,_11b;for(_11b in _11a){_e(_e(_32(_11b),_11a[_11b]),{isCombo:1,executed:"executed",load:1});}}if(1&&!has("foreign-loader")){_b(_6a,function(c){_6b(c);});var _11c=_56.deps||_1.deps||_2.deps,_11d=_56.callback||_1.callback||_2.callback;req.boot=(_11c||_11d)?[_11c||[],_11d]:0;}if(!1){!req.async&&req(["dojo"]);req.boot&&req.apply(null,req.boot);}})(function(_11e){return _11e.dojoConfig||_11e.djConfig||_11e.require||{};},{async:0,hasCache:{"config-selectorEngine":"acme","config-tlmSiblingOfDojo":1,"dojo-built":1,"dojo-loader":1,dom:1,"host-browser":1},packages:[{location:"../dijit",name:"dijit"},{location:".",name:"dojo"}]});require({cache:{"dojo/main":function(){define(["./_base/kernel","./has","require","./sniff","./_base/lang","./_base/array","./_base/config","./ready","./_base/declare","./_base/connect","./_base/Deferred","./_base/json","./_base/Color","./has!dojo-firebug?./_firebug/firebug","./_base/browser","./_base/loader"],function(_11f,has,_120,_121,lang,_122,_123,_124){if(_123.isDebug){_120(["./_firebug/firebug"]);}1||has.add("dojo-config-require",1);if(1){var deps=_123.require;if(deps){deps=_122.map(lang.isArray(deps)?deps:[deps],function(item){return item.replace(/\./g,"/");});if(_11f.isAsync){_120(deps);}else{_124(1,function(){_120(deps);});}}}return _11f;});},"dojo/_base/kernel":function(){define(["../global","../has","./config","require","module"],function(_125,has,_126,_127,_128){var i,p,_129={},_12a={},dojo={config:_126,global:_125,dijit:_129,dojox:_12a};var _12b={dojo:["dojo",dojo],dijit:["dijit",_129],dojox:["dojox",_12a]},_12c=(_127.map&&_127.map[_128.id.match(/[^\/]+/)[0]]),item;for(p in _12c){if(_12b[p]){_12b[p][0]=_12c[p];}else{_12b[p]=[_12c[p],{}];}}for(p in _12b){item=_12b[p];item[1]._scopeName=item[0];if(!_126.noGlobals){_125[item[0]]=item[1];}}dojo.scopeMap=_12b;dojo.baseUrl=dojo.config.baseUrl=_127.baseUrl;dojo.isAsync=!1||_127.async;dojo.locale=_126.locale;var rev="$Rev:$".match(/[0-9a-f]{7,}/);dojo.version={major:1,minor:16,patch:4,flag:"",revision:rev?rev[0]:NaN,toString:function(){var v=dojo.version;return v.major+"."+v.minor+"."+v.patch+v.flag+" ("+v.revision+")";}};1||has.add("extend-dojo",1);if(!has("csp-restrictions")){(Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(dojo);}if(0){dojo.exit=function(_12d){quit(_12d);};}else{dojo.exit=function(){};}if(!has("host-webworker")){1||has.add("dojo-guarantee-console",1);}if(1){has.add("console-as-object",function(){return Function.prototype.bind&&console&&typeof console.log==="object";});typeof console!="undefined"||(console={});var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var tn;i=0;while((tn=cn[i++])){if(!console[tn]){(function(){var tcn=tn+"";console[tcn]=("log" in console)?function(){var a=Array.prototype.slice.call(arguments);a.unshift(tcn+":");console["log"](a.join(" "));}:function(){};console[tcn]._fake=true;})();}else{if(has("console-as-object")){console[tn]=Function.prototype.bind.call(console[tn],console);}}}}has.add("dojo-debug-messages",!!_126.isDebug);dojo.deprecated=dojo.experimental=function(){};if(has("dojo-debug-messages")){dojo.deprecated=function(_12e,_12f,_130){var _131="DEPRECATED: "+_12e;if(_12f){_131+=" "+_12f;}if(_130){_131+=" -- will be removed in version: "+_130;}console.warn(_131);};dojo.experimental=function(_132,_133){var _134="EXPERIMENTAL: "+_132+" -- APIs subject to change without notice.";if(_133){_134+=" "+_133;}console.warn(_134);};}1||has.add("dojo-modulePaths",1);if(1){if(_126.modulePaths){dojo.deprecated("dojo.modulePaths","use paths configuration");var _135={};for(p in _126.modulePaths){_135[p.replace(/\./g,"/")]=_126.modulePaths[p];}_127({paths:_135});}}1||has.add("dojo-moduleUrl",1);if(1){dojo.moduleUrl=function(_136,url){dojo.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var _137=null;if(_136){_137=_127.toUrl(_136.replace(/\./g,"/")+(url?("/"+url):"")+"/*.*").replace(/\/\*\.\*/,"")+(url?"":"/");}return _137;};}dojo._hasResource={};return dojo;});},"dojo/global":function(){define(function(){if(typeof global!=="undefined"&&typeof global!=="function"){return global;}else{if(typeof window!=="undefined"){return window;}else{if(typeof self!=="undefined"){return self;}}}return this;});},"dojo/has":function(){define(["./global","require","module"],function(_138,_139,_13a){var has=_139.has||function(){};if(!1){var _13b=typeof window!="undefined"&&typeof location!="undefined"&&typeof document!="undefined"&&window.location==location&&window.document==document,doc=_13b&&document,_13c=doc&&doc.createElement("DiV"),_13d=(_13a.config&&_13a.config())||{};has=function(name){return typeof _13d[name]=="function"?(_13d[name]=_13d[name](_138,doc,_13c)):_13d[name];};has.cache=_13d;has.add=function(name,test,now,_13e){(typeof _13d[name]=="undefined"||_13e)&&(_13d[name]=test);return now&&has(name);};1||has.add("host-browser",_13b);0&&has.add("host-node",(typeof process=="object"&&process.versions&&process.versions.node&&process.versions.v8));0&&has.add("host-rhino",(typeof load=="function"&&(typeof Packages=="function"||typeof Packages=="object")));1||has.add("dom",_13b);1||has.add("dojo-dom-ready-api",1);1||has.add("dojo-sniff",1);}if(1){has.add("dom-addeventlistener",!!document.addEventListener);has.add("touch","ontouchstart" in document||("onpointerdown" in document&&navigator.maxTouchPoints>0)||window.navigator.msMaxTouchPoints);has.add("touch-events","ontouchstart" in document);has.add("pointer-events","pointerEnabled" in window.navigator?window.navigator.pointerEnabled:"PointerEvent" in window);has.add("MSPointer",window.navigator.msPointerEnabled);has.add("touch-action",has("touch")&&has("pointer-events"));has.add("device-width",screen.availWidth||innerWidth);var form=document.createElement("form");has.add("dom-attributes-explicit",form.attributes.length==0);has.add("dom-attributes-specified-flag",form.attributes.length>0&&form.attributes.length<40);}has.clearElement=function(_13f){_13f.innerHTML="";return _13f;};has.normalize=function(id,_140){var _141=id.match(/[\?:]|[^:\?]*/g),i=0,get=function(skip){var term=_141[i++];if(term==":"){return 0;}else{if(_141[i++]=="?"){if(!skip&&has(term)){return get();}else{get(true);return get(skip);}}return term||0;}};id=get();return id&&_140(id);};has.load=function(id,_142,_143){if(id){_142([id],_143);}else{_143();}};return has;});},"dojo/_base/config":function(){define(["../global","../has","require"],function(_144,has,_145){var _146={};if(1){var src=_145.rawConfig,p;for(p in src){_146[p]=src[p];}}else{var _147=function(_148,_149,_14a){for(p in _148){p!="has"&&has.add(_149+p,_148[p],0,_14a);}};_146=1?_145.rawConfig:_144.dojoConfig||_144.djConfig||{};_147(_146,"config",1);_147(_146.has,"",1);}if(!_146.locale&&typeof navigator!="undefined"){var _14b=(navigator.languages&&navigator.languages.length)?navigator.languages[0]:(navigator.language||navigator.userLanguage);if(_14b){_146.locale=_14b.toLowerCase();}}return _146;});},"dojo/sniff":function(){define(["./has"],function(has){if(1){var n=navigator,dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);has.add("air",dua.indexOf("AdobeAIR")>=0);has.add("wp",parseFloat(dua.split("Windows Phone")[1])||undefined);has.add("msapp",parseFloat(dua.split("MSAppHost/")[1])||undefined);has.add("khtml",dav.indexOf("Konqueror")>=0?tv:undefined);has.add("edge",parseFloat(dua.split("Edge/")[1])||undefined);has.add("opr",parseFloat(dua.split("OPR/")[1])||undefined);has.add("webkit",!has("wp")&&!has("edge")&&parseFloat(dua.split("WebKit/")[1])||undefined);has.add("chrome",!has("edge")&&!has("opr")&&parseFloat(dua.split("Chrome/")[1])||undefined);has.add("android",!has("wp")&&parseFloat(dua.split("Android ")[1])||undefined);has.add("safari",dav.indexOf("Safari")>=0&&!has("wp")&&!has("chrome")&&!has("android")&&!has("edge")&&!has("opr")?parseFloat(dav.split("Version/")[1]):undefined);has.add("mac",dav.indexOf("Macintosh")>=0);has.add("quirks",document.compatMode=="BackCompat");if(!has("wp")&&dua.match(/(iPhone|iPod|iPad)/)){var p=RegExp.$1.replace(/P/,"p");var v=dua.match(/OS ([\d_]+)/)?RegExp.$1:"1";var os=parseFloat(v.replace(/_/,".").replace(/_/g,""));has.add(p,os);has.add("ios",os);}has.add("bb",(dua.indexOf("BlackBerry")>=0||dua.indexOf("BB10")>=0)&&parseFloat(dua.split("Version/")[1])||undefined);has.add("trident",parseFloat(dav.split("Trident/")[1])||undefined);has.add("svg",typeof SVGAngle!=="undefined");if(!has("webkit")){if(dua.indexOf("Opera")>=0){has.add("opera",tv>=9.8?parseFloat(dua.split("Version/")[1])||tv:tv);}if(dua.indexOf("Gecko")>=0&&!has("wp")&&!has("khtml")&&!has("trident")&&!has("edge")){has.add("mozilla",tv);}if(has("mozilla")){has.add("ff",parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1])||undefined);}if(document.all&&!has("opera")){var isIE=parseFloat(dav.split("MSIE ")[1])||undefined;var mode=document.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}has.add("ie",isIE);}has.add("wii",typeof opera!="undefined"&&opera.wiiremote);}}return has;});},"dojo/_base/lang":function(){define(["./kernel","../has","../sniff"],function(dojo,has){has.add("bug-for-in-skips-shadowed",function(){for(var i in {toString:1}){return 0;}return 1;});var _14c=has("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],_14d=_14c.length,_14e=function(_14f,_150,_151){if(!_151){if(_14f[0]&&dojo.scopeMap[_14f[0]]){_151=dojo.scopeMap[_14f.shift()][1];}else{_151=dojo.global;}}try{for(var i=0;i<_14f.length;i++){var p=_14f[i];if(!(p in _151)){if(_150){_151[p]={};}else{return;}}_151=_151[p];}return _151;}catch(e){}},opts=Object.prototype.toString,_152=function(obj,_153,_154){return (_154||[]).concat(Array.prototype.slice.call(obj,_153||0));},_155=/\{([^\}]+)\}/g;var lang={_extraNames:_14c,_mixin:function(dest,_156,_157){var name,s,i,_158={};for(name in _156){s=_156[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _158)||_158[name]!==s))){dest[name]=_157?_157(s):s;}}if(has("bug-for-in-skips-shadowed")){if(_156){for(i=0;i<_14d;++i){name=_14c[i];s=_156[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _158)||_158[name]!==s))){dest[name]=_157?_157(s):s;}}}}return dest;},mixin:function(dest,_159){if(!dest){dest={};}for(var i=1,l=arguments.length;i<l;i++){lang._mixin(dest,arguments[i]);}return dest;},setObject:function(name,_15a,_15b){var _15c=name.split("."),p=_15c.pop(),obj=_14e(_15c,true,_15b);return obj&&p?(obj[p]=_15a):undefined;},getObject:function(name,_15d,_15e){return !name?_15e:_14e(name.split("."),_15d,_15e);},exists:function(name,obj){return lang.getObject(name,false,obj)!==undefined;},isString:function(it){return (typeof it=="string"||it instanceof String);},isArray:Array.isArray||function(it){return opts.call(it)=="[object Array]";},isFunction:function(it){return opts.call(it)==="[object Function]";},isObject:function(it){return it!==undefined&&(it===null||typeof it=="object"||lang.isArray(it)||lang.isFunction(it));},isArrayLike:function(it){return !!it&&!lang.isString(it)&&!lang.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(lang.isArray(it)||isFinite(it.length));},isAlien:function(it){return it&&!lang.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));},extend:function(ctor,_15f){for(var i=1,l=arguments.length;i<l;i++){lang._mixin(ctor.prototype,arguments[i]);}return ctor;},_hitchArgs:function(_160,_161){var pre=lang._toArray(arguments,2);var _162=lang.isString(_161);return function(){var args=lang._toArray(arguments);var f=_162?(_160||dojo.global)[_161]:_161;return f&&f.apply(_160||this,pre.concat(args));};},hitch:function(_163,_164){if(arguments.length>2){return lang._hitchArgs.apply(dojo,arguments);}if(!_164){_164=_163;_163=null;}if(lang.isString(_164)){_163=_163||dojo.global;if(!_163[_164]){throw (["lang.hitch: scope[\"",_164,"\"] is null (scope=\"",_163,"\")"].join(""));}return function(){return _163[_164].apply(_163,arguments||[]);};}return !_163?_164:function(){return _164.apply(_163,arguments||[]);};},delegate:(function(){function TMP(){};return function(obj,_165){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_165){lang._mixin(tmp,_165);}return tmp;};})(),_toArray:has("ie")?(function(){function slow(obj,_166,_167){var arr=_167||[];for(var x=_166||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};return function(obj){return ((obj.item)?slow:_152).apply(this,arguments);};})():_152,partial:function(_168){var arr=[null];return lang.hitch.apply(dojo,arr.concat(lang._toArray(arguments)));},clone:function(src){if(!src||typeof src!="object"||lang.isFunction(src)){return src;}if(src.nodeType&&"cloneNode" in src){return src.cloneNode(true);}if(src instanceof Date){return new Date(src.getTime());}if(src instanceof RegExp){return new RegExp(src);}var r,i,l;if(lang.isArray(src)){r=[];for(i=0,l=src.length;i<l;++i){if(i in src){r[i]=lang.clone(src[i]);}}}else{r=src.constructor?new src.constructor():{};}return lang._mixin(r,src,lang.clone);},trim:String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");},replace:function(tmpl,map,_169){return tmpl.replace(_169||_155,lang.isFunction(map)?map:function(_16a,k){return lang.getObject(k,false,map);});}};1&&lang.mixin(dojo,lang);return lang;});},"dojo/_base/array":function(){define(["./kernel","../has","./lang"],function(dojo,has,lang){var _16b={},u;function _16c(fn){return _16b[fn]=new Function("item","index","array",fn);};function _16d(some){var _16e=!some;return function(a,fn,o){var i=0,l=a&&a.length||0,_16f;if(l&&typeof a=="string"){a=a.split("");}if(typeof fn=="string"){fn=_16b[fn]||_16c(fn);}if(o){for(;i<l;++i){_16f=!fn.call(o,a[i],i,a);if(some^_16f){return !_16f;}}}else{for(;i<l;++i){_16f=!fn(a[i],i,a);if(some^_16f){return !_16f;}}}return _16e;};};function _170(up){var _171=1,_172=0,_173=0;if(!up){_171=_172=_173=-1;}return function(a,x,from,last){if(last&&_171>0){return _174.lastIndexOf(a,x,from);}var l=a&&a.length||0,end=up?l+_173:_172,i;if(from===u){i=up?_172:l+_173;}else{if(from<0){i=l+from;if(i<0){i=_172;}}else{i=from>=l?l+_173:from;}}if(l&&typeof a=="string"){a=a.split("");}for(;i!=end;i+=_171){if(a[i]==x){return i;}}return -1;};};var _174={every:_16d(false),some:_16d(true),indexOf:_170(true),lastIndexOf:_170(false),forEach:function(arr,_175,_176){var i=0,l=arr&&arr.length||0;if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _175=="string"){_175=_16b[_175]||_16c(_175);}if(_176){for(;i<l;++i){_175.call(_176,arr[i],i,arr);}}else{for(;i<l;++i){_175(arr[i],i,arr);}}},map:function(arr,_177,_178,Ctr){var i=0,l=arr&&arr.length||0,out=new (Ctr||Array)(l);if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _177=="string"){_177=_16b[_177]||_16c(_177);}if(_178){for(;i<l;++i){out[i]=_177.call(_178,arr[i],i,arr);}}else{for(;i<l;++i){out[i]=_177(arr[i],i,arr);}}return out;},filter:function(arr,_179,_17a){var i=0,l=arr&&arr.length||0,out=[],_17b;if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _179=="string"){_179=_16b[_179]||_16c(_179);}if(_17a){for(;i<l;++i){_17b=arr[i];if(_179.call(_17a,_17b,i,arr)){out.push(_17b);}}}else{for(;i<l;++i){_17b=arr[i];if(_179(_17b,i,arr)){out.push(_17b);}}}return out;},clearCache:function(){_16b={};}};1&&lang.mixin(dojo,_174);return _174;});},"dojo/ready":function(){define(["./_base/kernel","./has","require","./domReady","./_base/lang"],function(dojo,has,_17c,_17d,lang){var _17e=0,_17f=[],_180=0,_181=function(){_17e=1;dojo._postLoad=dojo.config.afterOnLoad=true;_182();},_182=function(){if(_180){return;}_180=1;while(_17e&&(!_17d||_17d._Q.length==0)&&(_17c.idle?_17c.idle():true)&&_17f.length){var f=_17f.shift();try{f();}catch(e){e.info=e.message;if(_17c.signal){_17c.signal("error",e);}else{throw e;}}}_180=0;};_17c.on&&_17c.on("idle",_182);if(_17d){_17d._onQEmpty=_182;}var _183=dojo.ready=dojo.addOnLoad=function(_184,_185,_186){var _187=lang._toArray(arguments);if(typeof _184!="number"){_186=_185;_185=_184;_184=1000;}else{_187.shift();}_186=_186?lang.hitch.apply(dojo,_187):function(){_185();};_186.priority=_184;for(var i=0;i<_17f.length&&_184>=_17f[i].priority;i++){}_17f.splice(i,0,_186);_182();};1||has.add("dojo-config-addOnLoad",1);if(1){var dca=dojo.config.addOnLoad;if(dca){_183[(lang.isArray(dca)?"apply":"call")](dojo,dca);}}if(1&&dojo.config.parseOnLoad&&!dojo.isAsync){_183(99,function(){if(!dojo.parser){dojo.deprecated("Add explicit require(['dojo/parser']);","","2.0");_17c(["dojo/parser"]);}});}if(_17d){_17d(_181);}else{_181();}return _183;});},"dojo/domReady":function(){define(["./global","./has"],function(_188,has){var doc=document,_189={"loaded":1,"complete":1},_18a=typeof doc.readyState!="string",_18b=!!_189[doc.readyState],_18c=[],_18d;function _18e(_18f){_18c.push(_18f);if(_18b){_190();}};_18e.load=function(id,req,load){_18e(load);};_18e._Q=_18c;_18e._onQEmpty=function(){};if(_18a){doc.readyState="loading";}function _190(){if(_18d){return;}_18d=true;while(_18c.length){try{(_18c.shift())(doc);}catch(err){console.error(err,"in domReady callback",err.stack);}}_18d=false;_18e._onQEmpty();};if(!_18b){var _191=[],_192=function(evt){evt=evt||_188.event;if(_18b||(evt.type=="readystatechange"&&!_189[doc.readyState])){return;}if(_18a){doc.readyState="complete";}_18b=1;_190();},on=function(node,_193){node.addEventListener(_193,_192,false);_18c.push(function(){node.removeEventListener(_193,_192,false);});};if(!has("dom-addeventlistener")){on=function(node,_194){_194="on"+_194;node.attachEvent(_194,_192);_18c.push(function(){node.detachEvent(_194,_192);});};var div=doc.createElement("div");try{if(div.doScroll&&_188.frameElement===null){_191.push(function(){try{div.doScroll("left");return 1;}catch(e){}});}}catch(e){}}on(doc,"DOMContentLoaded");on(_188,"load");if("onreadystatechange" in doc){on(doc,"readystatechange");}else{if(!_18a){_191.push(function(){return _189[doc.readyState];});}}if(_191.length){var _195=function(){if(_18b){return;}var i=_191.length;while(i--){if(_191[i]()){_192("poller");return;}}setTimeout(_195,30);};_195();}}return _18e;});},"dojo/_base/declare":function(){define(["./kernel","../has","./lang"],function(dojo,has,lang){var mix=lang.mixin,op=Object.prototype,opts=op.toString,xtor,_196=0,_197="constructor";if(!has("csp-restrictions")){xtor=new Function;}else{xtor=function(){};}function err(msg,cls){throw new Error("declare"+(cls?" "+cls:"")+": "+msg);};function _198(_199,_19a){var _19b=[],_19c=[{cls:0,refs:[]}],_19d={},_19e=1,l=_199.length,i=0,j,lin,base,top,_19f,rec,name,refs;for(;i<l;++i){base=_199[i];if(!base){err("mixin #"+i+" is unknown. Did you use dojo.require to pull it in?",_19a);}else{if(opts.call(base)!="[object Function]"){err("mixin #"+i+" is not a callable constructor.",_19a);}}lin=base._meta?base._meta.bases:[base];top=0;for(j=lin.length-1;j>=0;--j){_19f=lin[j].prototype;if(!_19f.hasOwnProperty("declaredClass")){_19f.declaredClass="uniqName_"+(_196++);}name=_19f.declaredClass;if(!_19d.hasOwnProperty(name)){_19d[name]={count:0,refs:[],cls:lin[j]};++_19e;}rec=_19d[name];if(top&&top!==rec){rec.refs.push(top);++top.count;}top=rec;}++top.count;_19c[0].refs.push(top);}while(_19c.length){top=_19c.pop();_19b.push(top.cls);--_19e;while(refs=top.refs,refs.length==1){top=refs[0];if(!top||--top.count){top=0;break;}_19b.push(top.cls);--_19e;}if(top){for(i=0,l=refs.length;i<l;++i){top=refs[i];if(!--top.count){_19c.push(top);}}}}if(_19e){err("can't build consistent linearization",_19a);}base=_199[0];_19b[0]=base?base._meta&&base===_19b[_19b.length-base._meta.bases.length]?base._meta.bases.length:1:0;return _19b;};function _1a0(args,a,f,g){var name,_1a1,_1a2,_1a3,meta,base,_1a4,opf,pos,_1a5=this._inherited=this._inherited||{};if(typeof args==="string"){name=args;args=a;a=f;f=g;}if(typeof args==="function"){_1a3=args;args=a;a=f;}else{try{_1a3=args.callee;}catch(e){if(e instanceof TypeError){err("strict mode inherited() requires the caller function to be passed before arguments",this.declaredClass);}else{throw e;}}}name=name||_1a3.nom;if(!name){err("can't deduce a name to call inherited()",this.declaredClass);}f=g=0;meta=this.constructor._meta;_1a2=meta.bases;pos=_1a5.p;if(name!=_197){if(_1a5.c!==_1a3){pos=0;base=_1a2[0];meta=base._meta;if(meta.hidden[name]!==_1a3){_1a1=meta.chains;if(_1a1&&typeof _1a1[name]=="string"){err("calling chained method with inherited: "+name,this.declaredClass);}do{meta=base._meta;_1a4=base.prototype;if(meta&&(_1a4[name]===_1a3&&_1a4.hasOwnProperty(name)||meta.hidden[name]===_1a3)){break;}}while(base=_1a2[++pos]);pos=base?pos:-1;}}base=_1a2[++pos];if(base){_1a4=base.prototype;if(base._meta&&_1a4.hasOwnProperty(name)){f=_1a4[name];}else{opf=op[name];do{_1a4=base.prototype;f=_1a4[name];if(f&&(base._meta?_1a4.hasOwnProperty(name):f!==opf)){break;}}while(base=_1a2[++pos]);}}f=base&&f||op[name];}else{if(_1a5.c!==_1a3){pos=0;meta=_1a2[0]._meta;if(meta&&meta.ctor!==_1a3){_1a1=meta.chains;if(!_1a1||_1a1.constructor!=="manual"){err("calling chained constructor with inherited",this.declaredClass);}while(base=_1a2[++pos]){meta=base._meta;if(meta&&meta.ctor===_1a3){break;}}pos=base?pos:-1;}}while(base=_1a2[++pos]){meta=base._meta;f=meta?meta.ctor:base;if(f){break;}}f=base&&f;}_1a5.c=f;_1a5.p=pos;if(f){return a===true?f:f.apply(this,a||args);}};function _1a6(name,args,a){if(typeof name==="string"){if(typeof args==="function"){return this.__inherited(name,args,a,true);}return this.__inherited(name,args,true);}else{if(typeof name==="function"){return this.__inherited(name,args,true);}}return this.__inherited(name,true);};function _1a7(args,a1,a2,a3){var f=this.getInherited(args,a1,a2);if(f){return f.apply(this,a3||a2||a1||args);}};var _1a8=dojo.config.isDebug?_1a7:_1a0;function _1a9(cls){var _1aa=this.constructor._meta.bases;for(var i=0,l=_1aa.length;i<l;++i){if(_1aa[i]===cls){return true;}}return this instanceof cls;};function _1ab(_1ac,_1ad){for(var name in _1ad){if(name!=_197&&_1ad.hasOwnProperty(name)){_1ac[name]=_1ad[name];}}if(has("bug-for-in-skips-shadowed")){for(var _1ae=lang._extraNames,i=_1ae.length;i;){name=_1ae[--i];if(name!=_197&&_1ad.hasOwnProperty(name)){_1ac[name]=_1ad[name];}}}};function _1af(_1b0,_1b1){var name,t;for(name in _1b1){t=_1b1[name];if((t!==op[name]||!(name in op))&&name!=_197){if(opts.call(t)=="[object Function]"){t.nom=name;}_1b0[name]=t;}}if(has("bug-for-in-skips-shadowed")&&_1b1){for(var _1b2=lang._extraNames,i=_1b2.length;i;){name=_1b2[--i];t=_1b1[name];if((t!==op[name]||!(name in op))&&name!=_197){if(opts.call(t)=="[object Function]"){t.nom=name;}_1b0[name]=t;}}}return _1b0;};function _1b3(_1b4){_1b5.safeMixin(this.prototype,_1b4);return this;};function _1b6(_1b7,_1b8){if(!(_1b7 instanceof Array||typeof _1b7==="function")){_1b8=_1b7;_1b7=undefined;}_1b8=_1b8||{};_1b7=_1b7||[];return _1b5([this].concat(_1b7),_1b8);};function _1b9(_1ba,_1bb){return function(){var a=arguments,args=a,a0=a[0],f,i,m,l=_1ba.length,_1bc;if(!(this instanceof a.callee)){return _1bd(a);}if(_1bb&&(a0&&a0.preamble||this.preamble)){_1bc=new Array(_1ba.length);_1bc[0]=a;for(i=0;;){a0=a[0];if(a0){f=a0.preamble;if(f){a=f.apply(this,a)||a;}}f=_1ba[i].prototype;f=f.hasOwnProperty("preamble")&&f.preamble;if(f){a=f.apply(this,a)||a;}if(++i==l){break;}_1bc[i]=a;}}for(i=l-1;i>=0;--i){f=_1ba[i];m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,_1bc?_1bc[i]:a);}}f=this.postscript;if(f){f.apply(this,args);}};};function _1be(ctor,_1bf){return function(){var a=arguments,t=a,a0=a[0],f;if(!(this instanceof a.callee)){return _1bd(a);}if(_1bf){if(a0){f=a0.preamble;if(f){t=f.apply(this,t)||t;}}f=this.preamble;if(f){f.apply(this,t);}}if(ctor){ctor.apply(this,a);}f=this.postscript;if(f){f.apply(this,a);}};};function _1c0(_1c1){return function(){var a=arguments,i=0,f,m;if(!(this instanceof a.callee)){return _1bd(a);}for(;f=_1c1[i];++i){m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,a);break;}}f=this.postscript;if(f){f.apply(this,a);}};};function _1c2(name,_1c3,_1c4){return function(){var b,m,f,i=0,step=1;if(_1c4){i=_1c3.length-1;step=-1;}for(;b=_1c3[i];i+=step){m=b._meta;f=(m?m.hidden:b.prototype)[name];if(f){f.apply(this,arguments);}}};};function _1c5(ctor){xtor.prototype=ctor.prototype;var t=new xtor;xtor.prototype=null;return t;};function _1bd(args){var ctor=args.callee,t=_1c5(ctor);ctor.apply(t,args);return t;};function _1b5(_1c6,_1c7,_1c8){if(typeof _1c6!="string"){_1c8=_1c7;_1c7=_1c6;_1c6="";}_1c8=_1c8||{};var _1c9,i,t,ctor,name,_1ca,_1cb,_1cc=1,_1cd=_1c7;if(opts.call(_1c7)=="[object Array]"){_1ca=_198(_1c7,_1c6);t=_1ca[0];_1cc=_1ca.length-t;_1c7=_1ca[_1cc];}else{_1ca=[0];if(_1c7){if(opts.call(_1c7)=="[object Function]"){t=_1c7._meta;_1ca=_1ca.concat(t?t.bases:_1c7);}else{err("base class is not a callable constructor.",_1c6);}}else{if(_1c7!==null){err("unknown base class. Did you use dojo.require to pull it in?",_1c6);}}}if(_1c7){for(i=_1cc-1;;--i){_1c9=_1c5(_1c7);if(!i){break;}t=_1ca[i];(t._meta?_1ab:mix)(_1c9,t.prototype);if(has("csp-restrictions")){ctor=function(){};}else{ctor=new Function;}ctor.superclass=_1c7;ctor.prototype=_1c9;_1c7=_1c9.constructor=ctor;}}else{_1c9={};}_1b5.safeMixin(_1c9,_1c8);t=_1c8.constructor;if(t!==op.constructor){t.nom=_197;_1c9.constructor=t;}for(i=_1cc-1;i;--i){t=_1ca[i]._meta;if(t&&t.chains){_1cb=mix(_1cb||{},t.chains);}}if(_1c9["-chains-"]){_1cb=mix(_1cb||{},_1c9["-chains-"]);}if(_1c7&&_1c7.prototype&&_1c7.prototype["-chains-"]){_1cb=mix(_1cb||{},_1c7.prototype["-chains-"]);}t=!_1cb||!_1cb.hasOwnProperty(_197);_1ca[0]=ctor=(_1cb&&_1cb.constructor==="manual")?_1c0(_1ca):(_1ca.length==1?_1be(_1c8.constructor,t):_1b9(_1ca,t));ctor._meta={bases:_1ca,hidden:_1c8,chains:_1cb,parents:_1cd,ctor:_1c8.constructor};ctor.superclass=_1c7&&_1c7.prototype;ctor.extend=_1b3;ctor.createSubclass=_1b6;ctor.prototype=_1c9;_1c9.constructor=ctor;_1c9.getInherited=_1a6;_1c9.isInstanceOf=_1a9;_1c9.inherited=_1a8;_1c9.__inherited=_1a0;if(_1c6){_1c9.declaredClass=_1c6;lang.setObject(_1c6,ctor);}if(_1cb){for(name in _1cb){if(_1c9[name]&&typeof _1cb[name]=="string"&&name!=_197){t=_1c9[name]=_1c2(name,_1ca,_1cb[name]==="after");t.nom=name;}}}return ctor;};dojo.safeMixin=_1b5.safeMixin=_1af;dojo.declare=_1b5;return _1b5;});},"dojo/_base/connect":function(){define(["./kernel","../on","../topic","../aspect","./event","../mouse","./sniff","./lang","../keys"],function(dojo,on,hub,_1ce,_1cf,_1d0,has,lang){has.add("events-keypress-typed",function(){var _1d1={charCode:0};try{_1d1=document.createEvent("KeyboardEvent");(_1d1.initKeyboardEvent||_1d1.initKeyEvent).call(_1d1,"keypress",true,true,null,false,false,false,false,9,3);}catch(e){}return _1d1.charCode==0&&!has("opera");});function _1d2(obj,_1d3,_1d4,_1d5,_1d6){_1d5=lang.hitch(_1d4,_1d5);if(!obj||!(obj.addEventListener||obj.attachEvent)){return _1ce.after(obj||dojo.global,_1d3,_1d5,true);}if(typeof _1d3=="string"&&_1d3.substring(0,2)=="on"){_1d3=_1d3.substring(2);}if(!obj){obj=dojo.global;}if(!_1d6){switch(_1d3){case "keypress":_1d3=_1d7;break;case "mouseenter":_1d3=_1d0.enter;break;case "mouseleave":_1d3=_1d0.leave;break;}}return on(obj,_1d3,_1d5,_1d6);};var _1d8={106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39,229:113};var _1d9=has("mac")?"metaKey":"ctrlKey";var _1da=function(evt,_1db){var faux=lang.mixin({},evt,_1db);_1dc(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};function _1dc(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;};var _1d7;if(has("events-keypress-typed")){var _1dd=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};_1d7=function(_1de,_1df){var _1e0=on(_1de,"keydown",function(evt){var k=evt.keyCode;var _1e1=(k!=13)&&k!=32&&(k!=27||!has("ie"))&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222)&&k!=229;if(_1e1||evt.ctrlKey){var c=_1e1?0:k;if(evt.ctrlKey){if(k==3||k==13){return _1df.call(evt.currentTarget,evt);}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=_1d8[c]||c;}}}}var faux=_1da(evt,{type:"keypress",faux:true,charCode:c});_1df.call(evt.currentTarget,faux);if(has("ie")){_1dd(evt,faux.keyCode);}}});var _1e2=on(_1de,"keypress",function(evt){var c=evt.charCode;c=c>=32?c:0;evt=_1da(evt,{charCode:c,faux:true});return _1df.call(this,evt);});return {remove:function(){_1e0.remove();_1e2.remove();}};};}else{if(has("opera")){_1d7=function(_1e3,_1e4){return on(_1e3,"keypress",function(evt){var c=evt.which;if(c==3){c=99;}c=c<32&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return _1e4.call(this,_1da(evt,{charCode:c}));});};}else{_1d7=function(_1e5,_1e6){return on(_1e5,"keypress",function(evt){_1dc(evt);return _1e6.call(this,evt);});};}}var _1e7={_keypress:_1d7,connect:function(obj,_1e8,_1e9,_1ea,_1eb){var a=arguments,args=[],i=0;args.push(typeof a[0]=="string"?null:a[i++],a[i++]);var a1=a[i+1];args.push(typeof a1=="string"||typeof a1=="function"?a[i++]:null,a[i++]);for(var l=a.length;i<l;i++){args.push(a[i]);}return _1d2.apply(this,args);},disconnect:function(_1ec){if(_1ec){_1ec.remove();}},subscribe:function(_1ed,_1ee,_1ef){return hub.subscribe(_1ed,lang.hitch(_1ee,_1ef));},publish:function(_1f0,args){return hub.publish.apply(hub,[_1f0].concat(args));},connectPublisher:function(_1f1,obj,_1f2){var pf=function(){_1e7.publish(_1f1,arguments);};return _1f2?_1e7.connect(obj,_1f2,pf):_1e7.connect(obj,pf);},isCopyKey:function(e){return e[_1d9];}};_1e7.unsubscribe=_1e7.disconnect;1&&lang.mixin(dojo,_1e7);return _1e7;});},"dojo/on":function(){define(["./has!dom-addeventlistener?:./aspect","./_base/kernel","./sniff"],function(_1f3,dojo,has){"use strict";if(1){var _1f4=window.ScriptEngineMajorVersion;has.add("jscript",_1f4&&(_1f4()+ScriptEngineMinorVersion()/10));has.add("event-orientationchange",has("touch")&&!has("android"));has.add("event-stopimmediatepropagation",window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);has.add("event-focusin",function(_1f5,doc,_1f6){return "onfocusin" in _1f6;});if(has("touch")){has.add("touch-can-modify-event-delegate",function(){var _1f7=function(){};_1f7.prototype=document.createEvent("MouseEvents");try{var _1f8=new _1f7;_1f8.target=null;return _1f8.target===null;}catch(e){return false;}});}}var on=function(_1f9,type,_1fa,_1fb){if(typeof _1f9.on=="function"&&typeof type!="function"&&!_1f9.nodeType){return _1f9.on(type,_1fa);}return on.parse(_1f9,type,_1fa,_1fc,_1fb,this);};on.pausable=function(_1fd,type,_1fe,_1ff){var _200;var _201=on(_1fd,type,function(){if(!_200){return _1fe.apply(this,arguments);}},_1ff);_201.pause=function(){_200=true;};_201.resume=function(){_200=false;};return _201;};on.once=function(_202,type,_203,_204){var _205=on(_202,type,function(){_205.remove();return _203.apply(this,arguments);});return _205;};on.parse=function(_206,type,_207,_208,_209,_20a){var _20b;if(type.call){return type.call(_20a,_206,_207);}if(type instanceof Array){_20b=type;}else{if(type.indexOf(",")>-1){_20b=type.split(/\s*,\s*/);}}if(_20b){var _20c=[];var i=0;var _20d;while(_20d=_20b[i++]){_20c.push(on.parse(_206,_20d,_207,_208,_209,_20a));}_20c.remove=function(){for(var i=0;i<_20c.length;i++){_20c[i].remove();}};return _20c;}return _208(_206,type,_207,_209,_20a);};var _20e=/^touch/;function _1fc(_20f,type,_210,_211,_212){var _213=type.match(/(.*):(.*)/);if(_213){type=_213[2];_213=_213[1];return on.selector(_213,type).call(_212,_20f,_210);}if(has("touch")){if(_20e.test(type)){_210=_214(_210);}if(!has("event-orientationchange")&&(type=="orientationchange")){type="resize";_20f=window;_210=_214(_210);}}if(_215){_210=_215(_210);}if(_20f.addEventListener){var _216=type in _217,_218=_216?_217[type]:type;_20f.addEventListener(_218,_210,_216);return {remove:function(){_20f.removeEventListener(_218,_210,_216);}};}type="on"+type;if(_219&&_20f.attachEvent){return _219(_20f,type,_210);}throw new Error("Target must be an event emitter");};on.matches=function(node,_21a,_21b,_21c,_21d){_21d=_21d&&(typeof _21d.matches=="function")?_21d:dojo.query;_21c=_21c!==false;if(node.nodeType!=1){node=node.parentNode;}while(!_21d.matches(node,_21a,_21b)){if(node==_21b||_21c===false||!(node=node.parentNode)||node.nodeType!=1){return false;}}return node;};on.selector=function(_21e,_21f,_220){return function(_221,_222){var _223=typeof _21e=="function"?{matches:_21e}:this,_224=_21f.bubble;function _225(_226){return on.matches(_226,_21e,_221,_220,_223);};if(_224){return on(_221,_224(_225),_222);}return on(_221,_21f,function(_227){var _228=_225(_227.target);if(_228){_227.selectorTarget=_228;return _222.call(_228,_227);}});};};function _229(){this.cancelable=false;this.defaultPrevented=true;};function _22a(){this.bubbles=false;};var _22b=[].slice,_22c=on.emit=function(_22d,type,_22e){var args=_22b.call(arguments,2);var _22f="on"+type;if("parentNode" in _22d){var _230=args[0]={};for(var i in _22e){_230[i]=_22e[i];}_230.preventDefault=_229;_230.stopPropagation=_22a;_230.target=_22d;_230.type=type;_22e=_230;}do{_22d[_22f]&&_22d[_22f].apply(_22d,args);}while(_22e&&_22e.bubbles&&(_22d=_22d.parentNode));return _22e&&_22e.cancelable&&_22e;};var _217=has("event-focusin")?{}:{focusin:"focus",focusout:"blur"};if(!has("event-stopimmediatepropagation")){var _231=function(){this.immediatelyStopped=true;this.modified=true;};var _215=function(_232){return function(_233){if(!_233.immediatelyStopped){_233.stopImmediatePropagation=_231;return _232.apply(this,arguments);}};};}if(has("dom-addeventlistener")){on.emit=function(_234,type,_235){if(_234.dispatchEvent&&document.createEvent){var _236=_234.ownerDocument||document;var _237=_236.createEvent("HTMLEvents");_237.initEvent(type,!!_235.bubbles,!!_235.cancelable);for(var i in _235){if(!(i in _237)){_237[i]=_235[i];}}return _234.dispatchEvent(_237)&&_237;}return _22c.apply(on,arguments);};}else{on._fixEvent=function(evt,_238){if(!evt){var w=_238&&(_238.ownerDocument||_238.document||_238).parentWindow||window;evt=w.event;}if(!evt){return evt;}try{if(_239&&evt.type==_239.type&&evt.srcElement==_239.target){evt=_239;}}catch(e){}if(!evt.target){evt.target=evt.srcElement;evt.currentTarget=(_238||evt.srcElement);if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}if(!evt.stopPropagation){evt.stopPropagation=_23a;evt.preventDefault=_23b;}switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;_23c(evt);break;}}return evt;};var _239,_23d=function(_23e){this.handle=_23e;};_23d.prototype.remove=function(){delete _dojoIEListeners_[this.handle];};var _23f=function(_240){return function(evt){evt=on._fixEvent(evt,this);var _241=_240.call(this,evt);if(evt.modified){if(!_239){setTimeout(function(){_239=null;});}_239=evt;}return _241;};};var _219=function(_242,type,_243){_243=_23f(_243);if(((_242.ownerDocument?_242.ownerDocument.parentWindow:_242.parentWindow||_242.window||window)!=top||has("jscript")<5.8)&&!has("config-_allow_leaks")){if(typeof _dojoIEListeners_=="undefined"){_dojoIEListeners_=[];}var _244=_242[type];if(!_244||!_244.listeners){var _245=_244;_244=Function("event","var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}");_244.listeners=[];_242[type]=_244;_244.global=this;if(_245){_244.listeners.push(_dojoIEListeners_.push(_245)-1);}}var _246;_244.listeners.push(_246=(_244.global._dojoIEListeners_.push(_243)-1));return new _23d(_246);}return _1f3.after(_242,type,_243,true);};var _23c=function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;};var _23a=function(){this.cancelBubble=true;};var _23b=on._preventDefault=function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){try{this.keyCode=0;}catch(e){}}this.defaultPrevented=true;this.returnValue=false;this.modified=true;};}if(has("touch")){var _247=function(){};var _248=window.orientation;var _214=function(_249){return function(_24a){var _24b=_24a.corrected;if(!_24b){var type=_24a.type;try{delete _24a.type;}catch(e){}if(_24a.type){if(has("touch-can-modify-event-delegate")){_247.prototype=_24a;_24b=new _247;}else{_24b={};for(var name in _24a){_24b[name]=_24a[name];}}_24b.preventDefault=function(){_24a.preventDefault();};_24b.stopPropagation=function(){_24a.stopPropagation();};}else{_24b=_24a;_24b.type=type;}_24a.corrected=_24b;if(type=="resize"){if(_248==window.orientation){return null;}_248=window.orientation;_24b.type="orientationchange";return _249.call(this,_24b);}if(!("rotation" in _24b)){_24b.rotation=0;_24b.scale=1;}if(window.TouchEvent&&_24a instanceof TouchEvent){var _24c=_24b.changedTouches[0];for(var i in _24c){delete _24b[i];_24b[i]=_24c[i];}}}return _249.call(this,_24b);};};}return on;});},"dojo/topic":function(){define(["./Evented"],function(_24d){var hub=new _24d;return {publish:function(_24e,_24f){return hub.emit.apply(hub,arguments);},subscribe:function(_250,_251){return hub.on.apply(hub,arguments);}};});},"dojo/Evented":function(){define(["./aspect","./on"],function(_252,on){"use strict";var _253=_252.after;function _254(){};_254.prototype={on:function(type,_255){return on.parse(this,type,_255,function(_256,type){return _253(_256,"on"+type,_255,true);});},emit:function(type,_257){var args=[this];args.push.apply(args,arguments);return on.emit.apply(on,args);}};return _254;});},"dojo/aspect":function(){define([],function(){"use strict";var _258;function _259(_25a,type,_25b,_25c){var _25d=_25a[type];var _25e=type=="around";var _25f;if(_25e){var _260=_25b(function(){return _25d.advice(this,arguments);});_25f={remove:function(){if(_260){_260=_25a=_25b=null;}},advice:function(_261,args){return _260?_260.apply(_261,args):_25d.advice(_261,args);}};}else{_25f={remove:function(){if(_25f.advice){var _262=_25f.previous;var next=_25f.next;if(!next&&!_262){delete _25a[type];}else{if(_262){_262.next=next;}else{_25a[type]=next;}if(next){next.previous=_262;}}_25a=_25b=_25f.advice=null;}},id:_25a.nextId++,advice:_25b,receiveArguments:_25c};}if(_25d&&!_25e){if(type=="after"){while(_25d.next&&(_25d=_25d.next)){}_25d.next=_25f;_25f.previous=_25d;}else{if(type=="before"){_25a[type]=_25f;_25f.next=_25d;_25d.previous=_25f;}}}else{_25a[type]=_25f;}return _25f;};function _263(type){return function(_264,_265,_266,_267){var _268=_264[_265],_269;if(!_268||_268.target!=_264){_264[_265]=_269=function(){var _26a=_269.nextId;var args=arguments;var _26b=_269.before;while(_26b){if(_26b.advice){args=_26b.advice.apply(this,args)||args;}_26b=_26b.next;}if(_269.around){var _26c=_269.around.advice(this,args);}var _26d=_269.after;while(_26d&&_26d.id<_26a){if(_26d.advice){if(_26d.receiveArguments){var _26e=_26d.advice.apply(this,args);_26c=_26e===_258?_26c:_26e;}else{_26c=_26d.advice.call(this,_26c,args);}}_26d=_26d.next;}return _26c;};if(_268){_269.around={advice:function(_26f,args){return _268.apply(_26f,args);}};}_269.target=_264;_269.nextId=_269.nextId||0;}var _270=_259((_269||_268),type,_266,_267);_266=null;return _270;};};var _271=_263("after");var _272=_263("before");var _273=_263("around");return {before:_272,around:_273,after:_271};});},"dojo/_base/event":function(){define(["./kernel","../on","../has","../dom-geometry"],function(dojo,on,has,dom){if(on._fixEvent){var _274=on._fixEvent;on._fixEvent=function(evt,se){evt=_274(evt,se);if(evt){dom.normalizeEvent(evt);}return evt;};}var ret={fix:function(evt,_275){if(on._fixEvent){return on._fixEvent(evt,_275);}return evt;},stop:function(evt){if(has("dom-addeventlistener")||(evt&&evt.preventDefault)){evt.preventDefault();evt.stopPropagation();}else{evt=evt||window.event;evt.cancelBubble=true;on._preventDefault.call(evt);}}};if(1){dojo.fixEvent=ret.fix;dojo.stopEvent=ret.stop;}return ret;});},"dojo/dom-geometry":function(){define(["./sniff","./_base/window","./dom","./dom-style"],function(has,win,dom,_276){var geom={};geom.boxModel="content-box";if(has("ie")){geom.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}geom.getPadExtents=function getPadExtents(node,_277){node=dom.byId(node);var s=_277||_276.getComputedStyle(node),px=_276.toPixelValue,l=px(node,s.paddingLeft),t=px(node,s.paddingTop),r=px(node,s.paddingRight),b=px(node,s.paddingBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};var none="none";geom.getBorderExtents=function getBorderExtents(node,_278){node=dom.byId(node);var px=_276.toPixelValue,s=_278||_276.getComputedStyle(node),l=s.borderLeftStyle!=none?px(node,s.borderLeftWidth):0,t=s.borderTopStyle!=none?px(node,s.borderTopWidth):0,r=s.borderRightStyle!=none?px(node,s.borderRightWidth):0,b=s.borderBottomStyle!=none?px(node,s.borderBottomWidth):0;return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};geom.getPadBorderExtents=function getPadBorderExtents(node,_279){node=dom.byId(node);var s=_279||_276.getComputedStyle(node),p=geom.getPadExtents(node,s),b=geom.getBorderExtents(node,s);return {l:p.l+b.l,t:p.t+b.t,r:p.r+b.r,b:p.b+b.b,w:p.w+b.w,h:p.h+b.h};};geom.getMarginExtents=function getMarginExtents(node,_27a){node=dom.byId(node);var s=_27a||_276.getComputedStyle(node),px=_276.toPixelValue,l=px(node,s.marginLeft),t=px(node,s.marginTop),r=px(node,s.marginRight),b=px(node,s.marginBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};geom.getMarginBox=function getMarginBox(node,_27b){node=dom.byId(node);var s=_27b||_276.getComputedStyle(node),me=geom.getMarginExtents(node,s),l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode,px=_276.toPixelValue,pcs;if((has("ie")==8&&!has("quirks"))){if(p){pcs=_276.getComputedStyle(p);l-=pcs.borderLeftStyle!=none?px(node,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=none?px(node,pcs.borderTopWidth):0;}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};geom.getContentBox=function getContentBox(node,_27c){node=dom.byId(node);var s=_27c||_276.getComputedStyle(node),w=node.clientWidth,h,pe=geom.getPadExtents(node,s),be=geom.getBorderExtents(node,s),l=node.offsetLeft+pe.l+be.l,t=node.offsetTop+pe.t+be.t;if(!w){w=node.offsetWidth-be.w;h=node.offsetHeight-be.h;}else{h=node.clientHeight;}if((has("ie")==8&&!has("quirks"))){var p=node.parentNode,px=_276.toPixelValue,pcs;if(p){pcs=_276.getComputedStyle(p);l-=pcs.borderLeftStyle!=none?px(node,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=none?px(node,pcs.borderTopWidth):0;}}return {l:l,t:t,w:w-pe.w,h:h-pe.h};};function _27d(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};function _27e(node){return node.tagName.toLowerCase()=="button"||node.tagName.toLowerCase()=="input"&&(node.getAttribute("type")||"").toLowerCase()=="button";};function _27f(node){return geom.boxModel=="border-box"||node.tagName.toLowerCase()=="table"||_27e(node);};function _280(node){var _281={x:0,y:0,width:0,height:0,top:0,right:0,bottom:0,left:0},ret;try{ret=node.getBoundingClientRect();}catch(e){return _281;}if(typeof ret.left==="undefined"){return _281;}return ret;};geom.setContentSize=function setContentSize(node,box,_282){node=dom.byId(node);var w=box.w,h=box.h;if(_27f(node)){var pb=geom.getPadBorderExtents(node,_282);if(w>=0){w+=pb.w;}if(h>=0){h+=pb.h;}}_27d(node,NaN,NaN,w,h);};var _283={l:0,t:0,w:0,h:0};geom.setMarginBox=function setMarginBox(node,box,_284){node=dom.byId(node);var s=_284||_276.getComputedStyle(node),w=box.w,h=box.h,pb=_27f(node)?_283:geom.getPadBorderExtents(node,s),mb=geom.getMarginExtents(node,s);if(has("webkit")){if(_27e(node)){var ns=node.style;if(w>=0&&!ns.width){ns.width="4px";}if(h>=0&&!ns.height){ns.height="4px";}}}if(w>=0){w=Math.max(w-pb.w-mb.w,0);}if(h>=0){h=Math.max(h-pb.h-mb.h,0);}_27d(node,box.l,box.t,w,h);};geom.isBodyLtr=function isBodyLtr(doc){doc=doc||win.doc;return (win.body(doc).dir||doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};geom.docScroll=function docScroll(doc){doc=doc||win.doc;var node=doc.parentWindow||doc.defaultView;return "pageXOffset" in node?{x:node.pageXOffset,y:node.pageYOffset}:(node=has("quirks")?win.body(doc):doc.documentElement)&&{x:geom.fixIeBiDiScrollLeft(node.scrollLeft||0,doc),y:node.scrollTop||0};};geom.getIeDocumentElementOffset=function(doc){return {x:0,y:0};};geom.fixIeBiDiScrollLeft=function fixIeBiDiScrollLeft(_285,doc){doc=doc||win.doc;var ie=has("ie");if(ie&&!geom.isBodyLtr(doc)){var qk=has("quirks"),de=qk?win.body(doc):doc.documentElement,pwin=win.global;if(ie==6&&!qk&&pwin.frameElement&&de.scrollHeight>de.clientHeight){_285+=de.clientLeft;}return (ie<8||qk)?(_285+de.clientWidth-de.scrollWidth):-_285;}return _285;};geom.position=function(node,_286){node=dom.byId(node);var db=win.body(node.ownerDocument),ret=_280(node);ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(has("ie")<9){ret.x-=(has("quirks")?db.clientLeft+db.offsetLeft:0);ret.y-=(has("quirks")?db.clientTop+db.offsetTop:0);}if(_286){var _287=geom.docScroll(node.ownerDocument);ret.x+=_287.x;ret.y+=_287.y;}return ret;};geom.getMarginSize=function getMarginSize(node,_288){node=dom.byId(node);var me=geom.getMarginExtents(node,_288||_276.getComputedStyle(node));var size=_280(node);return {w:(size.right-size.left)+me.w,h:(size.bottom-size.top)+me.h};};geom.normalizeEvent=function(_289){if(!("layerX" in _289)){_289.layerX=_289.offsetX;_289.layerY=_289.offsetY;}if(!("pageX" in _289)){var se=_289.target;var doc=(se&&se.ownerDocument)||document;var _28a=has("quirks")?doc.body:doc.documentElement;_289.pageX=_289.clientX+geom.fixIeBiDiScrollLeft(_28a.scrollLeft||0,doc);_289.pageY=_289.clientY+(_28a.scrollTop||0);}};return geom;});},"dojo/_base/window":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){var ret={global:dojo.global,doc:dojo.global["document"]||null,body:function(doc){doc=doc||dojo.doc;return doc.body||doc.getElementsByTagName("body")[0];},setContext:function(_28b,_28c){dojo.global=ret.global=_28b;dojo.doc=ret.doc=_28c;},withGlobal:function(_28d,_28e,_28f,_290){var _291=dojo.global;try{dojo.global=ret.global=_28d;return ret.withDoc.call(null,_28d.document,_28e,_28f,_290);}finally{dojo.global=ret.global=_291;}},withDoc:function(_292,_293,_294,_295){var _296=ret.doc,oldQ=has("quirks"),_297=has("ie"),isIE,mode,pwin;try{dojo.doc=ret.doc=_292;dojo.isQuirks=has.add("quirks",dojo.doc.compatMode=="BackCompat",true,true);if(has("ie")){if((pwin=_292.parentWindow)&&pwin.navigator){isIE=parseFloat(pwin.navigator.appVersion.split("MSIE ")[1])||undefined;mode=_292.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}dojo.isIE=has.add("ie",isIE,true,true);}}if(_294&&typeof _293=="string"){_293=_294[_293];}return _293.apply(_294,_295||[]);}finally{dojo.doc=ret.doc=_296;dojo.isQuirks=has.add("quirks",oldQ,true,true);dojo.isIE=has.add("ie",_297,true,true);}}};1&&lang.mixin(dojo,ret);return ret;});},"dojo/dom":function(){define(["./sniff","./_base/window","./_base/kernel"],function(has,win,_298){if(has("ie")<=7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}var dom={};if(has("ie")){dom.byId=function(id,doc){if(typeof id!="string"){return id||null;}var _299=doc||win.doc,te=id&&_299.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_299.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}return null;};}else{dom.byId=function(id,doc){return ((typeof id=="string")?(doc||win.doc).getElementById(id):id)||null;};}var doc=_298.global["document"]||null;has.add("dom-contains",!!(doc&&doc.contains));dom.isDescendant=has("dom-contains")?function(node,_29a){return !!((_29a=dom.byId(_29a))&&_29a.contains(dom.byId(node)));}:function(node,_29b){try{node=dom.byId(node);_29b=dom.byId(_29b);while(node){if(node==_29b){return true;}node=node.parentNode;}}catch(e){}return false;};has.add("css-user-select",function(_29c,doc,_29d){if(!_29d){return false;}var _29e=_29d.style;var _29f=["Khtml","O","Moz","Webkit"],i=_29f.length,name="userSelect",_2a0;do{if(typeof _29e[name]!=="undefined"){return name;}}while(i--&&(name=_29f[i]+"UserSelect"));return false;});var _2a1=has("css-user-select");dom.setSelectable=_2a1?function(node,_2a2){dom.byId(node).style[_2a1]=_2a2?"":"none";}:function(node,_2a3){node=dom.byId(node);var _2a4=node.getElementsByTagName("*"),i=_2a4.length;if(_2a3){node.removeAttribute("unselectable");while(i--){_2a4[i].removeAttribute("unselectable");}}else{node.setAttribute("unselectable","on");while(i--){_2a4[i].setAttribute("unselectable","on");}}};return dom;});},"dojo/dom-style":function(){define(["./sniff","./dom","./_base/window"],function(has,dom,win){var _2a5,_2a6={};if(has("webkit")){_2a5=function(node){var s;if(node.nodeType==1){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(has("ie")&&(has("ie")<9||has("quirks"))){_2a5=function(node){return node.nodeType==1&&node.currentStyle?node.currentStyle:{};};}else{_2a5=function(node){if(node.nodeType===1){var dv=node.ownerDocument.defaultView,w=dv.opener?dv:win.global.window;return w.getComputedStyle(node,null);}return {};};}}_2a6.getComputedStyle=_2a5;var _2a7;if(!has("ie")){_2a7=function(_2a8,_2a9){return parseFloat(_2a9)||0;};}else{_2a7=function(_2aa,_2ab){if(!_2ab){return 0;}if(_2ab=="medium"){return 4;}if(_2ab.slice&&_2ab.slice(-2)=="px"){return parseFloat(_2ab);}var s=_2aa.style,rs=_2aa.runtimeStyle,cs=_2aa.currentStyle,_2ac=s.left,_2ad=rs.left;rs.left=cs.left;try{s.left=_2ab;_2ab=s.pixelLeft;}catch(e){_2ab=0;}s.left=_2ac;rs.left=_2ad;return _2ab;};}_2a6.toPixelValue=_2a7;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};var _2ae=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return _2a5(node).opacity;};var _2af=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node,_2b0){if(_2b0===""){_2b0=1;}var ov=_2b0*100,_2b1=_2b0===1;if(_2b1){node.style.zoom="";if(af(node)){node.style.filter=node.style.filter.replace(new RegExp("\\s*progid:"+astr+"\\([^\\)]+?\\)","i"),"");}}else{node.style.zoom=1;if(af(node)){af(node,1).Opacity=ov;}else{node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}af(node,1).Enabled=true;}if(node.tagName.toLowerCase()=="tr"){for(var td=node.firstChild;td;td=td.nextSibling){if(td.tagName.toLowerCase()=="td"){_2af(td,_2b0);}}}return _2b0;}:function(node,_2b2){return node.style.opacity=_2b2;};var _2b3={left:true,top:true};var _2b4=/margin|padding|width|height|max|min|offset/;function _2b5(node,type,_2b6){type=type.toLowerCase();if(_2b6=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_2b6){case 700:return "bold";case 400:default:return "normal";}}if(!(type in _2b3)){_2b3[type]=_2b4.test(type);}return _2b3[type]?_2a7(node,_2b6):_2b6;};var _2b7={cssFloat:1,styleFloat:1,"float":1};_2a6.get=function getStyle(node,name){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");if(l==2&&op){return _2ae(n);}name=_2b7[name]?"cssFloat" in n.style?"cssFloat":"styleFloat":name;var s=_2a6.getComputedStyle(n);return (l==1)?s:_2b5(n,name,s[name]||n.style[name]);};_2a6.set=function setStyle(node,name,_2b8){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");name=_2b7[name]?"cssFloat" in n.style?"cssFloat":"styleFloat":name;if(l==3){return op?_2af(n,_2b8):n.style[name]=_2b8;}for(var x in name){_2a6.set(node,x,name[x]);}return _2a6.getComputedStyle(n);};return _2a6;});},"dojo/mouse":function(){define(["./_base/kernel","./on","./has","./dom","./_base/window"],function(dojo,on,has,dom,win){has.add("dom-quirks",win.doc&&win.doc.compatMode=="BackCompat");has.add("events-mouseenter",win.doc&&"onmouseenter" in win.doc.createElement("div"));has.add("events-mousewheel",win.doc&&"onmousewheel" in win.doc);var _2b9;if((has("dom-quirks")&&has("ie"))||!has("dom-addeventlistener")){_2b9={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_2ba){return e.button&_2ba;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{_2b9={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_2bb){return e.button==_2bb;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}dojo.mouseButtons=_2b9;function _2bc(type,_2bd){var _2be=function(node,_2bf){return on(node,type,function(evt){if(_2bd){return _2bd(evt,_2bf);}if(!dom.isDescendant(evt.relatedTarget,node)){return _2bf.call(this,evt);}});};_2be.bubble=function(_2c0){return _2bc(type,function(evt,_2c1){var _2c2=_2c0(evt.target);var _2c3=evt.relatedTarget;if(_2c2&&(_2c2!=(_2c3&&_2c3.nodeType==1&&_2c0(_2c3)))){return _2c1.call(_2c2,evt);}});};return _2be;};var _2c4;if(has("events-mousewheel")){_2c4="mousewheel";}else{_2c4=function(node,_2c5){return on(node,"DOMMouseScroll",function(evt){evt.wheelDelta=-evt.detail;_2c5.call(this,evt);});};}return {_eventHandler:_2bc,enter:_2bc("mouseover"),leave:_2bc("mouseout"),wheel:_2c4,isLeft:_2b9.isLeft,isMiddle:_2b9.isMiddle,isRight:_2b9.isRight};});},"dojo/_base/sniff":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){if(!1){return has;}dojo._name="browser";lang.mixin(dojo,{isBrowser:true,isFF:has("ff"),isIE:has("ie"),isKhtml:has("khtml"),isWebKit:has("webkit"),isMozilla:has("mozilla"),isMoz:has("mozilla"),isOpera:has("opera"),isSafari:has("safari"),isChrome:has("chrome"),isMac:has("mac"),isIos:has("ios"),isAndroid:has("android"),isWii:has("wii"),isQuirks:has("quirks"),isAir:has("air")});return has;});},"dojo/keys":function(){define(["./_base/kernel","./sniff"],function(dojo,has){return dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:has("webkit")?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:has("mac")&&!has("air")?(has("safari")?91:224):17};});},"dojo/_base/Deferred":function(){define(["./kernel","../Deferred","../promise/Promise","../errors/CancelError","../has","./lang","../when"],function(dojo,_2c6,_2c7,_2c8,has,lang,when){var _2c9=function(){};var _2ca=Object.freeze||function(){};var _2cb=dojo.Deferred=function(_2cc){var _2cd,_2ce,_2cf,_2d0,_2d1,head,_2d2;var _2d3=(this.promise=new _2c7());function _2d4(_2d5){if(_2ce){throw new Error("This deferred has already been resolved");}_2cd=_2d5;_2ce=true;_2d6();};function _2d6(){var _2d7;while(!_2d7&&_2d2){var _2d8=_2d2;_2d2=_2d2.next;if((_2d7=(_2d8.progress==_2c9))){_2ce=false;}var func=(_2d1?_2d8.error:_2d8.resolved);if(has("config-useDeferredInstrumentation")){if(_2d1&&_2c6.instrumentRejected){_2c6.instrumentRejected(_2cd,!!func);}}if(func){try{var _2d9=func(_2cd);if(_2d9&&typeof _2d9.then==="function"){_2d9.then(lang.hitch(_2d8.deferred,"resolve"),lang.hitch(_2d8.deferred,"reject"),lang.hitch(_2d8.deferred,"progress"));continue;}var _2da=_2d7&&_2d9===undefined;if(_2d7&&!_2da){_2d1=_2d9 instanceof Error;}_2d8.deferred[_2da&&_2d1?"reject":"resolve"](_2da?_2cd:_2d9);}catch(e){_2d8.deferred.reject(e);}}else{if(_2d1){_2d8.deferred.reject(_2cd);}else{_2d8.deferred.resolve(_2cd);}}}};this.isResolved=_2d3.isResolved=function(){return _2d0==0;};this.isRejected=_2d3.isRejected=function(){return _2d0==1;};this.isFulfilled=_2d3.isFulfilled=function(){return _2d0>=0;};this.isCanceled=_2d3.isCanceled=function(){return _2cf;};this.resolve=this.callback=function(_2db){this.fired=_2d0=0;this.results=[_2db,null];_2d4(_2db);};this.reject=this.errback=function(_2dc){_2d1=true;this.fired=_2d0=1;if(has("config-useDeferredInstrumentation")){if(_2c6.instrumentRejected){_2c6.instrumentRejected(_2dc,!!_2d2);}}_2d4(_2dc);this.results=[null,_2dc];};this.progress=function(_2dd){var _2de=_2d2;while(_2de){var _2df=_2de.progress;_2df&&_2df(_2dd);_2de=_2de.next;}};this.addCallbacks=function(_2e0,_2e1){this.then(_2e0,_2e1,_2c9);return this;};_2d3.then=this.then=function(_2e2,_2e3,_2e4){var _2e5=_2e4==_2c9?this:new _2cb(_2d3.cancel);var _2e6={resolved:_2e2,error:_2e3,progress:_2e4,deferred:_2e5};if(_2d2){head=head.next=_2e6;}else{_2d2=head=_2e6;}if(_2ce){_2d6();}return _2e5.promise;};var _2e7=this;_2d3.cancel=this.cancel=function(){if(!_2ce){var _2e8=_2cc&&_2cc(_2e7);if(!_2ce){if(!(_2e8 instanceof Error)){_2e8=new _2c8(_2e8);}_2e8.log=false;_2e7.reject(_2e8);}}_2cf=true;};_2ca(_2d3);};lang.extend(_2cb,{addCallback:function(_2e9){return this.addCallbacks(lang.hitch.apply(dojo,arguments));},addErrback:function(_2ea){return this.addCallbacks(null,lang.hitch.apply(dojo,arguments));},addBoth:function(_2eb){var _2ec=lang.hitch.apply(dojo,arguments);return this.addCallbacks(_2ec,_2ec);},fired:-1});_2cb.when=dojo.when=when;return _2cb;});},"dojo/Deferred":function(){define(["./has","./_base/lang","./errors/CancelError","./promise/Promise","./promise/instrumentation"],function(has,lang,_2ed,_2ee,_2ef){"use strict";var _2f0=0,_2f1=1,_2f2=2;var _2f3="This deferred has already been fulfilled.";var _2f4=Object.freeze||function(){};var _2f5=function(_2f6,type,_2f7,_2f8,_2f9){if(1){if(type===_2f2&&_2fa.instrumentRejected&&_2f6.length===0){_2fa.instrumentRejected(_2f7,false,_2f8,_2f9);}}for(var i=0;i<_2f6.length;i++){_2fb(_2f6[i],type,_2f7,_2f8);}};var _2fb=function(_2fc,type,_2fd,_2fe){var func=_2fc[type];var _2ff=_2fc.deferred;if(func){try{var _300=func(_2fd);if(type===_2f0){if(typeof _300!=="undefined"){_301(_2ff,type,_300);}}else{if(_300&&typeof _300.then==="function"){_2fc.cancel=_300.cancel;_300.then(_302(_2ff,_2f1),_302(_2ff,_2f2),_302(_2ff,_2f0));return;}_301(_2ff,_2f1,_300);}}catch(error){_301(_2ff,_2f2,error);}}else{_301(_2ff,type,_2fd);}if(1){if(type===_2f2&&_2fa.instrumentRejected){_2fa.instrumentRejected(_2fd,!!func,_2fe,_2ff.promise);}}};var _302=function(_303,type){return function(_304){_301(_303,type,_304);};};var _301=function(_305,type,_306){if(!_305.isCanceled()){switch(type){case _2f0:_305.progress(_306);break;case _2f1:_305.resolve(_306);break;case _2f2:_305.reject(_306);break;}}};var _2fa=function(_307){var _308=this.promise=new _2ee();var _309=this;var _30a,_30b,_30c;var _30d=false;var _30e=[];if(1&&Error.captureStackTrace){Error.captureStackTrace(_309,_2fa);Error.captureStackTrace(_308,_2fa);}this.isResolved=_308.isResolved=function(){return _30a===_2f1;};this.isRejected=_308.isRejected=function(){return _30a===_2f2;};this.isFulfilled=_308.isFulfilled=function(){return !!_30a;};this.isCanceled=_308.isCanceled=function(){return _30d;};this.progress=function(_30f,_310){if(!_30a){_2f5(_30e,_2f0,_30f,null,_309);return _308;}else{if(_310===true){throw new Error(_2f3);}else{return _308;}}};this.resolve=function(_311,_312){if(!_30a){_2f5(_30e,_30a=_2f1,_30b=_311,null,_309);_30e=null;return _308;}else{if(_312===true){throw new Error(_2f3);}else{return _308;}}};var _313=this.reject=function(_314,_315){if(!_30a){if(1&&Error.captureStackTrace){Error.captureStackTrace(_30c={},_313);}_2f5(_30e,_30a=_2f2,_30b=_314,_30c,_309);_30e=null;return _308;}else{if(_315===true){throw new Error(_2f3);}else{return _308;}}};this.then=_308.then=function(_316,_317,_318){var _319=[_318,_316,_317];_319.cancel=_308.cancel;_319.deferred=new _2fa(function(_31a){return _319.cancel&&_319.cancel(_31a);});if(_30a&&!_30e){_2fb(_319,_30a,_30b,_30c);}else{_30e.push(_319);}return _319.deferred.promise;};this.cancel=_308.cancel=function(_31b,_31c){if(!_30a){if(_307){var _31d=_307(_31b);_31b=typeof _31d==="undefined"?_31b:_31d;}_30d=true;if(!_30a){if(typeof _31b==="undefined"){_31b=new _2ed();}_313(_31b);return _31b;}else{if(_30a===_2f2&&_30b===_31b){return _31b;}}}else{if(_31c===true){throw new Error(_2f3);}}};_2f4(_308);};_2fa.prototype.toString=function(){return "[object Deferred]";};if(_2ef){_2ef(_2fa);}return _2fa;});},"dojo/errors/CancelError":function(){define(["./create"],function(_31e){return _31e("CancelError",null,null,{dojoType:"cancel",log:false});});},"dojo/errors/create":function(){define(["../_base/lang"],function(lang){return function(name,ctor,base,_31f){base=base||Error;var _320=function(_321){if(base===Error){if(Error.captureStackTrace){Error.captureStackTrace(this,_320);}var err=Error.call(this,_321),prop;for(prop in err){if(err.hasOwnProperty(prop)){this[prop]=err[prop];}}this.message=_321;this.stack=err.stack;}else{base.apply(this,arguments);}if(ctor){ctor.apply(this,arguments);}};_320.prototype=lang.delegate(base.prototype,_31f);_320.prototype.name=name;_320.prototype.constructor=_320;return _320;};});},"dojo/promise/Promise":function(){define(["../_base/lang"],function(lang){"use strict";function _322(){throw new TypeError("abstract");};return lang.extend(function Promise(){},{then:function(_323,_324,_325){_322();},cancel:function(_326,_327){_322();},isResolved:function(){_322();},isRejected:function(){_322();},isFulfilled:function(){_322();},isCanceled:function(){_322();},"finally":function(_328){return this.then(function(_329){var _32a=_328();if(_32a&&typeof _32a.then==="function"){return _32a.then(function(){return _329;});}return _329;},function(_32b){var _32c=_328();if(_32c&&typeof _32c.then==="function"){return _32c.then(function(){throw _32b;});}throw _32b;});},always:function(_32d){return this.then(_32d,_32d);},"catch":function(_32e){return this.then(null,_32e);},otherwise:function(_32f){return this.then(null,_32f);},trace:function(){return this;},traceRejected:function(){return this;},toString:function(){return "[object Promise]";}});});},"dojo/promise/instrumentation":function(){define(["./tracer","../has","../_base/lang","../_base/array"],function(_330,has,lang,_331){has.add("config-useDeferredInstrumentation","report-unhandled-rejections");function _332(_333,_334,_335){if(_333&&_333.log===false){return;}var _336="";if(_333&&_333.stack){_336+=_333.stack;}if(_334&&_334.stack){_336+="\n ----------------------------------------\n rejected"+_334.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ");}if(_335&&_335.stack){_336+="\n ----------------------------------------\n"+_335.stack;}console.error(_333,_336);};function _337(_338,_339,_33a,_33b){if(!_339){_332(_338,_33a,_33b);}};var _33c=[];var _33d=false;var _33e=1000;function _33f(_340,_341,_342,_343){if(!_331.some(_33c,function(obj){if(obj.error===_340){if(_341){obj.handled=true;}return true;}})){_33c.push({error:_340,rejection:_342,handled:_341,deferred:_343,timestamp:new Date().getTime()});}if(!_33d){_33d=setTimeout(_344,_33e);}};function _344(){var now=new Date().getTime();var _345=now-_33e;_33c=_331.filter(_33c,function(obj){if(obj.timestamp<_345){if(!obj.handled){_332(obj.error,obj.rejection,obj.deferred);}return false;}return true;});if(_33c.length){_33d=setTimeout(_344,_33c[0].timestamp+_33e-now);}else{_33d=false;}};return function(_346){var _347=has("config-useDeferredInstrumentation");if(_347){_330.on("resolved",lang.hitch(console,"log","resolved"));_330.on("rejected",lang.hitch(console,"log","rejected"));_330.on("progress",lang.hitch(console,"log","progress"));var args=[];if(typeof _347==="string"){args=_347.split(",");_347=args.shift();}if(_347==="report-rejections"){_346.instrumentRejected=_337;}else{if(_347==="report-unhandled-rejections"||_347===true||_347===1){_346.instrumentRejected=_33f;_33e=parseInt(args[0],10)||_33e;}else{throw new Error("Unsupported instrumentation usage <"+_347+">");}}}};});},"dojo/promise/tracer":function(){define(["../_base/lang","./Promise","../Evented"],function(lang,_348,_349){"use strict";var _34a=new _349;var emit=_34a.emit;_34a.emit=null;function _34b(args){setTimeout(function(){emit.apply(_34a,args);},0);};_348.prototype.trace=function(){var args=lang._toArray(arguments);this.then(function(_34c){_34b(["resolved",_34c].concat(args));},function(_34d){_34b(["rejected",_34d].concat(args));},function(_34e){_34b(["progress",_34e].concat(args));});return this;};_348.prototype.traceRejected=function(){var args=lang._toArray(arguments);this.otherwise(function(_34f){_34b(["rejected",_34f].concat(args));});return this;};return _34a;});},"dojo/when":function(){define(["./Deferred","./promise/Promise"],function(_350,_351){"use strict";return function when(_352,_353,_354,_355){var _356=_352&&typeof _352.then==="function";var _357=_356&&_352 instanceof _351;if(!_356){if(arguments.length>1){return _353?_353(_352):_352;}else{return new _350().resolve(_352);}}else{if(!_357){var _358=new _350(_352.cancel);_352.then(_358.resolve,_358.reject,_358.progress);_352=_358.promise;}}if(_353||_354||_355){return _352.then(_353,_354,_355);}return _352;};});},"dojo/_base/json":function(){define(["./kernel","../json"],function(dojo,json){dojo.fromJson=function(js){return eval("("+js+")");};dojo._escapeString=json.stringify;dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_359){return json.stringify(it,function(key,_35a){if(_35a){var tf=_35a.__json__||_35a.json;if(typeof tf=="function"){return tf.call(_35a);}}return _35a;},_359&&dojo.toJsonIndentStr);};return dojo;});},"dojo/json":function(){define(["./has"],function(has){"use strict";var _35b=typeof JSON!="undefined";has.add("json-parse",_35b);has.add("json-stringify",_35b&&JSON.stringify({a:0},function(k,v){return v||1;})=="{\"a\":1}");if(has("json-stringify")){return JSON;}else{var _35c=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};return {parse:has("json-parse")?JSON.parse:function(str,_35d){if(_35d&&!/^([\s\[\{]*(?:"(?:\\.|[^"])*"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(str)){throw new SyntaxError("Invalid characters in JSON");}return eval("("+str+")");},stringify:function(_35e,_35f,_360){var _361;if(typeof _35f=="string"){_360=_35f;_35f=null;}function _362(it,_363,key){if(_35f){it=_35f(key,it);}var val,_364=typeof it;if(_364=="number"){return isFinite(it)?it+"":"null";}if(_364=="boolean"){return it+"";}if(it===null){return "null";}if(typeof it=="string"){return _35c(it);}if(_364=="function"||_364=="undefined"){return _361;}if(typeof it.toJSON=="function"){return _362(it.toJSON(key),_363,key);}if(it instanceof Date){return "\"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z\"".replace(/\{(\w+)(\+)?\}/g,function(t,prop,plus){var num=it["getUTC"+prop]()+(plus?1:0);return num<10?"0"+num:num;});}if(it.valueOf()!==it){return _362(it.valueOf(),_363,key);}var _365=_360?(_363+_360):"";var sep=_360?" ":"";var _366=_360?"\n":"";if(it instanceof Array){var itl=it.length,res=[];for(key=0;key<itl;key++){var obj=it[key];val=_362(obj,_365,key);if(typeof val!="string"){val="null";}res.push(_366+_365+val);}return "["+res.join(",")+_366+_363+"]";}var _367=[];for(key in it){var _368;if(it.hasOwnProperty(key)){if(typeof key=="number"){_368="\""+key+"\"";}else{if(typeof key=="string"){_368=_35c(key);}else{continue;}}val=_362(it[key],_365,key);if(typeof val!="string"){continue;}_367.push(_366+_365+_368+":"+sep+val);}}return "{"+_367.join(",")+_366+_363+"}";};return _362(_35e,"","");}};}});},"dojo/_base/Color":function(){define(["./kernel","./lang","./array","./config"],function(dojo,lang,_369,_36a){var _36b=dojo.Color=function(_36c){if(_36c){this.setColor(_36c);}};_36b.named={"black":[0,0,0],"silver":[192,192,192],"gray":[128,128,128],"white":[255,255,255],"maroon":[128,0,0],"red":[255,0,0],"purple":[128,0,128],"fuchsia":[255,0,255],"green":[0,128,0],"lime":[0,255,0],"olive":[128,128,0],"yellow":[255,255,0],"navy":[0,0,128],"blue":[0,0,255],"teal":[0,128,128],"aqua":[0,255,255],"transparent":_36a.transparentColor||[0,0,0,0]};lang.extend(_36b,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_36d){if(lang.isString(_36d)){_36b.fromString(_36d,this);}else{if(lang.isArray(_36d)){_36b.fromArray(_36d,this);}else{this._set(_36d.r,_36d.g,_36d.b,_36d.a);if(!(_36d instanceof _36b)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var arr=_369.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+arr.join("");},toCss:function(_36e){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_36e?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});_36b.blendColors=dojo.blendColors=function(_36f,end,_370,obj){var t=obj||new _36b();t.r=Math.round(_36f.r+(end.r-_36f.r)*_370);t.g=Math.round(_36f.g+(end.g-_36f.g)*_370);t.b=Math.round(_36f.b+(end.b-_36f.b)*_370);t.a=_36f.a+(end.a-_36f.a)*_370;return t.sanitize();};_36b.fromRgb=dojo.colorFromRgb=function(_371,obj){var m=_371.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&_36b.fromArray(m[1].split(/\s*,\s*/),obj);};_36b.fromHex=dojo.colorFromHex=function(_372,obj){var t=obj||new _36b(),bits=(_372.length==4)?4:8,mask=(1<<bits)-1;_372=Number("0x"+_372.substr(1));if(isNaN(_372)){return null;}_369.forEach(["b","g","r"],function(x){var c=_372&mask;_372>>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};_36b.fromArray=dojo.colorFromArray=function(a,obj){var t=obj||new _36b();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};_36b.fromString=dojo.colorFromString=function(str,obj){var a=_36b.named[str];return a&&_36b.fromArray(a,obj)||_36b.fromRgb(str,obj)||_36b.fromHex(str,obj);};return _36b;});},"dojo/_base/browser":function(){if(require.has){require.has.add("config-selectorEngine","acme");}define(["../ready","./kernel","./connect","./unload","./window","./event","./html","./NodeList","../query","./xhr","./fx"],function(dojo){return dojo;});},"dojo/_base/unload":function(){define(["./kernel","./lang","../on"],function(dojo,lang,on){var win=window;var _373={addOnWindowUnload:function(obj,_374){if(!dojo.windowUnloaded){on(win,"unload",(dojo.windowUnloaded=function(){}));}on(win,"unload",lang.hitch(obj,_374));},addOnUnload:function(obj,_375){on(win,"beforeunload",lang.hitch(obj,_375));}};dojo.addOnWindowUnload=_373.addOnWindowUnload;dojo.addOnUnload=_373.addOnUnload;return _373;});},"dojo/_base/html":function(){define(["./kernel","../dom","../dom-style","../dom-attr","../dom-prop","../dom-class","../dom-construct","../dom-geometry"],function(dojo,dom,_376,attr,prop,cls,ctr,geom){dojo.byId=dom.byId;dojo.isDescendant=dom.isDescendant;dojo.setSelectable=dom.setSelectable;dojo.getAttr=attr.get;dojo.setAttr=attr.set;dojo.hasAttr=attr.has;dojo.removeAttr=attr.remove;dojo.getNodeProp=attr.getNodeProp;dojo.attr=function(node,name,_377){if(arguments.length==2){return attr[typeof name=="string"?"get":"set"](node,name);}return attr.set(node,name,_377);};dojo.hasClass=cls.contains;dojo.addClass=cls.add;dojo.removeClass=cls.remove;dojo.toggleClass=cls.toggle;dojo.replaceClass=cls.replace;dojo._toDom=dojo.toDom=ctr.toDom;dojo.place=ctr.place;dojo.create=ctr.create;dojo.empty=function(node){ctr.empty(node);};dojo._destroyElement=dojo.destroy=function(node){ctr.destroy(node);};dojo._getPadExtents=dojo.getPadExtents=geom.getPadExtents;dojo._getBorderExtents=dojo.getBorderExtents=geom.getBorderExtents;dojo._getPadBorderExtents=dojo.getPadBorderExtents=geom.getPadBorderExtents;dojo._getMarginExtents=dojo.getMarginExtents=geom.getMarginExtents;dojo._getMarginSize=dojo.getMarginSize=geom.getMarginSize;dojo._getMarginBox=dojo.getMarginBox=geom.getMarginBox;dojo.setMarginBox=geom.setMarginBox;dojo._getContentBox=dojo.getContentBox=geom.getContentBox;dojo.setContentSize=geom.setContentSize;dojo._isBodyLtr=dojo.isBodyLtr=geom.isBodyLtr;dojo._docScroll=dojo.docScroll=geom.docScroll;dojo._getIeDocumentElementOffset=dojo.getIeDocumentElementOffset=geom.getIeDocumentElementOffset;dojo._fixIeBiDiScrollLeft=dojo.fixIeBiDiScrollLeft=geom.fixIeBiDiScrollLeft;dojo.position=geom.position;dojo.marginBox=function marginBox(node,box){return box?geom.setMarginBox(node,box):geom.getMarginBox(node);};dojo.contentBox=function contentBox(node,box){return box?geom.setContentSize(node,box):geom.getContentBox(node);};dojo.coords=function(node,_378){dojo.deprecated("dojo.coords()","Use dojo.position() or dojo.marginBox().");node=dom.byId(node);var s=_376.getComputedStyle(node),mb=geom.getMarginBox(node,s);var abs=geom.position(node,_378);mb.x=abs.x;mb.y=abs.y;return mb;};dojo.getProp=prop.get;dojo.setProp=prop.set;dojo.prop=function(node,name,_379){if(arguments.length==2){return prop[typeof name=="string"?"get":"set"](node,name);}return prop.set(node,name,_379);};dojo.getStyle=_376.get;dojo.setStyle=_376.set;dojo.getComputedStyle=_376.getComputedStyle;dojo.__toPixelValue=dojo.toPixelValue=_376.toPixelValue;dojo.style=function(node,name,_37a){switch(arguments.length){case 1:return _376.get(node);case 2:return _376[typeof name=="string"?"get":"set"](node,name);}return _376.set(node,name,_37a);};return dojo;});},"dojo/dom-attr":function(){define(["exports","./sniff","./_base/lang","./dom","./dom-style","./dom-prop"],function(_37b,has,lang,dom,_37c,prop){var _37d={innerHTML:1,textContent:1,className:1,htmlFor:has("ie")?1:0,value:1},_37e={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};function _37f(node,name){var attr=node.getAttributeNode&&node.getAttributeNode(name);return !!attr&&attr.specified;};_37b.has=function hasAttr(node,name){var lc=name.toLowerCase();return !!_37d[prop.names[lc]||name]||_37f(dom.byId(node),_37e[lc]||name);};_37b.get=function getAttr(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_380=prop.names[lc]||name,_381=_37d[_380],_382=node[_380];if(_381&&typeof _382!="undefined"){return _382;}if(_380=="textContent"){return prop.get(node,_380);}if(_380!="href"&&(typeof _382=="boolean"||lang.isFunction(_382))){return _382;}var _383=_37e[lc]||name;return _37f(node,_383)?node.getAttribute(_383):null;};_37b.set=function setAttr(node,name,_384){node=dom.byId(node);if(arguments.length==2){for(var x in name){_37b.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_385=prop.names[lc]||name,_386=_37d[_385];if(_385=="style"&&typeof _384!="string"){_37c.set(node,_384);return node;}if(_386||typeof _384=="boolean"||lang.isFunction(_384)){return prop.set(node,name,_384);}node.setAttribute(_37e[lc]||name,_384);return node;};_37b.remove=function removeAttr(node,name){dom.byId(node).removeAttribute(_37e[name.toLowerCase()]||name);};_37b.getNodeProp=function getNodeProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_387=prop.names[lc]||name;if((_387 in node)&&_387!="href"){return node[_387];}var _388=_37e[lc]||name;return _37f(node,_388)?node.getAttribute(_388):null;};});},"dojo/dom-prop":function(){define(["exports","./_base/kernel","./sniff","./_base/lang","./dom","./dom-style","./dom-construct","./_base/connect"],function(_389,dojo,has,lang,dom,_38a,ctr,conn){var _38b={},_38c=1,_38d=dojo._scopeName+"attrid";has.add("dom-textContent",function(_38e,doc,_38f){return "textContent" in _38f;});_389.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",textcontent:"textContent",valuetype:"valueType"};function _390(node){var text="",ch=node.childNodes;for(var i=0,n;n=ch[i];i++){if(n.nodeType!=8){if(n.nodeType==1){text+=_390(n);}else{text+=n.nodeValue;}}}return text;};_389.get=function getProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_391=_389.names[lc]||name;if(_391=="textContent"&&!has("dom-textContent")){return _390(node);}return node[_391];};_389.set=function setProp(node,name,_392){node=dom.byId(node);var l=arguments.length;if(l==2&&typeof name!="string"){for(var x in name){_389.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_393=_389.names[lc]||name;if(_393=="style"&&typeof _392!="string"){_38a.set(node,_392);return node;}if(_393=="innerHTML"){if(has("ie")&&node.tagName.toLowerCase() in {col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}){ctr.empty(node);node.appendChild(ctr.toDom(_392,node.ownerDocument));}else{node[_393]=_392;}return node;}if(_393=="textContent"&&!has("dom-textContent")){ctr.empty(node);node.appendChild(node.ownerDocument.createTextNode(_392));return node;}if(lang.isFunction(_392)){var _394=node[_38d];if(!_394){_394=_38c++;node[_38d]=_394;}if(!_38b[_394]){_38b[_394]={};}var h=_38b[_394][_393];if(h){conn.disconnect(h);}else{try{delete node[_393];}catch(e){}}if(_392){_38b[_394][_393]=conn.connect(node,_393,_392);}else{node[_393]=null;}return node;}node[_393]=_392;return node;};});},"dojo/dom-construct":function(){define(["exports","./_base/kernel","./sniff","./_base/window","./dom","./dom-attr"],function(_395,dojo,has,win,dom,attr){var _396={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_397=/<\s*([\w\:]+)/,_398={},_399=0,_39a="__"+dojo._scopeName+"ToDomId";for(var _39b in _396){if(_396.hasOwnProperty(_39b)){var tw=_396[_39b];tw.pre=_39b=="option"?"<select multiple=\"multiple\">":"<"+tw.join("><")+">";tw.post="</"+tw.reverse().join("></")+">";}}var _39c;if(has("ie")<=8){_39c=function(doc){doc.__dojo_html5_tested="yes";var div=_39d("div",{innerHTML:"<nav>a</nav>",style:{visibility:"hidden"}},doc.body);if(div.childNodes.length!==1){("abbr article aside audio canvas details figcaption figure footer header "+"hgroup mark meter nav output progress section summary time video").replace(/\b\w+\b/g,function(n){doc.createElement(n);});}_39e(div);};}function _39f(node,ref){var _3a0=ref.parentNode;if(_3a0){_3a0.insertBefore(node,ref);}};function _3a1(node,ref){var _3a2=ref.parentNode;if(_3a2){if(_3a2.lastChild==ref){_3a2.appendChild(node);}else{_3a2.insertBefore(node,ref.nextSibling);}}};_395.toDom=function toDom(frag,doc){doc=doc||win.doc;var _3a3=doc[_39a];if(!_3a3){doc[_39a]=_3a3=++_399+"";_398[_3a3]=doc.createElement("div");}if(has("ie")<=8){if(!doc.__dojo_html5_tested&&doc.body){_39c(doc);}}frag+="";var _3a4=frag.match(_397),tag=_3a4?_3a4[1].toLowerCase():"",_3a5=_398[_3a3],wrap,i,fc,df;if(_3a4&&_396[tag]){wrap=_396[tag];_3a5.innerHTML=wrap.pre+frag+wrap.post;for(i=wrap.length;i;--i){_3a5=_3a5.firstChild;}}else{_3a5.innerHTML=frag;}if(_3a5.childNodes.length==1){return _3a5.removeChild(_3a5.firstChild);}df=doc.createDocumentFragment();while((fc=_3a5.firstChild)){df.appendChild(fc);}return df;};_395.place=function place(node,_3a6,_3a7){_3a6=dom.byId(_3a6);if(typeof node=="string"){node=/^\s*</.test(node)?_395.toDom(node,_3a6.ownerDocument):dom.byId(node);}if(typeof _3a7=="number"){var cn=_3a6.childNodes;if(!cn.length||cn.length<=_3a7){_3a6.appendChild(node);}else{_39f(node,cn[_3a7<0?0:_3a7]);}}else{switch(_3a7){case "before":_39f(node,_3a6);break;case "after":_3a1(node,_3a6);break;case "replace":_3a6.parentNode.replaceChild(node,_3a6);break;case "only":_395.empty(_3a6);_3a6.appendChild(node);break;case "first":if(_3a6.firstChild){_39f(node,_3a6.firstChild);break;}default:_3a6.appendChild(node);}}return node;};var _39d=_395.create=function _39d(tag,_3a8,_3a9,pos){var doc=win.doc;if(_3a9){_3a9=dom.byId(_3a9);doc=_3a9.ownerDocument;}if(typeof tag=="string"){tag=doc.createElement(tag);}if(_3a8){attr.set(tag,_3a8);}if(_3a9){_395.place(tag,_3a9,pos);}return tag;};function _3aa(node){if("innerHTML" in node){try{node.innerHTML="";return;}catch(e){}}for(var c;c=node.lastChild;){node.removeChild(c);}};_395.empty=function empty(node){_3aa(dom.byId(node));};function _3ab(node,_3ac){if(node.firstChild){_3aa(node);}if(_3ac){has("ie")&&_3ac.canHaveChildren&&"removeNode" in node?node.removeNode(false):_3ac.removeChild(node);}};var _39e=_395.destroy=function _39e(node){node=dom.byId(node);if(!node){return;}_3ab(node,node.parentNode);};});},"dojo/dom-class":function(){define(["./_base/lang","./_base/array","./dom"],function(lang,_3ad,dom){var _3ae="className";var cls,_3af=/\s+/,a1=[""];function _3b0(s){if(typeof s=="string"||s instanceof String){if(s&&!_3af.test(s)){a1[0]=s;return a1;}var a=s.split(_3af);if(a.length&&!a[0]){a.shift();}if(a.length&&!a[a.length-1]){a.pop();}return a;}if(!s){return [];}return _3ad.filter(s,function(x){return x;});};var _3b1={};cls={contains:function containsClass(node,_3b2){return ((" "+dom.byId(node)[_3ae]+" ").indexOf(" "+_3b2+" ")>=0);},add:function addClass(node,_3b3){node=dom.byId(node);_3b3=_3b0(_3b3);var cls=node[_3ae],_3b4;cls=cls?" "+cls+" ":" ";_3b4=cls.length;for(var i=0,len=_3b3.length,c;i<len;++i){c=_3b3[i];if(c&&cls.indexOf(" "+c+" ")<0){cls+=c+" ";}}if(_3b4<cls.length){node[_3ae]=cls.substr(1,cls.length-2);}},remove:function removeClass(node,_3b5){node=dom.byId(node);var cls;if(_3b5!==undefined){_3b5=_3b0(_3b5);cls=" "+node[_3ae]+" ";for(var i=0,len=_3b5.length;i<len;++i){cls=cls.replace(" "+_3b5[i]+" "," ");}cls=lang.trim(cls);}else{cls="";}if(node[_3ae]!=cls){node[_3ae]=cls;}},replace:function replaceClass(node,_3b6,_3b7){node=dom.byId(node);_3b1[_3ae]=node[_3ae];cls.remove(_3b1,_3b7);cls.add(_3b1,_3b6);if(node[_3ae]!==_3b1[_3ae]){node[_3ae]=_3b1[_3ae];}},toggle:function toggleClass(node,_3b8,_3b9){node=dom.byId(node);if(_3b9===undefined){_3b8=_3b0(_3b8);for(var i=0,len=_3b8.length,c;i<len;++i){c=_3b8[i];cls[cls.contains(node,c)?"remove":"add"](node,c);}}else{cls[_3b9?"add":"remove"](node,_3b8);}return _3b9;}};return cls;});},"dojo/_base/NodeList":function(){define(["./kernel","../query","./array","./html","../NodeList-dom"],function(dojo,_3ba,_3bb){var _3bc=_3ba.NodeList,nlp=_3bc.prototype;nlp.connect=_3bc._adaptAsForEach(function(){return dojo.connect.apply(this,arguments);});nlp.coords=_3bc._adaptAsMap(dojo.coords);_3bc.events=["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"];_3bb.forEach(_3bc.events,function(evt){var _3bd="on"+evt;nlp[_3bd]=function(a,b){return this.connect(_3bd,a,b);};});dojo.NodeList=_3bc;return _3bc;});},"dojo/query":function(){define(["./_base/kernel","./has","./dom","./on","./_base/array","./_base/lang","./selector/_loader","./selector/_loader!default"],function(dojo,has,dom,on,_3be,lang,_3bf,_3c0){"use strict";has.add("array-extensible",function(){return lang.delegate([],{length:1}).length==1&&!has("bug-for-in-skips-shadowed");});var ap=Array.prototype,aps=ap.slice,apc=ap.concat,_3c1=_3be.forEach;var tnl=function(a,_3c2,_3c3){var _3c4=new (_3c3||this._NodeListCtor||nl)(a);return _3c2?_3c4._stash(_3c2):_3c4;};var _3c5=function(f,a,o){a=[0].concat(aps.call(a,0));o=o||dojo.global;return function(node){a[0]=node;return f.apply(o,a);};};var _3c6=function(f,o){return function(){this.forEach(_3c5(f,arguments,o));return this;};};var _3c7=function(f,o){return function(){return this.map(_3c5(f,arguments,o));};};var _3c8=function(f,o){return function(){return this.filter(_3c5(f,arguments,o));};};var _3c9=function(f,g,o){return function(){var a=arguments,body=_3c5(f,a,o);if(g.call(o||dojo.global,a)){return this.map(body);}this.forEach(body);return this;};};var _3ca=function(_3cb){var _3cc=this instanceof nl&&has("array-extensible");if(typeof _3cb=="number"){_3cb=Array(_3cb);}var _3cd=(_3cb&&"length" in _3cb)?_3cb:arguments;if(_3cc||!_3cd.sort){var _3ce=_3cc?this:[],l=_3ce.length=_3cd.length;for(var i=0;i<l;i++){_3ce[i]=_3cd[i];}if(_3cc){return _3ce;}_3cd=_3ce;}lang._mixin(_3cd,nlp);_3cd._NodeListCtor=function(_3cf){return nl(_3cf);};return _3cd;};var nl=_3ca,nlp=nl.prototype=has("array-extensible")?[]:{};nl._wrap=nlp._wrap=tnl;nl._adaptAsMap=_3c7;nl._adaptAsForEach=_3c6;nl._adaptAsFilter=_3c8;nl._adaptWithCondition=_3c9;_3c1(["slice","splice"],function(name){var f=ap[name];nlp[name]=function(){return this._wrap(f.apply(this,arguments),name=="slice"?this:null);};});_3c1(["indexOf","lastIndexOf","every","some"],function(name){var f=_3be[name];nlp[name]=function(){return f.apply(dojo,[this].concat(aps.call(arguments,0)));};});lang.extend(_3ca,{constructor:nl,_NodeListCtor:nl,toString:function(){return this.join(",");},_stash:function(_3d0){this._parent=_3d0;return this;},on:function(_3d1,_3d2){var _3d3=this.map(function(node){return on(node,_3d1,_3d2);});_3d3.remove=function(){for(var i=0;i<_3d3.length;i++){_3d3[i].remove();}};return _3d3;},end:function(){if(this._parent){return this._parent;}else{return new this._NodeListCtor(0);}},concat:function(item){var t=aps.call(this,0),m=_3be.map(arguments,function(a){return aps.call(a,0);});return this._wrap(apc.apply(t,m),this);},map:function(func,obj){return this._wrap(_3be.map(this,func,obj),this);},forEach:function(_3d4,_3d5){_3c1(this,_3d4,_3d5);return this;},filter:function(_3d6){var a=arguments,_3d7=this,_3d8=0;if(typeof _3d6=="string"){_3d7=_3d9._filterResult(this,a[0]);if(a.length==1){return _3d7._stash(this);}_3d8=1;}return this._wrap(_3be.filter(_3d7,a[_3d8],a[_3d8+1]),this);},instantiate:function(_3da,_3db){var c=lang.isFunction(_3da)?_3da:lang.getObject(_3da);_3db=_3db||{};return this.forEach(function(node){new c(_3db,node);});},at:function(){var t=new this._NodeListCtor(0);_3c1(arguments,function(i){if(i<0){i=this.length+i;}if(this[i]){t.push(this[i]);}},this);return t._stash(this);}});function _3dc(_3dd,_3de){var _3df=function(_3e0,root){if(typeof root=="string"){root=dom.byId(root);if(!root){return new _3de([]);}}var _3e1=typeof _3e0=="string"?_3dd(_3e0,root):_3e0?(_3e0.end&&_3e0.on)?_3e0:[_3e0]:[];if(_3e1.end&&_3e1.on){return _3e1;}return new _3de(_3e1);};_3df.matches=_3dd.match||function(node,_3e2,root){return _3df.filter([node],_3e2,root).length>0;};_3df.filter=_3dd.filter||function(_3e3,_3e4,root){return _3df(_3e4,root).filter(function(node){return _3be.indexOf(_3e3,node)>-1;});};if(typeof _3dd!="function"){var _3e5=_3dd.search;_3dd=function(_3e6,root){return _3e5(root||document,_3e6);};}return _3df;};var _3d9=_3dc(_3c0,_3ca);dojo.query=_3dc(_3c0,function(_3e7){return _3ca(_3e7);});_3d9.load=function(id,_3e8,_3e9){_3bf.load(id,_3e8,function(_3ea){_3e9(_3dc(_3ea,_3ca));});};dojo._filterQueryResult=_3d9._filterResult=function(_3eb,_3ec,root){return new _3ca(_3d9.filter(_3eb,_3ec,root));};dojo.NodeList=_3d9.NodeList=_3ca;return _3d9;});},"dojo/selector/_loader":function(){define(["../has","require"],function(has,_3ed){"use strict";if(typeof document!=="undefined"){var _3ee=document.createElement("div");has.add("dom-qsa2.1",!!_3ee.querySelectorAll);has.add("dom-qsa3",function(){try{_3ee.innerHTML="<p class='TEST'></p>";return _3ee.querySelectorAll(".TEST:empty").length==1;}catch(e){}});}var _3ef;var acme="./acme",lite="./lite";return {load:function(id,_3f0,_3f1,_3f2){if(_3f2&&_3f2.isBuild){_3f1();return;}var req=_3ed;id=id=="default"?has("config-selectorEngine")||"css3":id;id=id=="css2"||id=="lite"?lite:id=="css2.1"?has("dom-qsa2.1")?lite:acme:id=="css3"?has("dom-qsa3")?lite:acme:id=="acme"?acme:(req=_3f0)&&id;if(id.charAt(id.length-1)=="?"){id=id.substring(0,id.length-1);var _3f3=true;}if(_3f3&&(has("dom-compliant-qsa")||_3ef)){return _3f1(_3ef);}req([id],function(_3f4){if(id!="./lite"){_3ef=_3f4;}_3f1(_3f4);});}};});},"dojo/NodeList-dom":function(){define(["./_base/kernel","./query","./_base/array","./_base/lang","./dom-class","./dom-construct","./dom-geometry","./dom-attr","./dom-style"],function(dojo,_3f5,_3f6,lang,_3f7,_3f8,_3f9,_3fa,_3fb){var _3fc=function(a){return a.length==1&&(typeof a[0]=="string");};var _3fd=function(node){var p=node.parentNode;if(p){p.removeChild(node);}};var _3fe=_3f5.NodeList,awc=_3fe._adaptWithCondition,aafe=_3fe._adaptAsForEach,aam=_3fe._adaptAsMap;function _3ff(_400){return function(node,name,_401){if(arguments.length==2){return _400[typeof name=="string"?"get":"set"](node,name);}return _400.set(node,name,_401);};};lang.extend(_3fe,{_normalize:function(_402,_403){var _404=_402.parse===true;if(typeof _402.template=="string"){var _405=_402.templateFunc||(dojo.string&&dojo.string.substitute);_402=_405?_405(_402.template,_402):_402;}var type=(typeof _402);if(type=="string"||type=="number"){_402=_3f8.toDom(_402,(_403&&_403.ownerDocument));if(_402.nodeType==11){_402=lang._toArray(_402.childNodes);}else{_402=[_402];}}else{if(!lang.isArrayLike(_402)){_402=[_402];}else{if(!lang.isArray(_402)){_402=lang._toArray(_402);}}}if(_404){_402._runParse=true;}return _402;},_cloneNode:function(node){return node.cloneNode(true);},_place:function(ary,_406,_407,_408){if(_406.nodeType!=1&&_407=="only"){return;}var _409=_406,_40a;var _40b=ary.length;for(var i=_40b-1;i>=0;i--){var node=(_408?this._cloneNode(ary[i]):ary[i]);if(ary._runParse&&dojo.parser&&dojo.parser.parse){if(!_40a){_40a=_409.ownerDocument.createElement("div");}_40a.appendChild(node);dojo.parser.parse(_40a);node=_40a.firstChild;while(_40a.firstChild){_40a.removeChild(_40a.firstChild);}}if(i==_40b-1){_3f8.place(node,_409,_407);}else{_409.parentNode.insertBefore(node,_409);}_409=node;}},position:aam(_3f9.position),attr:awc(_3ff(_3fa),_3fc),style:awc(_3ff(_3fb),_3fc),addClass:aafe(_3f7.add),removeClass:aafe(_3f7.remove),toggleClass:aafe(_3f7.toggle),replaceClass:aafe(_3f7.replace),empty:aafe(_3f8.empty),removeAttr:aafe(_3fa.remove),marginBox:aam(_3f9.getMarginBox),place:function(_40c,_40d){var item=_3f5(_40c)[0];return this.forEach(function(node){_3f8.place(node,item,_40d);});},orphan:function(_40e){return (_40e?_3f5._filterResult(this,_40e):this).forEach(_3fd);},adopt:function(_40f,_410){return _3f5(_40f).place(this[0],_410)._stash(this);},query:function(_411){if(!_411){return this;}var ret=new _3fe;this.map(function(node){_3f5(_411,node).forEach(function(_412){if(_412!==undefined){ret.push(_412);}});});return ret._stash(this);},filter:function(_413){var a=arguments,_414=this,_415=0;if(typeof _413=="string"){_414=_3f5._filterResult(this,a[0]);if(a.length==1){return _414._stash(this);}_415=1;}return this._wrap(_3f6.filter(_414,a[_415],a[_415+1]),this);},addContent:function(_416,_417){_416=this._normalize(_416,this[0]);for(var i=0,node;(node=this[i]);i++){if(_416.length){this._place(_416,node,_417,i>0);}else{_3f8.empty(node);}}return this;}});return _3fe;});},"dojo/_base/xhr":function(){define(["./kernel","./sniff","require","../io-query","../dom","../dom-form","./Deferred","./config","./json","./lang","./array","../on","../aspect","../request/watch","../request/xhr","../request/util"],function(dojo,has,_418,ioq,dom,_419,_41a,_41b,json,lang,_41c,on,_41d,_41e,_41f,util){dojo._xhrObj=_41f._create;var cfg=dojo.config;dojo.objectToQuery=ioq.objectToQuery;dojo.queryToObject=ioq.queryToObject;dojo.fieldToObject=_419.fieldToObject;dojo.formToObject=_419.toObject;dojo.formToQuery=_419.toQuery;dojo.formToJson=_419.toJson;dojo._blockAsync=false;var _420=dojo._contentHandlers=dojo.contentHandlers={"text":function(xhr){return xhr.responseText;},"json":function(xhr){return json.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!_41b.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _421=xhr.responseText;var _422=_421.indexOf("/*");var _423=_421.lastIndexOf("*/");if(_422==-1||_423==-1){throw new Error("JSON was not comment filtered");}return json.fromJson(_421.substring(_422+2,_423));},"javascript":function(xhr){return dojo.eval(xhr.responseText);},"xml":function(xhr){var _424=xhr.responseXML;if(_424&&has("dom-qsa2.1")&&!_424.querySelectorAll&&has("dom-parser")){_424=new DOMParser().parseFromString(xhr.responseText,"application/xml");}if(has("ie")){if((!_424||!_424.documentElement)){var ms=function(n){return "MSXML"+n+".DOMDocument";};var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];_41c.some(dp,function(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(xhr.responseText);_424=dom;}catch(e){return false;}return true;});}}return _424;},"json-comment-optional":function(xhr){if(xhr.responseText&&/^[^{\[]*\/\*/.test(xhr.responseText)){return _420["json-comment-filtered"](xhr);}else{return _420["json"](xhr);}}};dojo._ioSetArgs=function(args,_425,_426,_427){var _428={args:args,url:args.url};var _429=null;if(args.form){var form=dom.byId(args.form);var _42a=form.getAttributeNode("action");_428.url=_428.url||(_42a?_42a.value:(dojo.doc?dojo.doc.URL:null));_429=_419.toObject(form);}var _42b={};if(_429){lang.mixin(_42b,_429);}if(args.content){lang.mixin(_42b,args.content);}if(args.preventCache){_42b["dojo.preventCache"]=new Date().valueOf();}_428.query=ioq.objectToQuery(_42b);_428.handleAs=args.handleAs||"text";var d=new _41a(function(dfd){dfd.canceled=true;_425&&_425(dfd);var err=dfd.ioArgs.error;if(!err){err=new Error("request cancelled");err.dojoType="cancel";dfd.ioArgs.error=err;}return err;});d.addCallback(_426);var ld=args.load;if(ld&&lang.isFunction(ld)){d.addCallback(function(_42c){return ld.call(args,_42c,_428);});}var err=args.error;if(err&&lang.isFunction(err)){d.addErrback(function(_42d){return err.call(args,_42d,_428);});}var _42e=args.handle;if(_42e&&lang.isFunction(_42e)){d.addBoth(function(_42f){return _42e.call(args,_42f,_428);});}d.addErrback(function(_430){return _427(_430,d);});if(cfg.ioPublish&&dojo.publish&&_428.args.ioPublish!==false){d.addCallbacks(function(res){dojo.publish("/dojo/io/load",[d,res]);return res;},function(res){dojo.publish("/dojo/io/error",[d,res]);return res;});d.addBoth(function(res){dojo.publish("/dojo/io/done",[d,res]);return res;});}d.ioArgs=_428;return d;};var _431=function(dfd){var ret=_420[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return ret===undefined?null:ret;};var _432=function(_433,dfd){if(!dfd.ioArgs.args.failOk){console.error(_433);}return _433;};var _434=function(dfd){if(_435<=0){_435=0;if(cfg.ioPublish&&dojo.publish&&(!dfd||dfd&&dfd.ioArgs.args.ioPublish!==false)){dojo.publish("/dojo/io/stop");}}};var _435=0;_41d.after(_41e,"_onAction",function(){_435-=1;});_41d.after(_41e,"_onInFlight",_434);dojo._ioCancelAll=_41e.cancelAll;dojo._ioNotifyStart=function(dfd){if(cfg.ioPublish&&dojo.publish&&dfd.ioArgs.args.ioPublish!==false){if(!_435){dojo.publish("/dojo/io/start");}_435+=1;dojo.publish("/dojo/io/send",[dfd]);}};dojo._ioWatch=function(dfd,_436,_437,_438){var args=dfd.ioArgs.options=dfd.ioArgs.args;lang.mixin(dfd,{response:dfd.ioArgs,isValid:function(_439){return _436(dfd);},isReady:function(_43a){return _437(dfd);},handleResponse:function(_43b){return _438(dfd);}});_41e(dfd);_434(dfd);};var _43c="application/x-www-form-urlencoded";dojo._ioAddQueryToUrl=function(_43d){if(_43d.query.length){_43d.url+=(_43d.url.indexOf("?")==-1?"?":"&")+_43d.query;_43d.query=null;}};dojo.xhr=function(_43e,args,_43f){var rDfd;var dfd=dojo._ioSetArgs(args,function(dfd){rDfd&&rDfd.cancel();},_431,_432);var _440=dfd.ioArgs;if("postData" in args){_440.query=args.postData;}else{if("putData" in args){_440.query=args.putData;}else{if("rawBody" in args){_440.query=args.rawBody;}else{if((arguments.length>2&&!_43f)||"POST|PUT".indexOf(_43e.toUpperCase())===-1){dojo._ioAddQueryToUrl(_440);}}}}var _441={method:_43e,handleAs:"text",timeout:args.timeout,withCredentials:args.withCredentials,ioArgs:_440};if(typeof args.headers!=="undefined"){_441.headers=args.headers;}if(typeof args.contentType!=="undefined"){if(!_441.headers){_441.headers={};}_441.headers["Content-Type"]=args.contentType;}if(typeof _440.query!=="undefined"){_441.data=_440.query;}if(typeof args.sync!=="undefined"){_441.sync=args.sync;}dojo._ioNotifyStart(dfd);try{rDfd=_41f(_440.url,_441,true);}catch(e){dfd.cancel();return dfd;}dfd.ioArgs.xhr=rDfd.response.xhr;rDfd.then(function(){dfd.resolve(dfd);}).otherwise(function(_442){_440.error=_442;if(_442.response){_442.status=_442.response.status;_442.responseText=_442.response.text;_442.xhr=_442.response.xhr;}dfd.reject(_442);});return dfd;};dojo.xhrGet=function(args){return dojo.xhr("GET",args);};dojo.rawXhrPost=dojo.xhrPost=function(args){return dojo.xhr("POST",args,true);};dojo.rawXhrPut=dojo.xhrPut=function(args){return dojo.xhr("PUT",args,true);};dojo.xhrDelete=function(args){return dojo.xhr("DELETE",args);};dojo._isDocumentOk=function(x){return util.checkStatus(x.status);};dojo._getText=function(url){var _443;dojo.xhrGet({url:url,sync:true,load:function(text){_443=text;}});return _443;};lang.mixin(dojo.xhr,{_xhrObj:dojo._xhrObj,fieldToObject:_419.fieldToObject,formToObject:_419.toObject,objectToQuery:ioq.objectToQuery,formToQuery:_419.toQuery,formToJson:_419.toJson,queryToObject:ioq.queryToObject,contentHandlers:_420,_ioSetArgs:dojo._ioSetArgs,_ioCancelAll:dojo._ioCancelAll,_ioNotifyStart:dojo._ioNotifyStart,_ioWatch:dojo._ioWatch,_ioAddQueryToUrl:dojo._ioAddQueryToUrl,_isDocumentOk:dojo._isDocumentOk,_getText:dojo._getText,get:dojo.xhrGet,post:dojo.xhrPost,put:dojo.xhrPut,del:dojo.xhrDelete});return dojo.xhr;});},"dojo/io-query":function(){define(["./_base/lang"],function(lang){var _444={};return {objectToQuery:function objectToQuery(map){var enc=encodeURIComponent,_445=[];for(var name in map){var _446=map[name];if(_446!=_444[name]){var _447=enc(name)+"=";if(lang.isArray(_446)){for(var i=0,l=_446.length;i<l;++i){_445.push(_447+enc(_446[i]));}}else{_445.push(_447+enc(_446));}}}return _445.join("&");},queryToObject:function queryToObject(str){var dec=decodeURIComponent,qp=str.split("&"),ret={},name,val;for(var i=0,l=qp.length,item;i<l;++i){item=qp[i];if(item.length){var s=item.indexOf("=");if(s<0){name=dec(item);val="";}else{name=dec(item.slice(0,s));val=dec(item.slice(s+1));}if(typeof ret[name]=="string"){ret[name]=[ret[name]];}if(lang.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}}return ret;}};});},"dojo/dom-form":function(){define(["./_base/lang","./dom","./io-query","./json"],function(lang,dom,ioq,json){function _448(obj,name,_449){if(_449===null){return;}var val=obj[name];if(typeof val=="string"){obj[name]=[val,_449];}else{if(lang.isArray(val)){val.push(_449);}else{obj[name]=_449;}}};var _44a="file|submit|image|reset|button";var form={fieldToObject:function fieldToObject(_44b){var ret=null;_44b=dom.byId(_44b);if(_44b){var _44c=_44b.name,type=(_44b.type||"").toLowerCase();if(_44c&&type&&!_44b.disabled){if(type=="radio"||type=="checkbox"){if(_44b.checked){ret=_44b.value;}}else{if(_44b.multiple){ret=[];var _44d=[_44b.firstChild];while(_44d.length){for(var node=_44d.pop();node;node=node.nextSibling){if(node.nodeType==1&&node.tagName.toLowerCase()=="option"){if(node.selected){ret.push(node.value);}}else{if(node.nextSibling){_44d.push(node.nextSibling);}if(node.firstChild){_44d.push(node.firstChild);}break;}}}}else{ret=_44b.value;}}}}return ret;},toObject:function formToObject(_44e){var ret={},_44f=dom.byId(_44e).elements;for(var i=0,l=_44f.length;i<l;++i){var item=_44f[i],_450=item.name,type=(item.type||"").toLowerCase();if(_450&&type&&_44a.indexOf(type)<0&&!item.disabled){_448(ret,_450,form.fieldToObject(item));if(type=="image"){ret[_450+".x"]=ret[_450+".y"]=ret[_450].x=ret[_450].y=0;}}}return ret;},toQuery:function formToQuery(_451){return ioq.objectToQuery(form.toObject(_451));},toJson:function formToJson(_452,_453){return json.stringify(form.toObject(_452),null,_453?4:0);}};return form;});},"dojo/request/watch":function(){define(["./util","../errors/RequestTimeoutError","../errors/CancelError","../_base/array","../_base/window","../has!host-browser?dom-addeventlistener?:../on:"],function(util,_454,_455,_456,win,on){var _457=null,_458=[];function _459(){var now=+(new Date);for(var i=0,dfd;i<_458.length&&(dfd=_458[i]);i++){var _45a=dfd.response,_45b=_45a.options;if((dfd.isCanceled&&dfd.isCanceled())||(dfd.isValid&&!dfd.isValid(_45a))){_458.splice(i--,1);_45c._onAction&&_45c._onAction();}else{if(dfd.isReady&&dfd.isReady(_45a)){_458.splice(i--,1);dfd.handleResponse(_45a);_45c._onAction&&_45c._onAction();}else{if(dfd.startTime){if(dfd.startTime+(_45b.timeout||0)<now){_458.splice(i--,1);dfd.cancel(new _454("Timeout exceeded",_45a));_45c._onAction&&_45c._onAction();}}}}}_45c._onInFlight&&_45c._onInFlight(dfd);if(!_458.length){clearInterval(_457);_457=null;}};function _45c(dfd){if(dfd.response.options.timeout){dfd.startTime=+(new Date);}if(dfd.isFulfilled()){return;}_458.push(dfd);if(!_457){_457=setInterval(_459,50);}if(dfd.response.options.sync){_459();}};_45c.cancelAll=function cancelAll(){try{_456.forEach(_458,function(dfd){try{dfd.cancel(new _455("All requests canceled."));}catch(e){}});}catch(e){}};if(win&&on&&win.doc.attachEvent){on(win.global,"unload",function(){_45c.cancelAll();});}return _45c;});},"dojo/request/util":function(){define(["exports","../errors/RequestError","../errors/CancelError","../Deferred","../io-query","../_base/array","../_base/lang","../promise/Promise","../has"],function(_45d,_45e,_45f,_460,_461,_462,lang,_463,has){function _464(_465){return has("native-arraybuffer")&&_465 instanceof ArrayBuffer;};function _466(_467){return has("native-blob")&&_467 instanceof Blob;};function _468(_469){if(typeof Element!=="undefined"){return _469 instanceof Element;}return _469.nodeType===1;};function _46a(_46b){return has("native-formdata")&&_46b instanceof FormData;};function _46c(_46d){return _46d&&typeof _46d==="object"&&!_46a(_46d)&&!_468(_46d)&&!_466(_46d)&&!_464(_46d);};_45d.deepCopy=function(_46e,_46f){for(var name in _46f){var tval=_46e[name],sval=_46f[name];if(name!=="__proto__"&&tval!==sval){if(_46c(sval)){if(Object.prototype.toString.call(sval)==="[object Date]"){_46e[name]=new Date(sval);}else{if(lang.isArray(sval)){_46e[name]=_45d.deepCopyArray(sval);}else{if(tval&&typeof tval==="object"){_45d.deepCopy(tval,sval);}else{_46e[name]=_45d.deepCopy({},sval);}}}}else{_46e[name]=sval;}}}return _46e;};_45d.deepCopyArray=function(_470){var _471=[];for(var i=0,l=_470.length;i<l;i++){var _472=_470[i];if(typeof _472==="object"){_471.push(_45d.deepCopy({},_472));}else{_471.push(_472);}}return _471;};_45d.deepCreate=function deepCreate(_473,_474){_474=_474||{};var _475=lang.delegate(_473),name,_476;for(name in _473){_476=_473[name];if(_476&&typeof _476==="object"){_475[name]=_45d.deepCreate(_476,_474[name]);}}return _45d.deepCopy(_475,_474);};var _477=Object.freeze||function(obj){return obj;};function _478(_479){return _477(_479);};function _47a(_47b){return _47b.data!==undefined?_47b.data:_47b.text;};_45d.deferred=function deferred(_47c,_47d,_47e,_47f,_480,last){var def=new _460(function(_481){_47d&&_47d(def,_47c);if(!_481||!(_481 instanceof _45e)&&!(_481 instanceof _45f)){return new _45f("Request canceled",_47c);}return _481;});def.response=_47c;def.isValid=_47e;def.isReady=_47f;def.handleResponse=_480;function _482(_483){_483.response=_47c;throw _483;};var _484=def.then(_478).otherwise(_482);if(_45d.notify){_484.then(lang.hitch(_45d.notify,"emit","load"),lang.hitch(_45d.notify,"emit","error"));}var _485=_484.then(_47a);var _486=new _463();for(var prop in _485){if(_485.hasOwnProperty(prop)){_486[prop]=_485[prop];}}_486.response=_484;_477(_486);if(last){def.then(function(_487){last.call(def,_487);},function(_488){last.call(def,_47c,_488);});}def.promise=_486;def.then=_486.then;return def;};_45d.addCommonMethods=function addCommonMethods(_489,_48a){_462.forEach(_48a||["GET","POST","PUT","DELETE"],function(_48b){_489[(_48b==="DELETE"?"DEL":_48b).toLowerCase()]=function(url,_48c){_48c=lang.delegate(_48c||{});_48c.method=_48b;return _489(url,_48c);};});};_45d.parseArgs=function parseArgs(url,_48d,_48e){var data=_48d.data,_48f=_48d.query;if(data&&!_48e){if(typeof data==="object"&&(!(has("native-xhr2"))||!(_464(data)||_466(data)))){_48d.data=_461.objectToQuery(data);}}if(_48f){if(typeof _48f==="object"){_48f=_461.objectToQuery(_48f);}if(_48d.preventCache){_48f+=(_48f?"&":"")+"request.preventCache="+(+(new Date));}}else{if(_48d.preventCache){_48f="request.preventCache="+(+(new Date));}}if(url&&_48f){url+=(~url.indexOf("?")?"&":"?")+_48f;}return {url:url,options:_48d,getHeader:function(_490){return null;}};};_45d.checkStatus=function(stat){stat=stat||0;return (stat>=200&&stat<300)||stat===304||stat===1223||!stat;};});},"dojo/errors/RequestError":function(){define(["./create"],function(_491){return _491("RequestError",function(_492,_493){this.response=_493;});});},"dojo/errors/RequestTimeoutError":function(){define(["./create","./RequestError"],function(_494,_495){return _494("RequestTimeoutError",null,_495,{dojoType:"timeout"});});},"dojo/request/xhr":function(){define(["../errors/RequestError","./watch","./handlers","./util","../has"],function(_496,_497,_498,util,has){has.add("native-xhr",function(){return typeof XMLHttpRequest!=="undefined";});has.add("dojo-force-activex-xhr",function(){return has("activex")&&window.location.protocol==="file:";});has.add("native-xhr2",function(){if(!has("native-xhr")||has("dojo-force-activex-xhr")){return;}var x=new XMLHttpRequest();return typeof x["addEventListener"]!=="undefined"&&(typeof opera==="undefined"||typeof x["upload"]!=="undefined");});has.add("native-formdata",function(){return typeof FormData!=="undefined";});has.add("native-blob",function(){return typeof Blob!=="undefined";});has.add("native-arraybuffer",function(){return typeof ArrayBuffer!=="undefined";});has.add("native-response-type",function(){return has("native-xhr")&&typeof new XMLHttpRequest().responseType!=="undefined";});has.add("native-xhr2-blob",function(){if(!has("native-response-type")){return;}var x=new XMLHttpRequest();x.open("GET","https://dojotoolkit.org/",true);x.responseType="blob";var _499=x.responseType;x.abort();return _499==="blob";});var _49a={"blob":has("native-xhr2-blob")?"blob":"arraybuffer","document":"document","arraybuffer":"arraybuffer"};function _49b(_49c,_49d){var _49e=_49c.xhr;_49c.status=_49c.xhr.status;try{_49c.text=_49e.responseText;}catch(e){}if(_49c.options.handleAs==="xml"){_49c.data=_49e.responseXML;}var _49f;if(_49d){this.reject(_49d);}else{try{_498(_49c);}catch(e){_49f=e;}if(util.checkStatus(_49e.status)){if(!_49f){this.resolve(_49c);}else{this.reject(_49f);}}else{if(!_49f){_49d=new _496("Unable to load "+_49c.url+" status: "+_49e.status,_49c);this.reject(_49d);}else{_49d=new _496("Unable to load "+_49c.url+" status: "+_49e.status+" and an error in handleAs: transformation of response",_49c);this.reject(_49d);}}}};var _4a0,_4a1,_4a2,_4a3;if(has("native-xhr2")){_4a0=function(_4a4){return !this.isFulfilled();};_4a3=function(dfd,_4a5){_4a5.xhr.abort();};_4a2=function(_4a6,dfd,_4a7,_4a8){function _4a9(evt){dfd.handleResponse(_4a7);};function _4aa(evt){var _4ab=evt.target;var _4ac=new _496("Unable to load "+_4a7.url+" status: "+_4ab.status,_4a7);dfd.handleResponse(_4a7,_4ac);};function _4ad(_4ae,evt){_4a7.transferType=_4ae;if(evt.lengthComputable){_4a7.loaded=evt.loaded;_4a7.total=evt.total;dfd.progress(_4a7);}else{if(_4a7.xhr.readyState===3){_4a7.loaded=("loaded" in evt)?evt.loaded:evt.position;dfd.progress(_4a7);}}};function _4af(evt){return _4ad("download",evt);};function _4b0(evt){return _4ad("upload",evt);};_4a6.addEventListener("load",_4a9,false);_4a6.addEventListener("error",_4aa,false);_4a6.addEventListener("progress",_4af,false);if(_4a8&&_4a6.upload){_4a6.upload.addEventListener("progress",_4b0,false);}return function(){_4a6.removeEventListener("load",_4a9,false);_4a6.removeEventListener("error",_4aa,false);_4a6.removeEventListener("progress",_4af,false);_4a6.upload.removeEventListener("progress",_4b0,false);_4a6=null;};};}else{_4a0=function(_4b1){return _4b1.xhr.readyState;};_4a1=function(_4b2){return 4===_4b2.xhr.readyState;};_4a3=function(dfd,_4b3){var xhr=_4b3.xhr;var _4b4=typeof xhr.abort;if(_4b4==="function"||_4b4==="object"||_4b4==="unknown"){xhr.abort();}};}function _4b5(_4b6){return this.xhr.getResponseHeader(_4b6);};var _4b7,_4b8={data:null,query:null,sync:false,method:"GET"};function xhr(url,_4b9,_4ba){var _4bb=has("native-formdata")&&_4b9&&_4b9.data&&_4b9.data instanceof FormData;var _4bc=util.parseArgs(url,util.deepCreate(_4b8,_4b9),_4bb);url=_4bc.url;_4b9=_4bc.options;var _4bd=!_4b9.data&&_4b9.method!=="POST"&&_4b9.method!=="PUT";if(has("ie")<=10){url=url.split("#")[0];}var _4be,last=function(){_4be&&_4be();};var dfd=util.deferred(_4bc,_4a3,_4a0,_4a1,_49b,last);var _4bf=_4bc.xhr=xhr._create();if(!_4bf){dfd.cancel(new _496("XHR was not created"));return _4ba?dfd:dfd.promise;}_4bc.getHeader=_4b5;if(_4a2){_4be=_4a2(_4bf,dfd,_4bc,_4b9.uploadProgress);}var data=typeof (_4b9.data)==="undefined"?null:_4b9.data,_4c0=!_4b9.sync,_4c1=_4b9.method;try{_4bf.open(_4c1,url,_4c0,_4b9.user||_4b7,_4b9.password||_4b7);if(_4b9.withCredentials){_4bf.withCredentials=_4b9.withCredentials;}if(has("native-response-type")&&_4b9.handleAs in _49a){_4bf.responseType=_49a[_4b9.handleAs];}var _4c2=_4b9.headers,_4c3=(_4bb||_4bd)?false:"application/x-www-form-urlencoded";if(_4c2){for(var hdr in _4c2){if(hdr.toLowerCase()==="content-type"){_4c3=_4c2[hdr];}else{if(_4c2[hdr]){_4bf.setRequestHeader(hdr,_4c2[hdr]);}}}}if(_4c3&&_4c3!==false){_4bf.setRequestHeader("Content-Type",_4c3);}if(!_4c2||!("X-Requested-With" in _4c2)){_4bf.setRequestHeader("X-Requested-With","XMLHttpRequest");}if(util.notify){util.notify.emit("send",_4bc,dfd.promise.cancel);}_4bf.send(data);}catch(e){dfd.reject(e);}_497(dfd);_4bf=null;return _4ba?dfd:dfd.promise;};xhr._create=function(){throw new Error("XMLHTTP not available");};if(has("native-xhr")&&!has("dojo-force-activex-xhr")){xhr._create=function(){return new XMLHttpRequest();};}else{if(has("activex")){try{new ActiveXObject("Msxml2.XMLHTTP");xhr._create=function(){return new ActiveXObject("Msxml2.XMLHTTP");};}catch(e){try{new ActiveXObject("Microsoft.XMLHTTP");xhr._create=function(){return new ActiveXObject("Microsoft.XMLHTTP");};}catch(e){}}}}util.addCommonMethods(xhr);return xhr;});},"dojo/request/handlers":function(){define(["../json","../_base/kernel","../_base/array","../has","../selector/_loader"],function(JSON,_4c4,_4c5,has){has.add("activex",typeof ActiveXObject!=="undefined");has.add("dom-parser",function(_4c6){return "DOMParser" in _4c6;});var _4c7;if(has("activex")){var dp=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML.DOMDocument"];var _4c8;_4c7=function(_4c9){var _4ca=_4c9.data;var text=_4c9.text;if(_4ca&&has("dom-qsa2.1")&&!_4ca.querySelectorAll&&has("dom-parser")){_4ca=new DOMParser().parseFromString(text,"application/xml");}function _4cb(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(text);_4ca=dom;_4c8=p;}catch(e){return false;}return true;};if(!_4ca||!_4ca.documentElement){if(!_4c8||!_4cb(_4c8)){_4c5.some(dp,_4cb);}}return _4ca;};}var _4cc=function(_4cd){if(!has("native-xhr2-blob")&&_4cd.options.handleAs==="blob"&&typeof Blob!=="undefined"){return new Blob([_4cd.xhr.response],{type:_4cd.xhr.getResponseHeader("Content-Type")});}return _4cd.xhr.response;};var _4ce={"javascript":function(_4cf){return _4c4.eval(_4cf.text||"");},"json":function(_4d0){return JSON.parse(_4d0.text||null);},"xml":_4c7,"blob":_4cc,"arraybuffer":_4cc,"document":_4cc};function _4d1(_4d2){var _4d3=_4ce[_4d2.options.handleAs];_4d2.data=_4d3?_4d3(_4d2):(_4d2.data||_4d2.text);return _4d2;};_4d1.register=function(name,_4d4){_4ce[name]=_4d4;};return _4d1;});},"dojo/_base/fx":function(){define(["./kernel","./config","./lang","../Evented","./Color","../aspect","../sniff","../dom","../dom-style"],function(dojo,_4d5,lang,_4d6,_4d7,_4d8,has,dom,_4d9){var _4da=lang.mixin;var _4db={};var _4dc=_4db._Line=function(_4dd,end){this.start=_4dd;this.end=end;};_4dc.prototype.getValue=function(n){return ((this.end-this.start)*n)+this.start;};var _4de=_4db.Animation=function(args){_4da(this,args);if(lang.isArray(this.curve)){this.curve=new _4dc(this.curve[0],this.curve[1]);}};_4de.prototype=new _4d6();lang.extend(_4de,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var _4df=this._percent,_4e0=this.easing;return _4e0?_4e0(_4df):_4df;},_fire:function(evt,args){var a=args||[];if(this[evt]){if(_4d5.debugAtAllCosts){this[evt].apply(this,a);}else{try{this[evt].apply(this,a);}catch(e){console.error("exception in animation handler for:",evt);console.error(e);}}}return this;},play:function(_4e1,_4e2){var _4e3=this;if(_4e3._delayTimer){_4e3._clearTimer();}if(_4e2){_4e3._stopTimer();_4e3._active=_4e3._paused=false;_4e3._percent=0;}else{if(_4e3._active&&!_4e3._paused){return _4e3;}}_4e3._fire("beforeBegin",[_4e3.node]);var de=_4e1||_4e3.delay,_4e4=lang.hitch(_4e3,"_play",_4e2);if(de>0){_4e3._delayTimer=setTimeout(_4e4,de);return _4e3;}_4e4();return _4e3;},_play:function(_4e5){var _4e6=this;if(_4e6._delayTimer){_4e6._clearTimer();}_4e6._startTime=new Date().valueOf();if(_4e6._paused){_4e6._startTime-=_4e6.duration*_4e6._percent;}_4e6._active=true;_4e6._paused=false;var _4e7=_4e6.curve.getValue(_4e6._getStep());if(!_4e6._percent){if(!_4e6._startRepeatCount){_4e6._startRepeatCount=_4e6.repeat;}_4e6._fire("onBegin",[_4e7]);}_4e6._fire("onPlay",[_4e7]);_4e6._cycle();return _4e6;},pause:function(){var _4e8=this;if(_4e8._delayTimer){_4e8._clearTimer();}_4e8._stopTimer();if(!_4e8._active){return _4e8;}_4e8._paused=true;_4e8._fire("onPause",[_4e8.curve.getValue(_4e8._getStep())]);return _4e8;},gotoPercent:function(_4e9,_4ea){var _4eb=this;_4eb._stopTimer();_4eb._active=_4eb._paused=true;_4eb._percent=_4e9;if(_4ea){_4eb.play();}return _4eb;},stop:function(_4ec){var _4ed=this;if(_4ed._delayTimer){_4ed._clearTimer();}if(!_4ed._timer){return _4ed;}_4ed._stopTimer();if(_4ec){_4ed._percent=1;}_4ed._fire("onStop",[_4ed.curve.getValue(_4ed._getStep())]);_4ed._active=_4ed._paused=false;return _4ed;},destroy:function(){this.stop();},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _4ee=this;if(_4ee._active){var curr=new Date().valueOf();var step=_4ee.duration===0?1:(curr-_4ee._startTime)/(_4ee.duration);if(step>=1){step=1;}_4ee._percent=step;if(_4ee.easing){step=_4ee.easing(step);}_4ee._fire("onAnimate",[_4ee.curve.getValue(step)]);if(_4ee._percent<1){_4ee._startTimer();}else{_4ee._active=false;if(_4ee.repeat>0){_4ee.repeat--;_4ee.play(null,true);}else{if(_4ee.repeat==-1){_4ee.play(null,true);}else{if(_4ee._startRepeatCount){_4ee.repeat=_4ee._startRepeatCount;_4ee._startRepeatCount=0;}}}_4ee._percent=0;_4ee._fire("onEnd",[_4ee.node]);!_4ee.repeat&&_4ee._stopTimer();}}return _4ee;},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer;}});var ctr=0,_4ef=null,_4f0={run:function(){}};lang.extend(_4de,{_startTimer:function(){if(!this._timer){this._timer=_4d8.after(_4f0,"run",lang.hitch(this,"_cycle"),true);ctr++;}if(!_4ef){_4ef=setInterval(lang.hitch(_4f0,"run"),this.rate);}},_stopTimer:function(){if(this._timer){this._timer.remove();this._timer=null;ctr--;}if(ctr<=0){clearInterval(_4ef);_4ef=null;ctr=0;}}});var _4f1=has("ie")?function(node){var ns=node.style;if(!ns.width.length&&_4d9.get(node,"width")=="auto"){ns.width="auto";}}:function(){};_4db._fade=function(args){args.node=dom.byId(args.node);var _4f2=_4da({properties:{}},args),_4f3=(_4f2.properties.opacity={});_4f3.start=!("start" in _4f2)?function(){return +_4d9.get(_4f2.node,"opacity")||0;}:_4f2.start;_4f3.end=_4f2.end;var anim=_4db.animateProperty(_4f2);_4d8.after(anim,"beforeBegin",lang.partial(_4f1,_4f2.node),true);return anim;};_4db.fadeIn=function(args){return _4db._fade(_4da({end:1},args));};_4db.fadeOut=function(args){return _4db._fade(_4da({end:0},args));};_4db._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _4f4=function(_4f5){this._properties=_4f5;for(var p in _4f5){var prop=_4f5[p];if(prop.start instanceof _4d7){prop.tempColor=new _4d7();}}};_4f4.prototype.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p],_4f6=prop.start;if(_4f6 instanceof _4d7){ret[p]=_4d7.blendColors(_4f6,prop.end,r,prop.tempColor).toCss();}else{if(!lang.isArray(_4f6)){ret[p]=((prop.end-_4f6)*r)+_4f6+(p!="opacity"?prop.units||"px":0);}}}return ret;};_4db.animateProperty=function(args){var n=args.node=dom.byId(args.node);if(!args.easing){args.easing=dojo._defaultEasing;}var anim=new _4de(args);_4d8.after(anim,"beforeBegin",lang.hitch(anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];if(lang.isFunction(prop)){prop=prop(n);}prop=pm[p]=_4da({},(lang.isObject(prop)?prop:{end:prop}));if(lang.isFunction(prop.start)){prop.start=prop.start(n);}if(lang.isFunction(prop.end)){prop.end=prop.end(n);}var _4f7=(p.toLowerCase().indexOf("color")>=0);function _4f8(node,p){var v={height:node.offsetHeight,width:node.offsetWidth}[p];if(v!==undefined){return v;}v=_4d9.get(node,p);return (p=="opacity")?+v:(_4f7?v:parseFloat(v));};if(!("end" in prop)){prop.end=_4f8(n,p);}else{if(!("start" in prop)){prop.start=_4f8(n,p);}}if(_4f7){prop.start=new _4d7(prop.start);prop.end=new _4d7(prop.end);}else{prop.start=(p=="opacity")?+prop.start:parseFloat(prop.start);}}this.curve=new _4f4(pm);}),true);_4d8.after(anim,"onAnimate",lang.hitch(_4d9,"set",anim.node),true);return anim;};_4db.anim=function(node,_4f9,_4fa,_4fb,_4fc,_4fd){return _4db.animateProperty({node:node,duration:_4fa||_4de.prototype.duration,properties:_4f9,easing:_4fb,onEnd:_4fc}).play(_4fd||0);};if(1){_4da(dojo,_4db);dojo._Animation=_4de;}return _4db;});},"dojo/_base/loader":function(){define(["./kernel","../has","require","module","../json","./lang","./array"],function(dojo,has,_4fe,_4ff,json,lang,_500){if(!1){console.error("cannot load the Dojo v1.x loader with a foreign loader");return 0;}1||has.add("dojo-fast-sync-require",1);var _501=function(id){return {src:_4ff.id,id:id};},_502=function(name){return name.replace(/\./g,"/");},_503=/\/\/>>built/,_504=[],_505=[],_506=function(mid,_507,_508){_504.push(_508);_500.forEach(mid.split(","),function(mid){var _509=_50a(mid,_507.module);_505.push(_509);_50b(_509);});_50c();},_50c=(1?function(){var _50d,mid;for(mid in _50e){_50d=_50e[mid];if(_50d.noReqPluginCheck===undefined){_50d.noReqPluginCheck=/loadInit\!/.test(mid)||/require\!/.test(mid)?1:0;}if(!_50d.executed&&!_50d.noReqPluginCheck&&_50d.injected==_50f){return;}}_510(function(){var _511=_504;_504=[];_500.forEach(_511,function(cb){cb(1);});});}:(function(){var _512,_513=function(m){_512[m.mid]=1;for(var t,_514,deps=m.deps||[],i=0;i<deps.length;i++){_514=deps[i];if(!(t=_512[_514.mid])){if(t===0||!_513(_514)){_512[m.mid]=0;return false;}}}return true;};return function(){var _515,mid;_512={};for(mid in _50e){_515=_50e[mid];if(_515.executed||_515.noReqPluginCheck){_512[mid]=1;}else{if(_515.noReqPluginCheck!==0){_515.noReqPluginCheck=/loadInit\!/.test(mid)||/require\!/.test(mid)?1:0;}if(_515.noReqPluginCheck){_512[mid]=1;}else{if(_515.injected!==_540){_512[mid]=0;}}}}for(var t,i=0,end=_505.length;i<end;i++){_515=_505[i];if(!(t=_512[_515.mid])){if(t===0||!_513(_515)){return;}}}_510(function(){var _516=_504;_504=[];_500.forEach(_516,function(cb){cb(1);});});};})()),_517=function(mid,_518,_519){_518([mid],function(_51a){_518(_51a.names,function(){for(var _51b="",args=[],i=0;i<arguments.length;i++){_51b+="var "+_51a.names[i]+"= arguments["+i+"]; ";args.push(arguments[i]);}eval(_51b);var _51c=_518.module,_51d=[],_51e,_51f={provide:function(_520){_520=_502(_520);var _521=_50a(_520,_51c);if(_521!==_51c){_546(_521);}},require:function(_522,_523){_522=_502(_522);_523&&(_50a(_522,_51c).result=_541);_51d.push(_522);},requireLocalization:function(_524,_525,_526){if(!_51e){_51e=["dojo/i18n"];}_526=(_526||dojo.locale).toLowerCase();_524=_502(_524)+"/nls/"+(/root/i.test(_526)?"":_526+"/")+_502(_525);if(_50a(_524,_51c).isXd){_51e.push("dojo/i18n!"+_524);}},loadInit:function(f){f();}},hold={},p;try{for(p in _51f){hold[p]=dojo[p];dojo[p]=_51f[p];}_51a.def.apply(null,args);}catch(e){_527("error",[_501("failedDojoLoadInit"),e]);}finally{for(p in _51f){dojo[p]=hold[p];}}if(_51e){_51d=_51d.concat(_51e);}if(_51d.length){_506(_51d.join(","),_518,_519);}else{_519();}});});},_528=function(text,_529,_52a){var _52b=/\(|\)/g,_52c=1,_52d;_52b.lastIndex=_529;while((_52d=_52b.exec(text))){if(_52d[0]==")"){_52c-=1;}else{_52c+=1;}if(_52c==0){break;}}if(_52c!=0){throw "unmatched paren around character "+_52b.lastIndex+" in: "+text;}return [dojo.trim(text.substring(_52a,_52b.lastIndex))+";\n",_52b.lastIndex];},_52e=/\/\/.*|\/\*[\s\S]*?\*\/|("(?:\\.|[^"])*"|'(?:\\.|[^'])*'|`(?:\\.|[^`])*`)/mg,_52f=/(^|\s)dojo\.(loadInit|require|provide|requireLocalization|requireIf|requireAfterIf|platformRequire)\s*\(/mg,_530=/(^|\s)(require|define)\s*\(/m,_531=function(text,_532){var _533,_534,_535,_536,_537=[],_538=[],_539=[];_532=_532||text.replace(_52e,"$1");while((_533=_52f.exec(_532))){_534=_52f.lastIndex;_535=_534-_533[0].length;_536=_528(_532,_534,_535);if(_533[2]=="loadInit"){_537.push(_536[0]);}else{_538.push(_536[0]);}_52f.lastIndex=_536[1];}_539=_537.concat(_538);if(_539.length||!_530.test(_532)){return [text.replace(/(^|\s)dojo\.loadInit\s*\(/g,"\n0 && dojo.loadInit("),_539.join(""),_539];}else{return 0;}},_53a=function(_53b,text){var _53c,id,_53d=[],_53e=[];if(_503.test(text)||!(_53c=_531(text))){return 0;}id=_53b.mid+"-*loadInit";for(var p in _50a("dojo",_53b).result.scopeMap){_53d.push(p);_53e.push("\""+p+"\"");}return "// xdomain rewrite of "+_53b.mid+"\n"+"define('"+id+"',{\n"+"\tnames:"+json.stringify(_53d)+",\n"+"\tdef:function("+_53d.join(",")+"){"+_53c[1]+"}"+"});\n\n"+"define("+json.stringify(_53d.concat(["dojo/loadInit!"+id]))+", function("+_53d.join(",")+"){\n"+_53c[0]+"});";},_53f=_4fe.initSyncLoader(_506,_50c,_53a),sync=_53f.sync,_50f=_53f.requested,_540=_53f.arrived,_541=_53f.nonmodule,_542=_53f.executing,_543=_53f.executed,_544=_53f.syncExecStack,_50e=_53f.modules,_545=_53f.execQ,_50a=_53f.getModule,_50b=_53f.injectModule,_546=_53f.setArrived,_527=_53f.signal,_547=_53f.finishExec,_548=_53f.execModule,_549=_53f.getLegacyMode,_510=_53f.guardCheckComplete;_506=_53f.dojoRequirePlugin;dojo.provide=function(mid){var _54a=_544[0],_54b=lang.mixin(_50a(_502(mid),_4fe.module),{executed:_542,result:lang.getObject(mid,true)});_546(_54b);if(_54a){(_54a.provides||(_54a.provides=[])).push(function(){_54b.result=lang.getObject(mid);delete _54b.provides;_54b.executed!==_543&&_547(_54b);});}return _54b.result;};has.add("config-publishRequireResult",1,0,0);dojo.require=function(_54c,_54d){function _54e(mid,_54f){var _550=_50a(_502(mid),_4fe.module);if(_544.length&&_544[0].finish){_544[0].finish.push(mid);return undefined;}if(_550.executed){return _550.result;}_54f&&(_550.result=_541);var _551=_549();_50b(_550);_551=_549();if(_550.executed!==_543&&_550.injected===_540){_53f.guardCheckComplete(function(){_548(_550);});}if(_550.executed){return _550.result;}if(_551==sync){if(_550.cjs){_545.unshift(_550);}else{_544.length&&(_544[0].finish=[mid]);}}else{_545.push(_550);}return undefined;};var _552=_54e(_54c,_54d);if(has("config-publishRequireResult")&&!lang.exists(_54c)&&_552!==undefined){lang.setObject(_54c,_552);}return _552;};dojo.loadInit=function(f){f();};dojo.registerModulePath=function(_553,_554){var _555={};_555[_553.replace(/\./g,"/")]=_554;_4fe({paths:_555});};dojo.platformRequire=function(_556){var _557=(_556.common||[]).concat(_556[dojo._name]||_556["default"]||[]),temp;while(_557.length){if(lang.isArray(temp=_557.shift())){dojo.require.apply(dojo,temp);}else{dojo.require(temp);}}};dojo.requireIf=dojo.requireAfterIf=function(_558,_559,_55a){if(_558){dojo.require(_559,_55a);}};dojo.requireLocalization=function(_55b,_55c,_55d){_4fe(["../i18n"],function(i18n){i18n.getLocalization(_55b,_55c,_55d);});};return {extractLegacyApiApplications:_531,require:_506,loadInit:_517};});}}});(function(){var _55e=this.require;_55e({cache:{}});!_55e.async&&_55e(["dojo"]);_55e.boot&&_55e.apply(null,_55e.boot);})(); \ No newline at end of file
+(function(_1,_2){var _3=(function(){if(typeof _4!=="undefined"&&typeof _4!=="function"){return _4;}else{if(typeof window!=="undefined"){return window;}else{if(typeof self!=="undefined"){return self;}}}return this;})();var _5=function(){},_6=function(it){for(var p in it){return 0;}return 1;},_7={}.toString,_8=function(it){return _7.call(it)=="[object Function]";},_9=function(it){return _7.call(it)=="[object String]";},_a=function(it){return _7.call(it)=="[object Array]";},_b=function(_c,_d){if(_c){for(var i=0;i<_c.length;){_d(_c[i++]);}}},_e=function(_f,src){for(var p in src){_f[p]=src[p];}return _f;},_10=function(_11,_12){return _e(new Error(_11),{src:"dojoLoader",info:_12});},_13=1,uid=function(){return "_"+_13++;},req=function(_14,_15,_16){return _17(_14,_15,_16,0,req);},_4=_3,doc=_4.document,_18=doc&&doc.createElement("DiV"),has=req.has=function(_19){return _8(_1a[_19])?(_1a[_19]=_1a[_19](_4,doc,_18)):_1a[_19];},_1a=has.cache=_2.hasCache;if(_8(_1)){_1=_1(_3);}has.add=function(_1b,_1c,now,_1d){(_1a[_1b]===undefined||_1d)&&(_1a[_1b]=_1c);return now&&has(_1b);};0&&has.add("host-node",_1.has&&"host-node" in _1.has?_1.has["host-node"]:(typeof process=="object"&&process.versions&&process.versions.node&&process.versions.v8));if(0){require("./_base/configNode.js").config(_2);_2.loaderPatch.nodeRequire=require;}0&&has.add("host-rhino",_1.has&&"host-rhino" in _1.has?_1.has["host-rhino"]:(typeof load=="function"&&(typeof Packages=="function"||typeof Packages=="object")));if(0){for(var _1e=_1.baseUrl||".",arg,_1f=this.arguments,i=0;i<_1f.length;){arg=(_1f[i++]+"").split("=");if(arg[0]=="baseUrl"){_1e=arg[1];break;}}load(_1e+"/_base/configRhino.js");rhinoDojoConfig(_2,_1e,_1f);}has.add("host-webworker",((typeof WorkerGlobalScope!=="undefined")&&(self instanceof WorkerGlobalScope)));if(has("host-webworker")){_e(_2.hasCache,{"host-browser":0,"dom":0,"dojo-dom-ready-api":0,"dojo-sniff":0,"dojo-inject-api":1,"host-webworker":1,"dojo-guarantee-console":0});_2.loaderPatch={injectUrl:function(url,_20){try{importScripts(url);_20();}catch(e){console.error(e);}}};}for(var p in _1.has){has.add(p,_1.has[p],0,1);}var _21=1,_22=2,_23=3,_24=4,_25=5;if(0){_21="requested";_22="arrived";_23="not-a-module";_24="executing";_25="executed";}var _26=0,_27="sync",xd="xd",_28=[],_29=0,_2a=_5,_2b=_5,_2c;if(1){req.isXdUrl=_5;req.initSyncLoader=function(_2d,_2e,_2f){if(!_29){_29=_2d;_2a=_2e;_2b=_2f;}return {sync:_27,requested:_21,arrived:_22,nonmodule:_23,executing:_24,executed:_25,syncExecStack:_28,modules:_30,execQ:_31,getModule:_32,injectModule:_33,setArrived:_34,signal:_35,finishExec:_36,execModule:_37,dojoRequirePlugin:_29,getLegacyMode:function(){return _26;},guardCheckComplete:_38};};if(1||has("host-webworker")){var _39=location.protocol,_3a=location.host;req.isXdUrl=function(url){if(/^\./.test(url)){return false;}if(/^\/\//.test(url)){return true;}var _3b=url.match(/^([^\/\:]+\:)\/+([^\/]+)/);return _3b&&(_3b[1]!=_39||(_3a&&_3b[2]!=_3a));};1||has.add("dojo-xhr-factory",1);has.add("dojo-force-activex-xhr",1&&!doc.addEventListener&&window.location.protocol=="file:");has.add("native-xhr",typeof XMLHttpRequest!="undefined");if(has("native-xhr")&&!has("dojo-force-activex-xhr")){_2c=function(){return new XMLHttpRequest();};}else{for(var _3c=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],_3d,i=0;i<3;){try{_3d=_3c[i++];if(new ActiveXObject(_3d)){break;}}catch(e){}}_2c=function(){return new ActiveXObject(_3d);};}req.getXhr=_2c;has.add("dojo-gettext-api",1);req.getText=function(url,_3e,_3f){var xhr=_2c();xhr.open("GET",_40(url),false);xhr.send(null);if(xhr.status==200||(!location.host&&!xhr.status)){if(_3f){_3f(xhr.responseText,_3e);}}else{throw _10("xhrFailed",xhr.status);}return xhr.responseText;};}}else{req.async=1;}var _41=has("csp-restrictions")?function(){}:new Function("return eval(arguments[0]);");req.eval=function(_42,_43){return _41(_42+"\r\n//# sourceURL="+_43);};var _44={},_45="error",_35=req.signal=function(_46,_47){var _48=_44[_46];_b(_48&&_48.slice(0),function(_49){_49.apply(null,_a(_47)?_47:[_47]);});},on=req.on=function(_4a,_4b){var _4c=_44[_4a]||(_44[_4a]=[]);_4c.push(_4b);return {remove:function(){for(var i=0;i<_4c.length;i++){if(_4c[i]===_4b){_4c.splice(i,1);return;}}}};};var _4d=[],_4e={},_4f=[],_50={},map=req.map={},_51=[],_30={},_52="",_53={},_54="url:",_55={},_56={},_57=0;if(1){if(!has("foreign-loader")){var _58=function(_59,_5a){_5a=_5a!==false;var p,_5b,_5c,now,m;for(p in _55){_5b=_55[p];_5c=p.match(/^url\:(.+)/);if(_5c){_53[_54+_5d(_5c[1],_59)]=_5b;}else{if(p=="*now"){now=_5b;}else{if(p!="*noref"){m=_5e(p,_59,true);_53[m.mid]=_53[_54+m.url]=_5b;}}}}if(now){now(_5f(_59));}if(_5a){_55={};}};}var _60=function(s){return s.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(c){return "\\"+c;});},_61=function(map,_62){_62.splice(0,_62.length);for(var p in map){_62.push([p,map[p],new RegExp("^"+_60(p)+"(/|$)"),p.length]);}_62.sort(function(lhs,rhs){return rhs[3]-lhs[3];});return _62;},_63=function(_64,_65){_b(_64,function(_66){_65.push([_9(_66[0])?new RegExp("^"+_60(_66[0])+"$"):_66[0],_66[1]]);});},_67=function(_68){var _69=_68.name;if(!_69){_69=_68;_68={name:_69};}_68=_e({main:"main"},_68);_68.location=_68.location?_68.location:_69;if(_68.packageMap){map[_69]=_68.packageMap;}if(!_68.main.indexOf("./")){_68.main=_68.main.substring(2);}_50[_69]=_68;},_6a=[],_6b=function(_6c,_6d,_6e){for(var p in _6c){if(p=="waitSeconds"){req.waitms=(_6c[p]||0)*1000;}if(p=="cacheBust"){_52=_6c[p]?(_9(_6c[p])?_6c[p]:(new Date()).getTime()+""):"";}if(p=="baseUrl"||p=="combo"){req[p]=_6c[p];}if(1&&p=="async"){var _6f=_6c[p];req.legacyMode=_26=(_9(_6f)&&/sync|legacyAsync/.test(_6f)?_6f:(!_6f?_27:false));req.async=!_26;}if(_6c[p]!==_1a){req.rawConfig[p]=_6c[p];p!="has"&&has.add("config-"+p,_6c[p],0,_6d);}}if(!req.baseUrl){req.baseUrl="./";}if(!/\/$/.test(req.baseUrl)){req.baseUrl+="/";}for(p in _6c.has){has.add(p,_6c.has[p],0,_6d);}_b(_6c.packages,_67);for(var _70 in _6c.packagePaths){_b(_6c.packagePaths[_70],function(_71){var _72=_70+"/"+_71;if(_9(_71)){_71={name:_71};}_71.location=_72;_67(_71);});}_61(_e(map,_6c.map),_51);_b(_51,function(_73){_73[1]=_61(_73[1],[]);if(_73[0]=="*"){_51.star=_73;}});_61(_e(_4e,_6c.paths),_4f);_63(_6c.aliases,_4d);if(!has("foreign-loader")){if(_6d){_6a.push({config:_6c.config});}else{for(p in _6c.config){var _74=_32(p,_6e);_74.config=_e(_74.config||{},_6c.config[p]);}}if(_6c.cache){_58();_55=_6c.cache;_58(0,!!_6c.cache["*noref"]);}}_35("config",[_6c,req.rawConfig]);};if(has("dojo-cdn")||1){var _75=doc.getElementsByTagName("script"),i=0,_76,_77,src,_78;while(i<_75.length){_76=_75[i++];if((src=_76.getAttribute("src"))&&(_78=src.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){_77=_78[3]||"";_2.baseUrl=_2.baseUrl||_77;_57=_76;}if((src=(_76.getAttribute("data-dojo-config")||_76.getAttribute("djConfig")))){_56=req.eval("({ "+src+" })","data-dojo-config");_57=_76;}if(0){if((src=_76.getAttribute("data-main"))){_56.deps=_56.deps||[src];}}}}if(0){try{if(window.parent!=window&&window.parent.require){var doh=window.parent.require("doh");doh&&_e(_56,doh.testConfig);}}catch(e){}}req.rawConfig={};_6b(_2,1);if(has("dojo-cdn")){_50.dojo.location=_77;if(_77){_77+="/";}_50.dijit.location=_77+"../dijit/";_50.dojox.location=_77+"../dojox/";}_6b(_1,1);_6b(_56,1);}else{_4e=_2.paths;_4f=_2.pathsMapProg;_50=_2.packs;_4d=_2.aliases;_51=_2.mapProgs;_30=_2.modules;_53=_2.cache;_52=_2.cacheBust;req.rawConfig=_2;}if(!has("foreign-loader")){if(0){req.combo=req.combo||{add:_5};var _79=0,_7a=[],_7b=null;}var _7c=function(_7d){_38(function(){_b(_7d.deps,_33);if(0&&_79&&!_7b){_7b=setTimeout(function(){_79=0;_7b=null;req.combo.done(function(_7e,url){var _7f=function(){_80(0,_7e);_81();};_7a.push(_7e);_82=_7e;req.injectUrl(url,_7f,_7e);_82=0;},req);},0);}});},_17=function(a1,a2,a3,_83,_84){var _85,_86;if(_9(a1)){_85=_32(a1,_83,true);if(_85&&_85.executed){return _85.result;}throw _10("undefinedModule",a1);}if(!_a(a1)){_6b(a1,0,_83);a1=a2;a2=a3;}if(_a(a1)){if(!a1.length){a2&&a2();}else{_86="require*"+uid();for(var mid,_87=[],i=0;i<a1.length;){mid=a1[i++];_87.push(_32(mid,_83));}_85=_e(_88("",_86,0,""),{injected:_22,deps:_87,def:a2||_5,require:_83?_83.require:req,gc:1});_30[_85.mid]=_85;_7c(_85);var _89=_8a&&_26!=_27;_38(function(){_37(_85,_89);});if(!_85.executed){_31.push(_85);}_81();}}return _84;},_5f=function(_8b){if(!_8b){return req;}var _8c=_8b.require;if(!_8c){_8c=function(a1,a2,a3){return _17(a1,a2,a3,_8b,_8c);};_8b.require=_e(_8c,req);_8c.module=_8b;_8c.toUrl=function(_8d){return _5d(_8d,_8b);};_8c.toAbsMid=function(mid){return _bc(mid,_8b);};if(0){_8c.undef=function(mid){req.undef(mid,_8b);};}if(1){_8c.syncLoadNls=function(mid){var _8e=_5e(mid,_8b),_8f=_30[_8e.mid];if(!_8f||!_8f.executed){_90=_53[_8e.mid]||_53[_54+_8e.url];if(_90){_91(_90);_8f=_30[_8e.mid];}}return _8f&&_8f.executed&&_8f.result;};}}return _8c;},_31=[],_92=[],_93={},_94=function(_95){_95.injected=_21;_93[_95.mid]=1;if(_95.url){_93[_95.url]=_95.pack||1;}_96();},_34=function(_97){_97.injected=_22;delete _93[_97.mid];if(_97.url){delete _93[_97.url];}if(_6(_93)){_98();1&&_26==xd&&(_26=_27);}},_99=req.idle=function(){return !_92.length&&_6(_93)&&!_31.length&&!_8a;};}var _9a=function(_9b,map){if(map){for(var i=0;i<map.length;i++){if(map[i][2].test(_9b)){return map[i];}}}return 0;},_9c=function(_9d){var _9e=[],_9f,_a0;_9d=_9d.replace(/\\/g,"/").split("/");while(_9d.length){_9f=_9d.shift();if(_9f==".."&&_9e.length&&_a0!=".."){_9e.pop();_a0=_9e[_9e.length-1];}else{if(_9f!="."){_9e.push(_a0=_9f);}}}return _9e.join("/");},_88=function(pid,mid,_a1,url){if(1){var xd=req.isXdUrl(url);return {pid:pid,mid:mid,pack:_a1,url:url,executed:0,def:0,isXd:xd,isAmd:!!(xd||(_50[pid]&&_50[pid].isAmd))};}else{return {pid:pid,mid:mid,pack:_a1,url:url,executed:0,def:0};}},_a2=function(mid,_a3,_a4,_a5,_a6,_a7,_a8,_a9,_aa,_ab){var pid,_ac,_ad,_ae,url,_af,_b0,_b1;_b1=mid;_b0=/^\./.test(mid);if(/(^\/)|(\:)|(\.js$)/.test(mid)||(_b0&&!_a3)){return _88(0,mid,0,mid);}else{mid=_9c(_b0?(_a3.mid+"/../"+mid):mid);if(/^\./.test(mid)){throw _10("irrationalPath",mid);}if(!_ab&&!_b0&&_a7.star){_ae=_9a(mid,_a7.star[1]);}if(!_ae&&_a3){_ae=_9a(_a3.mid,_a7);_ae=_ae&&_9a(mid,_ae[1]);}if(_ae){mid=_ae[1]+mid.substring(_ae[3]);}_78=mid.match(/^([^\/]+)(\/(.+))?$/);pid=_78?_78[1]:"";if((_ac=_a4[pid])){mid=pid+"/"+(_ad=(_78[3]||_ac.main));}else{pid="";}var _b2=0,_b3=0;_b(_a9,function(_b4){var _b5=mid.match(_b4[0]);if(_b5&&_b5.length>_b2){_b3=_8(_b4[1])?mid.replace(_b4[0],_b4[1]):_b4[1];}});if(_b3){return _a2(_b3,0,_a4,_a5,_a6,_a7,_a8,_a9,_aa);}_af=_a5[mid];if(_af){return _aa?_88(_af.pid,_af.mid,_af.pack,_af.url):_a5[mid];}}_ae=_9a(mid,_a8);if(_ae){url=_ae[1]+mid.substring(_ae[3]);}else{if(pid){url=(_ac.location.slice(-1)==="/"?_ac.location.slice(0,-1):_ac.location)+"/"+_ad;}else{if(has("config-tlmSiblingOfDojo")){url="../"+mid;}else{url=mid;}}}if(!(/(^\/)|(\:)/.test(url))){url=_a6+url;}url+=".js";return _88(pid,mid,_ac,_9c(url));},_5e=function(mid,_b6,_b7){return _a2(mid,_b6,_50,_30,req.baseUrl,_51,_4f,_4d,undefined,_b7);};if(!has("foreign-loader")){var _b8=function(_b9,_ba,_bb){return _b9.normalize?_b9.normalize(_ba,function(mid){return _bc(mid,_bb);}):_bc(_ba,_bb);},_bd=0,_32=function(mid,_be,_bf){var _c0,_c1,_c2,_c3;_c0=mid.match(/^(.+?)\!(.*)$/);if(_c0){_c1=_32(_c0[1],_be,_bf);if(1&&_26==_27&&!_c1.executed){_33(_c1);if(_c1.injected===_22&&!_c1.executed){_38(function(){_37(_c1);});}if(_c1.executed){_c4(_c1);}else{_31.unshift(_c1);}}if(_c1.executed===_25&&!_c1.load){_c4(_c1);}if(_c1.load){_c2=_b8(_c1,_c0[2],_be);mid=(_c1.mid+"!"+(_c1.dynamic?++_bd+"!":"")+_c2);}else{_c2=_c0[2];mid=_c1.mid+"!"+(++_bd)+"!waitingForPlugin";}_c3={plugin:_c1,mid:mid,req:_5f(_be),prid:_c2};}else{_c3=_5e(mid,_be);}return _30[_c3.mid]||(!_bf&&(_30[_c3.mid]=_c3));};}var _bc=req.toAbsMid=function(mid,_c5){return _5e(mid,_c5).mid;},_5d=req.toUrl=function(_c6,_c7){var _c8=_5e(_c6+"/x",_c7),url=_c8.url;return _40(_c8.pid===0?_c6:url.substring(0,url.length-5));};if(!has("foreign-loader")){var _c9={injected:_22,executed:_25,def:_23,result:_23},_ca=function(mid){return _30[mid]=_e({mid:mid},_c9);},_cb=_ca("require"),_cc=_ca("exports"),_cd=_ca("module"),_ce=function(_cf,_d0){req.trace("loader-run-factory",[_cf.mid]);var _d1=_cf.def,_d2;1&&_28.unshift(_cf);if(has("config-dojo-loader-catches")){try{_d2=_8(_d1)?_d1.apply(null,_d0):_d1;}catch(e){_35(_45,_cf.result=_10("factoryThrew",[_cf,e]));}}else{_d2=_8(_d1)?_d1.apply(null,_d0):_d1;}_cf.result=_d2===undefined&&_cf.cjs?_cf.cjs.exports:_d2;1&&_28.shift(_cf);},_d3={},_d4=0,_c4=function(_d5){var _d6=_d5.result;_d5.dynamic=_d6.dynamic;_d5.normalize=_d6.normalize;_d5.load=_d6.load;return _d5;},_d7=function(_d8){var map={};_b(_d8.loadQ,function(_d9){var _da=_b8(_d8,_d9.prid,_d9.req.module),mid=_d8.dynamic?_d9.mid.replace(/waitingForPlugin$/,_da):(_d8.mid+"!"+_da),_db=_e(_e({},_d9),{mid:mid,prid:_da,injected:0});if(!_30[mid]||!_30[mid].injected){_ed(_30[mid]=_db);}map[_d9.mid]=_30[mid];_34(_d9);delete _30[_d9.mid];});_d8.loadQ=0;var _dc=function(_dd){for(var _de,_df=_dd.deps||[],i=0;i<_df.length;i++){_de=map[_df[i].mid];if(_de){_df[i]=_de;}}};for(var p in _30){_dc(_30[p]);}_b(_31,_dc);},_36=function(_e0){req.trace("loader-finish-exec",[_e0.mid]);_e0.executed=_25;_e0.defOrder=_d4++;1&&_b(_e0.provides,function(cb){cb();});if(_e0.loadQ){_c4(_e0);_d7(_e0);}for(i=0;i<_31.length;){if(_31[i]===_e0){_31.splice(i,1);}else{i++;}}if(/^require\*/.test(_e0.mid)){delete _30[_e0.mid];}},_e1=[],_37=function(_e2,_e3){if(_e2.executed===_24){req.trace("loader-circular-dependency",[_e1.concat(_e2.mid).join("->")]);return (!_e2.def||_e3)?_d3:(_e2.cjs&&_e2.cjs.exports);}if(!_e2.executed){if(!_e2.def){return _d3;}var mid=_e2.mid,_e4=_e2.deps||[],arg,_e5,_e6=[],i=0;if(0){_e1.push(mid);req.trace("loader-exec-module",["exec",_e1.length,mid]);}_e2.executed=_24;while((arg=_e4[i++])){_e5=((arg===_cb)?_5f(_e2):((arg===_cc)?_e2.cjs.exports:((arg===_cd)?_e2.cjs:_37(arg,_e3))));if(_e5===_d3){_e2.executed=0;req.trace("loader-exec-module",["abort",mid]);0&&_e1.pop();return _d3;}_e6.push(_e5);}_ce(_e2,_e6);_36(_e2);0&&_e1.pop();}return _e2.result;},_8a=0,_38=function(_e7){try{_8a++;_e7();}catch(e){throw e;}finally{_8a--;}if(_99()){_35("idle",[]);}},_81=function(){if(_8a){return;}_38(function(){_2a();for(var _e8,_e9,i=0;i<_31.length;){_e8=_d4;_e9=_31[i];_37(_e9);if(_e8!=_d4){_2a();i=0;}else{i++;}}});};}var _40=typeof _1.fixupUrl=="function"?_1.fixupUrl:function(url){url+="";return url+(_52?((/\?/.test(url)?"&":"?")+_52):"");};if(0){req.undef=function(_ea,_eb){var _ec=_32(_ea,_eb);_34(_ec);_e(_ec,{def:0,executed:0,injected:0,node:0,load:0});};}if(1){if(has("dojo-loader-eval-hint-url")===undefined){has.add("dojo-loader-eval-hint-url",1);}var _ed=function(_ee){var _ef=_ee.plugin;if(_ef.executed===_25&&!_ef.load){_c4(_ef);}var _f0=function(def){_ee.result=def;_34(_ee);_36(_ee);_81();};if(_ef.load){_ef.load(_ee.prid,_ee.req,_f0);}else{if(_ef.loadQ){_ef.loadQ.push(_ee);}else{_ef.loadQ=[_ee];_31.unshift(_ef);_33(_ef);}}},_90=0,_82=0,_f1=0,_91=function(_f2,_f3){if(has("config-stripStrict")){_f2=_f2.replace(/(["'])use strict\1/g,"");}_f1=1;if(has("config-dojo-loader-catches")){try{if(_f2===_90){_90.call(null);}else{req.eval(_f2,has("dojo-loader-eval-hint-url")?_f3.url:_f3.mid);}}catch(e){_35(_45,_10("evalModuleThrew",_f3));}}else{if(_f2===_90){_90.call(null);}else{req.eval(_f2,has("dojo-loader-eval-hint-url")?_f3.url:_f3.mid);}}_f1=0;},_33=function(_f4){var mid=_f4.mid,url=_f4.url;if(_f4.executed||_f4.injected||_93[mid]||(_f4.url&&((_f4.pack&&_93[_f4.url]===_f4.pack)||_93[_f4.url]==1))){return;}_94(_f4);if(0){var _f5=0;if(_f4.plugin&&_f4.plugin.isCombo){req.combo.add(_f4.plugin.mid,_f4.prid,0,req);_f5=1;}else{if(!_f4.plugin){_f5=req.combo.add(0,_f4.mid,_f4.url,req);}}if(_f5){_79=1;return;}}if(_f4.plugin){_ed(_f4);return;}var _f6=function(){_80(_f4);if(_f4.injected!==_22){if(has("dojo-enforceDefine")){_35(_45,_10("noDefine",_f4));return;}_34(_f4);_e(_f4,_c9);req.trace("loader-define-nonmodule",[_f4.url]);}if(1&&_26){!_28.length&&_81();}else{_81();}};_90=_53[mid]||_53[_54+_f4.url];if(_90){req.trace("loader-inject",["cache",_f4.mid,url]);_91(_90,_f4);_f6();return;}if(1&&_26){if(_f4.isXd){_26==_27&&(_26=xd);}else{if(_f4.isAmd&&_26!=_27){}else{var _f7=function(_f8){if(_26==_27){_28.unshift(_f4);_91(_f8,_f4);_28.shift();_80(_f4);if(!_f4.cjs){_34(_f4);_36(_f4);}if(_f4.finish){var _f9=mid+"*finish",_fa=_f4.finish;delete _f4.finish;def(_f9,["dojo",("dojo/require!"+_fa.join(",")).replace(/\./g,"/")],function(_fb){_b(_fa,function(mid){_fb.require(mid);});});_31.unshift(_32(_f9));}_f6();}else{_f8=_2b(_f4,_f8);if(_f8){_91(_f8,_f4);_f6();}else{_82=_f4;req.injectUrl(_40(url),_f6,_f4);_82=0;}}};req.trace("loader-inject",["xhr",_f4.mid,url,_26!=_27]);if(has("config-dojo-loader-catches")){try{req.getText(url,_26!=_27,_f7);}catch(e){_35(_45,_10("xhrInjectFailed",[_f4,e]));}}else{req.getText(url,_26!=_27,_f7);}return;}}}req.trace("loader-inject",["script",_f4.mid,url]);_82=_f4;req.injectUrl(_40(url),_f6,_f4);_82=0;},_fc=function(_fd,_fe,def){req.trace("loader-define-module",[_fd.mid,_fe]);if(0&&_fd.plugin&&_fd.plugin.isCombo){_fd.result=_8(def)?def():def;_34(_fd);_36(_fd);return _fd;}var mid=_fd.mid;if(_fd.injected===_22){_35(_45,_10("multipleDefine",_fd));return _fd;}_e(_fd,{deps:_fe,def:def,cjs:{id:_fd.mid,uri:_fd.url,exports:(_fd.result={}),setExports:function(_ff){_fd.cjs.exports=_ff;},config:function(){return _fd.config;}}});for(var i=0;_fe[i];i++){_fe[i]=_32(_fe[i],_fd);}if(1&&_26&&!_93[mid]){_7c(_fd);_31.push(_fd);_81();}_34(_fd);if(!_8(def)&&!_fe.length){_fd.result=def;_36(_fd);}return _fd;},_80=function(_100,mids){var _101=[],_102,args;while(_92.length){args=_92.shift();mids&&(args[0]=mids.shift());_102=(args[0]&&_32(args[0]))||_100;_101.push([_102,args[1],args[2]]);}_58(_100);_b(_101,function(args){_7c(_fc.apply(null,args));});};}var _103=0,_98=_5,_96=_5;if(1){_98=function(){_103&&clearTimeout(_103);_103=0;};_96=function(){_98();if(req.waitms){_103=_4.setTimeout(function(){_98();_35(_45,_10("timeout",_93));},req.waitms);}};}if(1){has.add("ie-event-behavior",doc.attachEvent&&typeof Windows==="undefined"&&(typeof opera==="undefined"||opera.toString()!="[object Opera]"));}if(1&&(1||1)){var _104=function(node,_105,_106,_107){if(!has("ie-event-behavior")){node.addEventListener(_105,_107,false);return function(){node.removeEventListener(_105,_107,false);};}else{node.attachEvent(_106,_107);return function(){node.detachEvent(_106,_107);};}},_108=_104(window,"load","onload",function(){req.pageLoaded=1;try{doc.readyState!="complete"&&(doc.readyState="complete");}catch(e){}_108();});if(1){var _75=doc.getElementsByTagName("script"),i=0,_76;while(!_57){if(!/^dojo/.test((_76=_75[i++])&&_76.type)){_57=_76;}}req.injectUrl=function(url,_109,_10a){var node=_10a.node=doc.createElement("script"),_10b=function(e){e=e||window.event;var node=e.target||e.srcElement;if(e.type==="load"||/complete|loaded/.test(node.readyState)){_10c();_10d();_109&&_109();}},_10c=_104(node,"load","onreadystatechange",_10b),_10d=_104(node,"error","onerror",function(e){_10c();_10d();_35(_45,_10("scriptError: "+url,[url,e]));});node.type="text/javascript";node.charset="utf-8";node.src=url;_57.parentNode.insertBefore(node,_57);return node;};}}if(1){req.log=function(){try{for(var i=0;i<arguments.length;i++){}}catch(e){}};}else{req.log=_5;}if(0){var _10e=req.trace=function(_10f,args){if(_10e.on&&_10e.group[_10f]){_35("trace",[_10f,args]);for(var arg,dump=[],text="trace:"+_10f+(args.length?(":"+args[0]):""),i=1;i<args.length;){arg=args[i++];if(_9(arg)){text+=", "+arg;}else{dump.push(arg);}}req.log(text);dump.length&&dump.push(".");req.log.apply(req,dump);}};_e(_10e,{on:1,group:{},set:function(_110,_111){if(_9(_110)){_10e.group[_110]=_111;}else{_e(_10e.group,_110);}}});_10e.set(_e(_e(_e({},_2.trace),_1.trace),_56.trace));on("config",function(_112){_112.trace&&_10e.set(_112.trace);});}else{req.trace=_5;}if(!has("foreign-loader")){var def=function(mid,_113,_114){var _115=arguments.length,_116=["require","exports","module"],args=[0,mid,_113];if(_115==1){args=[0,(_8(mid)?_116:[]),mid];}else{if(_115==2&&_9(mid)){args=[mid,(_8(_113)?_116:[]),_113];}else{if(_115==3){args=[mid,_113,_114];}}}if(0&&args[1]===_116){args[2].toString().replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,"").replace(/require\(["']([\w\!\-_\.\/]+)["']\)/g,function(_117,dep){args[1].push(dep);});}req.trace("loader-define",args.slice(0,2));var _118=args[0]&&_32(args[0]),_119;if(_118&&!_93[_118.mid]){_7c(_fc(_118,args[1],args[2]));}else{if(!has("ie-event-behavior")||!1||_f1){_92.push(args);}else{_118=_118||_82;if(!_118){for(mid in _93){_119=_30[mid];if(_119&&_119.node&&_119.node.readyState==="interactive"){_118=_119;break;}}if(0&&!_118){for(var i=0;i<_7a.length;i++){_118=_7a[i];if(_118.node&&_118.node.readyState==="interactive"){break;}_118=0;}}}if(0&&_a(_118)){_7c(_fc(_32(_118.shift()),args[1],args[2]));if(!_118.length){_7a.splice(i,1);}}else{if(_118){_58(_118);_7c(_fc(_118,args[1],args[2]));}else{_35(_45,_10("ieDefineFailed",args[0]));}}_81();}}};def.amd={vendor:"dojotoolkit.org"};if(0){req.def=def;}}else{var def=_5;}_e(_e(req,_2.loaderPatch),_1.loaderPatch);on(_45,function(arg){try{console.error(arg);if(arg instanceof Error){for(var p in arg){}}}catch(e){}});_e(req,{uid:uid,cache:_53,packs:_50});if(0){_e(req,{paths:_4e,aliases:_4d,modules:_30,legacyMode:_26,execQ:_31,defQ:_92,waiting:_93,packs:_50,mapProgs:_51,pathsMapProg:_4f,listenerQueues:_44,computeMapProg:_61,computeAliases:_63,runMapProg:_9a,compactPath:_9c,getModuleInfo:_a2});}if(_4.define){if(1){_35(_45,_10("defineAlreadyDefined",0));}return;}else{_4.define=def;_4.require=req;if(0){require=req;}}if(0&&req.combo&&req.combo.plugins){var _11a=req.combo.plugins,_11b;for(_11b in _11a){_e(_e(_32(_11b),_11a[_11b]),{isCombo:1,executed:"executed",load:1});}}if(1&&!has("foreign-loader")){_b(_6a,function(c){_6b(c);});var _11c=_56.deps||_1.deps||_2.deps,_11d=_56.callback||_1.callback||_2.callback;req.boot=(_11c||_11d)?[_11c||[],_11d]:0;}if(!1){!req.async&&req(["dojo"]);req.boot&&req.apply(null,req.boot);}})(function(_11e){return _11e.dojoConfig||_11e.djConfig||_11e.require||{};},{async:0,hasCache:{"config-selectorEngine":"acme","config-tlmSiblingOfDojo":1,"dojo-built":1,"dojo-loader":1,dom:1,"host-browser":1},packages:[{location:"../dijit",name:"dijit"},{location:".",name:"dojo"}]});require({cache:{"dojo/main":function(){define(["./_base/kernel","./has","require","./sniff","./_base/lang","./_base/array","./_base/config","./ready","./_base/declare","./_base/connect","./_base/Deferred","./_base/json","./_base/Color","./has!dojo-firebug?./_firebug/firebug","./_base/browser","./_base/loader"],function(_11f,has,_120,_121,lang,_122,_123,_124){if(_123.isDebug){_120(["./_firebug/firebug"]);}1||has.add("dojo-config-require",1);if(1){var deps=_123.require;if(deps){deps=_122.map(lang.isArray(deps)?deps:[deps],function(item){return item.replace(/\./g,"/");});if(_11f.isAsync){_120(deps);}else{_124(1,function(){_120(deps);});}}}return _11f;});},"dojo/_base/kernel":function(){define(["../global","../has","./config","require","module"],function(_125,has,_126,_127,_128){var i,p,_129={},_12a={},dojo={config:_126,global:_125,dijit:_129,dojox:_12a};var _12b={dojo:["dojo",dojo],dijit:["dijit",_129],dojox:["dojox",_12a]},_12c=(_127.map&&_127.map[_128.id.match(/[^\/]+/)[0]]),item;for(p in _12c){if(_12b[p]){_12b[p][0]=_12c[p];}else{_12b[p]=[_12c[p],{}];}}for(p in _12b){item=_12b[p];item[1]._scopeName=item[0];if(!_126.noGlobals){_125[item[0]]=item[1];}}dojo.scopeMap=_12b;dojo.baseUrl=dojo.config.baseUrl=_127.baseUrl;dojo.isAsync=!1||_127.async;dojo.locale=_126.locale;var rev="$Rev:$".match(/[0-9a-f]{7,}/);dojo.version={major:1,minor:16,patch:5,flag:"",revision:rev?rev[0]:NaN,toString:function(){var v=dojo.version;return v.major+"."+v.minor+"."+v.patch+v.flag+" ("+v.revision+")";}};1||has.add("extend-dojo",1);if(!has("csp-restrictions")){(Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(dojo);}if(0){dojo.exit=function(_12d){quit(_12d);};}else{dojo.exit=function(){};}if(!has("host-webworker")){1||has.add("dojo-guarantee-console",1);}if(1){has.add("console-as-object",function(){return Function.prototype.bind&&console&&typeof console.log==="object";});typeof console!="undefined"||(console={});var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var tn;i=0;while((tn=cn[i++])){if(!console[tn]){(function(){var tcn=tn+"";console[tcn]=("log" in console)?function(){var a=Array.prototype.slice.call(arguments);a.unshift(tcn+":");console["log"](a.join(" "));}:function(){};console[tcn]._fake=true;})();}else{if(has("console-as-object")){console[tn]=Function.prototype.bind.call(console[tn],console);}}}}has.add("dojo-debug-messages",!!_126.isDebug);dojo.deprecated=dojo.experimental=function(){};if(has("dojo-debug-messages")){dojo.deprecated=function(_12e,_12f,_130){var _131="DEPRECATED: "+_12e;if(_12f){_131+=" "+_12f;}if(_130){_131+=" -- will be removed in version: "+_130;}console.warn(_131);};dojo.experimental=function(_132,_133){var _134="EXPERIMENTAL: "+_132+" -- APIs subject to change without notice.";if(_133){_134+=" "+_133;}console.warn(_134);};}1||has.add("dojo-modulePaths",1);if(1){if(_126.modulePaths){dojo.deprecated("dojo.modulePaths","use paths configuration");var _135={};for(p in _126.modulePaths){_135[p.replace(/\./g,"/")]=_126.modulePaths[p];}_127({paths:_135});}}1||has.add("dojo-moduleUrl",1);if(1){dojo.moduleUrl=function(_136,url){dojo.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var _137=null;if(_136){_137=_127.toUrl(_136.replace(/\./g,"/")+(url?("/"+url):"")+"/*.*").replace(/\/\*\.\*/,"")+(url?"":"/");}return _137;};}dojo._hasResource={};return dojo;});},"dojo/global":function(){define(function(){if(typeof global!=="undefined"&&typeof global!=="function"){return global;}else{if(typeof window!=="undefined"){return window;}else{if(typeof self!=="undefined"){return self;}}}return this;});},"dojo/has":function(){define(["./global","require","module"],function(_138,_139,_13a){var has=_139.has||function(){};if(!1){var _13b=typeof window!="undefined"&&typeof location!="undefined"&&typeof document!="undefined"&&window.location==location&&window.document==document,doc=_13b&&document,_13c=doc&&doc.createElement("DiV"),_13d=(_13a.config&&_13a.config())||{};has=function(name){return typeof _13d[name]=="function"?(_13d[name]=_13d[name](_138,doc,_13c)):_13d[name];};has.cache=_13d;has.add=function(name,test,now,_13e){(typeof _13d[name]=="undefined"||_13e)&&(_13d[name]=test);return now&&has(name);};1||has.add("host-browser",_13b);0&&has.add("host-node",(typeof process=="object"&&process.versions&&process.versions.node&&process.versions.v8));0&&has.add("host-rhino",(typeof load=="function"&&(typeof Packages=="function"||typeof Packages=="object")));1||has.add("dom",_13b);1||has.add("dojo-dom-ready-api",1);1||has.add("dojo-sniff",1);}if(1){has.add("dom-addeventlistener",!!document.addEventListener);has.add("touch","ontouchstart" in document||("onpointerdown" in document&&navigator.maxTouchPoints>0)||window.navigator.msMaxTouchPoints);has.add("touch-events","ontouchstart" in document);has.add("pointer-events","pointerEnabled" in window.navigator?window.navigator.pointerEnabled:"PointerEvent" in window);has.add("MSPointer",window.navigator.msPointerEnabled);has.add("touch-action",has("touch")&&has("pointer-events"));has.add("device-width",screen.availWidth||innerWidth);var form=document.createElement("form");has.add("dom-attributes-explicit",form.attributes.length==0);has.add("dom-attributes-specified-flag",form.attributes.length>0&&form.attributes.length<40);}has.clearElement=function(_13f){_13f.innerHTML="";return _13f;};has.normalize=function(id,_140){var _141=id.match(/[\?:]|[^:\?]*/g),i=0,get=function(skip){var term=_141[i++];if(term==":"){return 0;}else{if(_141[i++]=="?"){if(!skip&&has(term)){return get();}else{get(true);return get(skip);}}return term||0;}};id=get();return id&&_140(id);};has.load=function(id,_142,_143){if(id){_142([id],_143);}else{_143();}};return has;});},"dojo/_base/config":function(){define(["../global","../has","require"],function(_144,has,_145){var _146={};if(1){var src=_145.rawConfig,p;for(p in src){_146[p]=src[p];}}else{var _147=function(_148,_149,_14a){for(p in _148){p!="has"&&has.add(_149+p,_148[p],0,_14a);}};_146=1?_145.rawConfig:_144.dojoConfig||_144.djConfig||{};_147(_146,"config",1);_147(_146.has,"",1);}if(!_146.locale&&typeof navigator!="undefined"){var _14b=(navigator.languages&&navigator.languages.length)?navigator.languages[0]:(navigator.language||navigator.userLanguage);if(_14b){_146.locale=_14b.toLowerCase();}}return _146;});},"dojo/sniff":function(){define(["./has"],function(has){if(1){var n=navigator,dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);has.add("air",dua.indexOf("AdobeAIR")>=0);has.add("wp",parseFloat(dua.split("Windows Phone")[1])||undefined);has.add("msapp",parseFloat(dua.split("MSAppHost/")[1])||undefined);has.add("khtml",dav.indexOf("Konqueror")>=0?tv:undefined);has.add("edge",parseFloat(dua.split("Edge/")[1])||undefined);has.add("opr",parseFloat(dua.split("OPR/")[1])||undefined);has.add("webkit",!has("wp")&&!has("edge")&&parseFloat(dua.split("WebKit/")[1])||undefined);has.add("chrome",!has("edge")&&!has("opr")&&parseFloat(dua.split("Chrome/")[1])||undefined);has.add("android",!has("wp")&&parseFloat(dua.split("Android ")[1])||undefined);has.add("safari",dav.indexOf("Safari")>=0&&!has("wp")&&!has("chrome")&&!has("android")&&!has("edge")&&!has("opr")?parseFloat(dav.split("Version/")[1]):undefined);has.add("mac",dav.indexOf("Macintosh")>=0);has.add("quirks",document.compatMode=="BackCompat");if(!has("wp")&&dua.match(/(iPhone|iPod|iPad)/)){var p=RegExp.$1.replace(/P/,"p");var v=dua.match(/OS ([\d_]+)/)?RegExp.$1:"1";var os=parseFloat(v.replace(/_/,".").replace(/_/g,""));has.add(p,os);has.add("ios",os);}has.add("bb",(dua.indexOf("BlackBerry")>=0||dua.indexOf("BB10")>=0)&&parseFloat(dua.split("Version/")[1])||undefined);has.add("trident",parseFloat(dav.split("Trident/")[1])||undefined);has.add("svg",typeof SVGAngle!=="undefined");if(!has("webkit")){if(dua.indexOf("Opera")>=0){has.add("opera",tv>=9.8?parseFloat(dua.split("Version/")[1])||tv:tv);}if(dua.indexOf("Gecko")>=0&&!has("wp")&&!has("khtml")&&!has("trident")&&!has("edge")){has.add("mozilla",tv);}if(has("mozilla")){has.add("ff",parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1])||undefined);}if(document.all&&!has("opera")){var isIE=parseFloat(dav.split("MSIE ")[1])||undefined;var mode=document.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}has.add("ie",isIE);}has.add("wii",typeof opera!="undefined"&&opera.wiiremote);}}return has;});},"dojo/_base/lang":function(){define(["./kernel","../has","../sniff"],function(dojo,has){has.add("bug-for-in-skips-shadowed",function(){for(var i in {toString:1}){return 0;}return 1;});var _14c=has("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],_14d=_14c.length,_14e=function(_14f,_150,_151){if(!_151){if(_14f[0]&&dojo.scopeMap[_14f[0]]){_151=dojo.scopeMap[_14f.shift()][1];}else{_151=dojo.global;}}try{for(var i=0;i<_14f.length;i++){var p=_14f[i];if(p==="__proto__"||p==="constructor"){return;}if(!(p in _151)){if(_150){_151[p]={};}else{return;}}_151=_151[p];}return _151;}catch(e){}},opts=Object.prototype.toString,_152=function(obj,_153,_154){return (_154||[]).concat(Array.prototype.slice.call(obj,_153||0));},_155=/\{([^\}]+)\}/g;var lang={_extraNames:_14c,_mixin:function(dest,_156,_157){var name,s,i,_158={};for(name in _156){s=_156[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _158)||_158[name]!==s))){dest[name]=_157?_157(s):s;}}if(has("bug-for-in-skips-shadowed")){if(_156){for(i=0;i<_14d;++i){name=_14c[i];s=_156[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _158)||_158[name]!==s))){dest[name]=_157?_157(s):s;}}}}return dest;},mixin:function(dest,_159){if(!dest){dest={};}for(var i=1,l=arguments.length;i<l;i++){lang._mixin(dest,arguments[i]);}return dest;},setObject:function(name,_15a,_15b){var _15c=name.split("."),p=_15c.pop(),obj=_14e(_15c,true,_15b);return obj&&p?(obj[p]=_15a):undefined;},getObject:function(name,_15d,_15e){return !name?_15e:_14e(name.split("."),_15d,_15e);},exists:function(name,obj){return lang.getObject(name,false,obj)!==undefined;},isString:function(it){return (typeof it=="string"||it instanceof String);},isArray:Array.isArray||function(it){return opts.call(it)=="[object Array]";},isFunction:function(it){return opts.call(it)==="[object Function]";},isObject:function(it){return it!==undefined&&(it===null||typeof it=="object"||lang.isArray(it)||lang.isFunction(it));},isArrayLike:function(it){return !!it&&!lang.isString(it)&&!lang.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(lang.isArray(it)||isFinite(it.length));},isAlien:function(it){return it&&!lang.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));},extend:function(ctor,_15f){for(var i=1,l=arguments.length;i<l;i++){lang._mixin(ctor.prototype,arguments[i]);}return ctor;},_hitchArgs:function(_160,_161){var pre=lang._toArray(arguments,2);var _162=lang.isString(_161);return function(){var args=lang._toArray(arguments);var f=_162?(_160||dojo.global)[_161]:_161;return f&&f.apply(_160||this,pre.concat(args));};},hitch:function(_163,_164){if(arguments.length>2){return lang._hitchArgs.apply(dojo,arguments);}if(!_164){_164=_163;_163=null;}if(lang.isString(_164)){_163=_163||dojo.global;if(!_163[_164]){throw (["lang.hitch: scope[\"",_164,"\"] is null (scope=\"",_163,"\")"].join(""));}return function(){return _163[_164].apply(_163,arguments||[]);};}return !_163?_164:function(){return _164.apply(_163,arguments||[]);};},delegate:(function(){function TMP(){};return function(obj,_165){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_165){lang._mixin(tmp,_165);}return tmp;};})(),_toArray:has("ie")?(function(){function slow(obj,_166,_167){var arr=_167||[];for(var x=_166||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};return function(obj){return ((obj.item)?slow:_152).apply(this,arguments);};})():_152,partial:function(_168){var arr=[null];return lang.hitch.apply(dojo,arr.concat(lang._toArray(arguments)));},clone:function(src){if(!src||typeof src!="object"||lang.isFunction(src)){return src;}if(src.nodeType&&"cloneNode" in src){return src.cloneNode(true);}if(src instanceof Date){return new Date(src.getTime());}if(src instanceof RegExp){return new RegExp(src);}var r,i,l;if(lang.isArray(src)){r=[];for(i=0,l=src.length;i<l;++i){if(i in src){r[i]=lang.clone(src[i]);}}}else{r=src.constructor?new src.constructor():{};}return lang._mixin(r,src,lang.clone);},trim:String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");},replace:function(tmpl,map,_169){return tmpl.replace(_169||_155,lang.isFunction(map)?map:function(_16a,k){return lang.getObject(k,false,map);});}};1&&lang.mixin(dojo,lang);return lang;});},"dojo/_base/array":function(){define(["./kernel","../has","./lang"],function(dojo,has,lang){var _16b={},u;function _16c(fn){return _16b[fn]=new Function("item","index","array",fn);};function _16d(some){var _16e=!some;return function(a,fn,o){var i=0,l=a&&a.length||0,_16f;if(l&&typeof a=="string"){a=a.split("");}if(typeof fn=="string"){fn=_16b[fn]||_16c(fn);}if(o){for(;i<l;++i){_16f=!fn.call(o,a[i],i,a);if(some^_16f){return !_16f;}}}else{for(;i<l;++i){_16f=!fn(a[i],i,a);if(some^_16f){return !_16f;}}}return _16e;};};function _170(up){var _171=1,_172=0,_173=0;if(!up){_171=_172=_173=-1;}return function(a,x,from,last){if(last&&_171>0){return _174.lastIndexOf(a,x,from);}var l=a&&a.length||0,end=up?l+_173:_172,i;if(from===u){i=up?_172:l+_173;}else{if(from<0){i=l+from;if(i<0){i=_172;}}else{i=from>=l?l+_173:from;}}if(l&&typeof a=="string"){a=a.split("");}for(;i!=end;i+=_171){if(a[i]==x){return i;}}return -1;};};var _174={every:_16d(false),some:_16d(true),indexOf:_170(true),lastIndexOf:_170(false),forEach:function(arr,_175,_176){var i=0,l=arr&&arr.length||0;if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _175=="string"){_175=_16b[_175]||_16c(_175);}if(_176){for(;i<l;++i){_175.call(_176,arr[i],i,arr);}}else{for(;i<l;++i){_175(arr[i],i,arr);}}},map:function(arr,_177,_178,Ctr){var i=0,l=arr&&arr.length||0,out=new (Ctr||Array)(l);if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _177=="string"){_177=_16b[_177]||_16c(_177);}if(_178){for(;i<l;++i){out[i]=_177.call(_178,arr[i],i,arr);}}else{for(;i<l;++i){out[i]=_177(arr[i],i,arr);}}return out;},filter:function(arr,_179,_17a){var i=0,l=arr&&arr.length||0,out=[],_17b;if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _179=="string"){_179=_16b[_179]||_16c(_179);}if(_17a){for(;i<l;++i){_17b=arr[i];if(_179.call(_17a,_17b,i,arr)){out.push(_17b);}}}else{for(;i<l;++i){_17b=arr[i];if(_179(_17b,i,arr)){out.push(_17b);}}}return out;},clearCache:function(){_16b={};}};1&&lang.mixin(dojo,_174);return _174;});},"dojo/ready":function(){define(["./_base/kernel","./has","require","./domReady","./_base/lang"],function(dojo,has,_17c,_17d,lang){var _17e=0,_17f=[],_180=0,_181=function(){_17e=1;dojo._postLoad=dojo.config.afterOnLoad=true;_182();},_182=function(){if(_180){return;}_180=1;while(_17e&&(!_17d||_17d._Q.length==0)&&(_17c.idle?_17c.idle():true)&&_17f.length){var f=_17f.shift();try{f();}catch(e){e.info=e.message;if(_17c.signal){_17c.signal("error",e);}else{throw e;}}}_180=0;};_17c.on&&_17c.on("idle",_182);if(_17d){_17d._onQEmpty=_182;}var _183=dojo.ready=dojo.addOnLoad=function(_184,_185,_186){var _187=lang._toArray(arguments);if(typeof _184!="number"){_186=_185;_185=_184;_184=1000;}else{_187.shift();}_186=_186?lang.hitch.apply(dojo,_187):function(){_185();};_186.priority=_184;for(var i=0;i<_17f.length&&_184>=_17f[i].priority;i++){}_17f.splice(i,0,_186);_182();};1||has.add("dojo-config-addOnLoad",1);if(1){var dca=dojo.config.addOnLoad;if(dca){_183[(lang.isArray(dca)?"apply":"call")](dojo,dca);}}if(1&&dojo.config.parseOnLoad&&!dojo.isAsync){_183(99,function(){if(!dojo.parser){dojo.deprecated("Add explicit require(['dojo/parser']);","","2.0");_17c(["dojo/parser"]);}});}if(_17d){_17d(_181);}else{_181();}return _183;});},"dojo/domReady":function(){define(["./global","./has"],function(_188,has){var doc=document,_189={"loaded":1,"complete":1},_18a=typeof doc.readyState!="string",_18b=!!_189[doc.readyState],_18c=[],_18d;function _18e(_18f){_18c.push(_18f);if(_18b){_190();}};_18e.load=function(id,req,load){_18e(load);};_18e._Q=_18c;_18e._onQEmpty=function(){};if(_18a){doc.readyState="loading";}function _190(){if(_18d){return;}_18d=true;while(_18c.length){try{(_18c.shift())(doc);}catch(err){console.error(err,"in domReady callback",err.stack);}}_18d=false;_18e._onQEmpty();};if(!_18b){var _191=[],_192=function(evt){evt=evt||_188.event;if(_18b||(evt.type=="readystatechange"&&!_189[doc.readyState])){return;}if(_18a){doc.readyState="complete";}_18b=1;_190();},on=function(node,_193){node.addEventListener(_193,_192,false);_18c.push(function(){node.removeEventListener(_193,_192,false);});};if(!has("dom-addeventlistener")){on=function(node,_194){_194="on"+_194;node.attachEvent(_194,_192);_18c.push(function(){node.detachEvent(_194,_192);});};var div=doc.createElement("div");try{if(div.doScroll&&_188.frameElement===null){_191.push(function(){try{div.doScroll("left");return 1;}catch(e){}});}}catch(e){}}on(doc,"DOMContentLoaded");on(_188,"load");if("onreadystatechange" in doc){on(doc,"readystatechange");}else{if(!_18a){_191.push(function(){return _189[doc.readyState];});}}if(_191.length){var _195=function(){if(_18b){return;}var i=_191.length;while(i--){if(_191[i]()){_192("poller");return;}}setTimeout(_195,30);};_195();}}return _18e;});},"dojo/_base/declare":function(){define(["./kernel","../has","./lang"],function(dojo,has,lang){var mix=lang.mixin,op=Object.prototype,opts=op.toString,xtor,_196=0,_197="constructor";if(!has("csp-restrictions")){xtor=new Function;}else{xtor=function(){};}function err(msg,cls){throw new Error("declare"+(cls?" "+cls:"")+": "+msg);};function _198(_199,_19a){var _19b=[],_19c=[{cls:0,refs:[]}],_19d={},_19e=1,l=_199.length,i=0,j,lin,base,top,_19f,rec,name,refs;for(;i<l;++i){base=_199[i];if(!base){err("mixin #"+i+" is unknown. Did you use dojo.require to pull it in?",_19a);}else{if(opts.call(base)!="[object Function]"){err("mixin #"+i+" is not a callable constructor.",_19a);}}lin=base._meta?base._meta.bases:[base];top=0;for(j=lin.length-1;j>=0;--j){_19f=lin[j].prototype;if(!_19f.hasOwnProperty("declaredClass")){_19f.declaredClass="uniqName_"+(_196++);}name=_19f.declaredClass;if(!_19d.hasOwnProperty(name)){_19d[name]={count:0,refs:[],cls:lin[j]};++_19e;}rec=_19d[name];if(top&&top!==rec){rec.refs.push(top);++top.count;}top=rec;}++top.count;_19c[0].refs.push(top);}while(_19c.length){top=_19c.pop();_19b.push(top.cls);--_19e;while(refs=top.refs,refs.length==1){top=refs[0];if(!top||--top.count){top=0;break;}_19b.push(top.cls);--_19e;}if(top){for(i=0,l=refs.length;i<l;++i){top=refs[i];if(!--top.count){_19c.push(top);}}}}if(_19e){err("can't build consistent linearization",_19a);}base=_199[0];_19b[0]=base?base._meta&&base===_19b[_19b.length-base._meta.bases.length]?base._meta.bases.length:1:0;return _19b;};function _1a0(args,a,f,g){var name,_1a1,_1a2,_1a3,meta,base,_1a4,opf,pos,_1a5=this._inherited=this._inherited||{};if(typeof args==="string"){name=args;args=a;a=f;f=g;}if(typeof args==="function"){_1a3=args;args=a;a=f;}else{try{_1a3=args.callee;}catch(e){if(e instanceof TypeError){err("strict mode inherited() requires the caller function to be passed before arguments",this.declaredClass);}else{throw e;}}}name=name||_1a3.nom;if(!name){err("can't deduce a name to call inherited()",this.declaredClass);}f=g=0;meta=this.constructor._meta;_1a2=meta.bases;pos=_1a5.p;if(name!=_197){if(_1a5.c!==_1a3){pos=0;base=_1a2[0];meta=base._meta;if(meta.hidden[name]!==_1a3){_1a1=meta.chains;if(_1a1&&typeof _1a1[name]=="string"){err("calling chained method with inherited: "+name,this.declaredClass);}do{meta=base._meta;_1a4=base.prototype;if(meta&&(_1a4[name]===_1a3&&_1a4.hasOwnProperty(name)||meta.hidden[name]===_1a3)){break;}}while(base=_1a2[++pos]);pos=base?pos:-1;}}base=_1a2[++pos];if(base){_1a4=base.prototype;if(base._meta&&_1a4.hasOwnProperty(name)){f=_1a4[name];}else{opf=op[name];do{_1a4=base.prototype;f=_1a4[name];if(f&&(base._meta?_1a4.hasOwnProperty(name):f!==opf)){break;}}while(base=_1a2[++pos]);}}f=base&&f||op[name];}else{if(_1a5.c!==_1a3){pos=0;meta=_1a2[0]._meta;if(meta&&meta.ctor!==_1a3){_1a1=meta.chains;if(!_1a1||_1a1.constructor!=="manual"){err("calling chained constructor with inherited",this.declaredClass);}while(base=_1a2[++pos]){meta=base._meta;if(meta&&meta.ctor===_1a3){break;}}pos=base?pos:-1;}}while(base=_1a2[++pos]){meta=base._meta;f=meta?meta.ctor:base;if(f){break;}}f=base&&f;}_1a5.c=f;_1a5.p=pos;if(f){return a===true?f:f.apply(this,a||args);}};function _1a6(name,args,a){if(typeof name==="string"){if(typeof args==="function"){return this.__inherited(name,args,a,true);}return this.__inherited(name,args,true);}else{if(typeof name==="function"){return this.__inherited(name,args,true);}}return this.__inherited(name,true);};function _1a7(args,a1,a2,a3){var f=this.getInherited(args,a1,a2);if(f){return f.apply(this,a3||a2||a1||args);}};var _1a8=dojo.config.isDebug?_1a7:_1a0;function _1a9(cls){var _1aa=this.constructor._meta.bases;for(var i=0,l=_1aa.length;i<l;++i){if(_1aa[i]===cls){return true;}}return this instanceof cls;};function _1ab(_1ac,_1ad){for(var name in _1ad){if(name!=_197&&_1ad.hasOwnProperty(name)){_1ac[name]=_1ad[name];}}if(has("bug-for-in-skips-shadowed")){for(var _1ae=lang._extraNames,i=_1ae.length;i;){name=_1ae[--i];if(name!=_197&&_1ad.hasOwnProperty(name)){_1ac[name]=_1ad[name];}}}};function _1af(_1b0,_1b1){var name,t;for(name in _1b1){t=_1b1[name];if((t!==op[name]||!(name in op))&&name!=_197){if(opts.call(t)=="[object Function]"){t.nom=name;}_1b0[name]=t;}}if(has("bug-for-in-skips-shadowed")&&_1b1){for(var _1b2=lang._extraNames,i=_1b2.length;i;){name=_1b2[--i];t=_1b1[name];if((t!==op[name]||!(name in op))&&name!=_197){if(opts.call(t)=="[object Function]"){t.nom=name;}_1b0[name]=t;}}}return _1b0;};function _1b3(_1b4){_1b5.safeMixin(this.prototype,_1b4);return this;};function _1b6(_1b7,_1b8){if(!(_1b7 instanceof Array||typeof _1b7==="function")){_1b8=_1b7;_1b7=undefined;}_1b8=_1b8||{};_1b7=_1b7||[];return _1b5([this].concat(_1b7),_1b8);};function _1b9(_1ba,_1bb){return function(){var a=arguments,args=a,a0=a[0],f,i,m,l=_1ba.length,_1bc;if(!(this instanceof a.callee)){return _1bd(a);}if(_1bb&&(a0&&a0.preamble||this.preamble)){_1bc=new Array(_1ba.length);_1bc[0]=a;for(i=0;;){a0=a[0];if(a0){f=a0.preamble;if(f){a=f.apply(this,a)||a;}}f=_1ba[i].prototype;f=f.hasOwnProperty("preamble")&&f.preamble;if(f){a=f.apply(this,a)||a;}if(++i==l){break;}_1bc[i]=a;}}for(i=l-1;i>=0;--i){f=_1ba[i];m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,_1bc?_1bc[i]:a);}}f=this.postscript;if(f){f.apply(this,args);}};};function _1be(ctor,_1bf){return function(){var a=arguments,t=a,a0=a[0],f;if(!(this instanceof a.callee)){return _1bd(a);}if(_1bf){if(a0){f=a0.preamble;if(f){t=f.apply(this,t)||t;}}f=this.preamble;if(f){f.apply(this,t);}}if(ctor){ctor.apply(this,a);}f=this.postscript;if(f){f.apply(this,a);}};};function _1c0(_1c1){return function(){var a=arguments,i=0,f,m;if(!(this instanceof a.callee)){return _1bd(a);}for(;f=_1c1[i];++i){m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,a);break;}}f=this.postscript;if(f){f.apply(this,a);}};};function _1c2(name,_1c3,_1c4){return function(){var b,m,f,i=0,step=1;if(_1c4){i=_1c3.length-1;step=-1;}for(;b=_1c3[i];i+=step){m=b._meta;f=(m?m.hidden:b.prototype)[name];if(f){f.apply(this,arguments);}}};};function _1c5(ctor){xtor.prototype=ctor.prototype;var t=new xtor;xtor.prototype=null;return t;};function _1bd(args){var ctor=args.callee,t=_1c5(ctor);ctor.apply(t,args);return t;};function _1b5(_1c6,_1c7,_1c8){if(typeof _1c6!="string"){_1c8=_1c7;_1c7=_1c6;_1c6="";}_1c8=_1c8||{};var _1c9,i,t,ctor,name,_1ca,_1cb,_1cc=1,_1cd=_1c7;if(opts.call(_1c7)=="[object Array]"){_1ca=_198(_1c7,_1c6);t=_1ca[0];_1cc=_1ca.length-t;_1c7=_1ca[_1cc];}else{_1ca=[0];if(_1c7){if(opts.call(_1c7)=="[object Function]"){t=_1c7._meta;_1ca=_1ca.concat(t?t.bases:_1c7);}else{err("base class is not a callable constructor.",_1c6);}}else{if(_1c7!==null){err("unknown base class. Did you use dojo.require to pull it in?",_1c6);}}}if(_1c7){for(i=_1cc-1;;--i){_1c9=_1c5(_1c7);if(!i){break;}t=_1ca[i];(t._meta?_1ab:mix)(_1c9,t.prototype);if(has("csp-restrictions")){ctor=function(){};}else{ctor=new Function;}ctor.superclass=_1c7;ctor.prototype=_1c9;_1c7=_1c9.constructor=ctor;}}else{_1c9={};}_1b5.safeMixin(_1c9,_1c8);t=_1c8.constructor;if(t!==op.constructor){t.nom=_197;_1c9.constructor=t;}for(i=_1cc-1;i;--i){t=_1ca[i]._meta;if(t&&t.chains){_1cb=mix(_1cb||{},t.chains);}}if(_1c9["-chains-"]){_1cb=mix(_1cb||{},_1c9["-chains-"]);}if(_1c7&&_1c7.prototype&&_1c7.prototype["-chains-"]){_1cb=mix(_1cb||{},_1c7.prototype["-chains-"]);}t=!_1cb||!_1cb.hasOwnProperty(_197);_1ca[0]=ctor=(_1cb&&_1cb.constructor==="manual")?_1c0(_1ca):(_1ca.length==1?_1be(_1c8.constructor,t):_1b9(_1ca,t));ctor._meta={bases:_1ca,hidden:_1c8,chains:_1cb,parents:_1cd,ctor:_1c8.constructor};ctor.superclass=_1c7&&_1c7.prototype;ctor.extend=_1b3;ctor.createSubclass=_1b6;ctor.prototype=_1c9;_1c9.constructor=ctor;_1c9.getInherited=_1a6;_1c9.isInstanceOf=_1a9;_1c9.inherited=_1a8;_1c9.__inherited=_1a0;if(_1c6){_1c9.declaredClass=_1c6;lang.setObject(_1c6,ctor);}if(_1cb){for(name in _1cb){if(_1c9[name]&&typeof _1cb[name]=="string"&&name!=_197){t=_1c9[name]=_1c2(name,_1ca,_1cb[name]==="after");t.nom=name;}}}return ctor;};dojo.safeMixin=_1b5.safeMixin=_1af;dojo.declare=_1b5;return _1b5;});},"dojo/_base/connect":function(){define(["./kernel","../on","../topic","../aspect","./event","../mouse","./sniff","./lang","../keys"],function(dojo,on,hub,_1ce,_1cf,_1d0,has,lang){has.add("events-keypress-typed",function(){var _1d1={charCode:0};try{_1d1=document.createEvent("KeyboardEvent");(_1d1.initKeyboardEvent||_1d1.initKeyEvent).call(_1d1,"keypress",true,true,null,false,false,false,false,9,3);}catch(e){}return _1d1.charCode==0&&!has("opera");});function _1d2(obj,_1d3,_1d4,_1d5,_1d6){_1d5=lang.hitch(_1d4,_1d5);if(!obj||!(obj.addEventListener||obj.attachEvent)){return _1ce.after(obj||dojo.global,_1d3,_1d5,true);}if(typeof _1d3=="string"&&_1d3.substring(0,2)=="on"){_1d3=_1d3.substring(2);}if(!obj){obj=dojo.global;}if(!_1d6){switch(_1d3){case "keypress":_1d3=_1d7;break;case "mouseenter":_1d3=_1d0.enter;break;case "mouseleave":_1d3=_1d0.leave;break;}}return on(obj,_1d3,_1d5,_1d6);};var _1d8={106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39,229:113};var _1d9=has("mac")?"metaKey":"ctrlKey";var _1da=function(evt,_1db){var faux=lang.mixin({},evt,_1db);_1dc(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};function _1dc(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;};var _1d7;if(has("events-keypress-typed")){var _1dd=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};_1d7=function(_1de,_1df){var _1e0=on(_1de,"keydown",function(evt){var k=evt.keyCode;var _1e1=(k!=13)&&k!=32&&(k!=27||!has("ie"))&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222)&&k!=229;if(_1e1||evt.ctrlKey){var c=_1e1?0:k;if(evt.ctrlKey){if(k==3||k==13){return _1df.call(evt.currentTarget,evt);}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=_1d8[c]||c;}}}}var faux=_1da(evt,{type:"keypress",faux:true,charCode:c});_1df.call(evt.currentTarget,faux);if(has("ie")){_1dd(evt,faux.keyCode);}}});var _1e2=on(_1de,"keypress",function(evt){var c=evt.charCode;c=c>=32?c:0;evt=_1da(evt,{charCode:c,faux:true});return _1df.call(this,evt);});return {remove:function(){_1e0.remove();_1e2.remove();}};};}else{if(has("opera")){_1d7=function(_1e3,_1e4){return on(_1e3,"keypress",function(evt){var c=evt.which;if(c==3){c=99;}c=c<32&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return _1e4.call(this,_1da(evt,{charCode:c}));});};}else{_1d7=function(_1e5,_1e6){return on(_1e5,"keypress",function(evt){_1dc(evt);return _1e6.call(this,evt);});};}}var _1e7={_keypress:_1d7,connect:function(obj,_1e8,_1e9,_1ea,_1eb){var a=arguments,args=[],i=0;args.push(typeof a[0]=="string"?null:a[i++],a[i++]);var a1=a[i+1];args.push(typeof a1=="string"||typeof a1=="function"?a[i++]:null,a[i++]);for(var l=a.length;i<l;i++){args.push(a[i]);}return _1d2.apply(this,args);},disconnect:function(_1ec){if(_1ec){_1ec.remove();}},subscribe:function(_1ed,_1ee,_1ef){return hub.subscribe(_1ed,lang.hitch(_1ee,_1ef));},publish:function(_1f0,args){return hub.publish.apply(hub,[_1f0].concat(args));},connectPublisher:function(_1f1,obj,_1f2){var pf=function(){_1e7.publish(_1f1,arguments);};return _1f2?_1e7.connect(obj,_1f2,pf):_1e7.connect(obj,pf);},isCopyKey:function(e){return e[_1d9];}};_1e7.unsubscribe=_1e7.disconnect;1&&lang.mixin(dojo,_1e7);return _1e7;});},"dojo/on":function(){define(["./has!dom-addeventlistener?:./aspect","./_base/kernel","./sniff"],function(_1f3,dojo,has){"use strict";if(1){var _1f4=window.ScriptEngineMajorVersion;has.add("jscript",_1f4&&(_1f4()+ScriptEngineMinorVersion()/10));has.add("event-orientationchange",has("touch")&&!has("android"));has.add("event-stopimmediatepropagation",window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);has.add("event-focusin",function(_1f5,doc,_1f6){return "onfocusin" in _1f6;});if(has("touch")){has.add("touch-can-modify-event-delegate",function(){var _1f7=function(){};_1f7.prototype=document.createEvent("MouseEvents");try{var _1f8=new _1f7;_1f8.target=null;return _1f8.target===null;}catch(e){return false;}});}}var on=function(_1f9,type,_1fa,_1fb){if(typeof _1f9.on=="function"&&typeof type!="function"&&!_1f9.nodeType){return _1f9.on(type,_1fa);}return on.parse(_1f9,type,_1fa,_1fc,_1fb,this);};on.pausable=function(_1fd,type,_1fe,_1ff){var _200;var _201=on(_1fd,type,function(){if(!_200){return _1fe.apply(this,arguments);}},_1ff);_201.pause=function(){_200=true;};_201.resume=function(){_200=false;};return _201;};on.once=function(_202,type,_203,_204){var _205=on(_202,type,function(){_205.remove();return _203.apply(this,arguments);});return _205;};on.parse=function(_206,type,_207,_208,_209,_20a){var _20b;if(type.call){return type.call(_20a,_206,_207);}if(type instanceof Array){_20b=type;}else{if(type.indexOf(",")>-1){_20b=type.split(/\s*,\s*/);}}if(_20b){var _20c=[];var i=0;var _20d;while(_20d=_20b[i++]){_20c.push(on.parse(_206,_20d,_207,_208,_209,_20a));}_20c.remove=function(){for(var i=0;i<_20c.length;i++){_20c[i].remove();}};return _20c;}return _208(_206,type,_207,_209,_20a);};var _20e=/^touch/;function _1fc(_20f,type,_210,_211,_212){var _213=type.match(/(.*):(.*)/);if(_213){type=_213[2];_213=_213[1];return on.selector(_213,type).call(_212,_20f,_210);}if(has("touch")){if(_20e.test(type)){_210=_214(_210);}if(!has("event-orientationchange")&&(type=="orientationchange")){type="resize";_20f=window;_210=_214(_210);}}if(_215){_210=_215(_210);}if(_20f.addEventListener){var _216=type in _217,_218=_216?_217[type]:type;_20f.addEventListener(_218,_210,_216);return {remove:function(){_20f.removeEventListener(_218,_210,_216);}};}type="on"+type;if(_219&&_20f.attachEvent){return _219(_20f,type,_210);}throw new Error("Target must be an event emitter");};on.matches=function(node,_21a,_21b,_21c,_21d){_21d=_21d&&(typeof _21d.matches=="function")?_21d:dojo.query;_21c=_21c!==false;if(node.nodeType!=1){node=node.parentNode;}while(!_21d.matches(node,_21a,_21b)){if(node==_21b||_21c===false||!(node=node.parentNode)||node.nodeType!=1){return false;}}return node;};on.selector=function(_21e,_21f,_220){return function(_221,_222){var _223=typeof _21e=="function"?{matches:_21e}:this,_224=_21f.bubble;function _225(_226){return on.matches(_226,_21e,_221,_220,_223);};if(_224){return on(_221,_224(_225),_222);}return on(_221,_21f,function(_227){var _228=_225(_227.target);if(_228){_227.selectorTarget=_228;return _222.call(_228,_227);}});};};function _229(){this.cancelable=false;this.defaultPrevented=true;};function _22a(){this.bubbles=false;};var _22b=[].slice,_22c=on.emit=function(_22d,type,_22e){var args=_22b.call(arguments,2);var _22f="on"+type;if("parentNode" in _22d){var _230=args[0]={};for(var i in _22e){_230[i]=_22e[i];}_230.preventDefault=_229;_230.stopPropagation=_22a;_230.target=_22d;_230.type=type;_22e=_230;}do{_22d[_22f]&&_22d[_22f].apply(_22d,args);}while(_22e&&_22e.bubbles&&(_22d=_22d.parentNode));return _22e&&_22e.cancelable&&_22e;};var _217=has("event-focusin")?{}:{focusin:"focus",focusout:"blur"};if(!has("event-stopimmediatepropagation")){var _231=function(){this.immediatelyStopped=true;this.modified=true;};var _215=function(_232){return function(_233){if(!_233.immediatelyStopped){_233.stopImmediatePropagation=_231;return _232.apply(this,arguments);}};};}if(has("dom-addeventlistener")){on.emit=function(_234,type,_235){if(_234.dispatchEvent&&document.createEvent){var _236=_234.ownerDocument||document;var _237=_236.createEvent("HTMLEvents");_237.initEvent(type,!!_235.bubbles,!!_235.cancelable);for(var i in _235){if(!(i in _237)){_237[i]=_235[i];}}return _234.dispatchEvent(_237)&&_237;}return _22c.apply(on,arguments);};}else{on._fixEvent=function(evt,_238){if(!evt){var w=_238&&(_238.ownerDocument||_238.document||_238).parentWindow||window;evt=w.event;}if(!evt){return evt;}try{if(_239&&evt.type==_239.type&&evt.srcElement==_239.target){evt=_239;}}catch(e){}if(!evt.target){evt.target=evt.srcElement;evt.currentTarget=(_238||evt.srcElement);if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}if(!evt.stopPropagation){evt.stopPropagation=_23a;evt.preventDefault=_23b;}switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;_23c(evt);break;}}return evt;};var _239,_23d=function(_23e){this.handle=_23e;};_23d.prototype.remove=function(){delete _dojoIEListeners_[this.handle];};var _23f=function(_240){return function(evt){evt=on._fixEvent(evt,this);var _241=_240.call(this,evt);if(evt.modified){if(!_239){setTimeout(function(){_239=null;});}_239=evt;}return _241;};};var _219=function(_242,type,_243){_243=_23f(_243);if(((_242.ownerDocument?_242.ownerDocument.parentWindow:_242.parentWindow||_242.window||window)!=top||has("jscript")<5.8)&&!has("config-_allow_leaks")){if(typeof _dojoIEListeners_=="undefined"){_dojoIEListeners_=[];}var _244=_242[type];if(!_244||!_244.listeners){var _245=_244;_244=Function("event","var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}");_244.listeners=[];_242[type]=_244;_244.global=this;if(_245){_244.listeners.push(_dojoIEListeners_.push(_245)-1);}}var _246;_244.listeners.push(_246=(_244.global._dojoIEListeners_.push(_243)-1));return new _23d(_246);}return _1f3.after(_242,type,_243,true);};var _23c=function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;};var _23a=function(){this.cancelBubble=true;};var _23b=on._preventDefault=function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){try{this.keyCode=0;}catch(e){}}this.defaultPrevented=true;this.returnValue=false;this.modified=true;};}if(has("touch")){var _247=function(){};var _248=window.orientation;var _214=function(_249){return function(_24a){var _24b=_24a.corrected;if(!_24b){var type=_24a.type;try{delete _24a.type;}catch(e){}if(_24a.type){if(has("touch-can-modify-event-delegate")){_247.prototype=_24a;_24b=new _247;}else{_24b={};for(var name in _24a){_24b[name]=_24a[name];}}_24b.preventDefault=function(){_24a.preventDefault();};_24b.stopPropagation=function(){_24a.stopPropagation();};}else{_24b=_24a;_24b.type=type;}_24a.corrected=_24b;if(type=="resize"){if(_248==window.orientation){return null;}_248=window.orientation;_24b.type="orientationchange";return _249.call(this,_24b);}if(!("rotation" in _24b)){_24b.rotation=0;_24b.scale=1;}if(window.TouchEvent&&_24a instanceof TouchEvent){var _24c=_24b.changedTouches[0];for(var i in _24c){delete _24b[i];_24b[i]=_24c[i];}}}return _249.call(this,_24b);};};}return on;});},"dojo/topic":function(){define(["./Evented"],function(_24d){var hub=new _24d;return {publish:function(_24e,_24f){return hub.emit.apply(hub,arguments);},subscribe:function(_250,_251){return hub.on.apply(hub,arguments);}};});},"dojo/Evented":function(){define(["./aspect","./on"],function(_252,on){"use strict";var _253=_252.after;function _254(){};_254.prototype={on:function(type,_255){return on.parse(this,type,_255,function(_256,type){return _253(_256,"on"+type,_255,true);});},emit:function(type,_257){var args=[this];args.push.apply(args,arguments);return on.emit.apply(on,args);}};return _254;});},"dojo/aspect":function(){define([],function(){"use strict";var _258;function _259(_25a,type,_25b,_25c){var _25d=_25a[type];var _25e=type=="around";var _25f;if(_25e){var _260=_25b(function(){return _25d.advice(this,arguments);});_25f={remove:function(){if(_260){_260=_25a=_25b=null;}},advice:function(_261,args){return _260?_260.apply(_261,args):_25d.advice(_261,args);}};}else{_25f={remove:function(){if(_25f.advice){var _262=_25f.previous;var next=_25f.next;if(!next&&!_262){delete _25a[type];}else{if(_262){_262.next=next;}else{_25a[type]=next;}if(next){next.previous=_262;}}_25a=_25b=_25f.advice=null;}},id:_25a.nextId++,advice:_25b,receiveArguments:_25c};}if(_25d&&!_25e){if(type=="after"){while(_25d.next&&(_25d=_25d.next)){}_25d.next=_25f;_25f.previous=_25d;}else{if(type=="before"){_25a[type]=_25f;_25f.next=_25d;_25d.previous=_25f;}}}else{_25a[type]=_25f;}return _25f;};function _263(type){return function(_264,_265,_266,_267){var _268=_264[_265],_269;if(!_268||_268.target!=_264){_264[_265]=_269=function(){var _26a=_269.nextId;var args=arguments;var _26b=_269.before;while(_26b){if(_26b.advice){args=_26b.advice.apply(this,args)||args;}_26b=_26b.next;}if(_269.around){var _26c=_269.around.advice(this,args);}var _26d=_269.after;while(_26d&&_26d.id<_26a){if(_26d.advice){if(_26d.receiveArguments){var _26e=_26d.advice.apply(this,args);_26c=_26e===_258?_26c:_26e;}else{_26c=_26d.advice.call(this,_26c,args);}}_26d=_26d.next;}return _26c;};if(_268){_269.around={advice:function(_26f,args){return _268.apply(_26f,args);}};}_269.target=_264;_269.nextId=_269.nextId||0;}var _270=_259((_269||_268),type,_266,_267);_266=null;return _270;};};var _271=_263("after");var _272=_263("before");var _273=_263("around");return {before:_272,around:_273,after:_271};});},"dojo/_base/event":function(){define(["./kernel","../on","../has","../dom-geometry"],function(dojo,on,has,dom){if(on._fixEvent){var _274=on._fixEvent;on._fixEvent=function(evt,se){evt=_274(evt,se);if(evt){dom.normalizeEvent(evt);}return evt;};}var ret={fix:function(evt,_275){if(on._fixEvent){return on._fixEvent(evt,_275);}return evt;},stop:function(evt){if(has("dom-addeventlistener")||(evt&&evt.preventDefault)){evt.preventDefault();evt.stopPropagation();}else{evt=evt||window.event;evt.cancelBubble=true;on._preventDefault.call(evt);}}};if(1){dojo.fixEvent=ret.fix;dojo.stopEvent=ret.stop;}return ret;});},"dojo/dom-geometry":function(){define(["./sniff","./_base/window","./dom","./dom-style"],function(has,win,dom,_276){var geom={};geom.boxModel="content-box";if(has("ie")){geom.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}geom.getPadExtents=function getPadExtents(node,_277){node=dom.byId(node);var s=_277||_276.getComputedStyle(node),px=_276.toPixelValue,l=px(node,s.paddingLeft),t=px(node,s.paddingTop),r=px(node,s.paddingRight),b=px(node,s.paddingBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};var none="none";geom.getBorderExtents=function getBorderExtents(node,_278){node=dom.byId(node);var px=_276.toPixelValue,s=_278||_276.getComputedStyle(node),l=s.borderLeftStyle!=none?px(node,s.borderLeftWidth):0,t=s.borderTopStyle!=none?px(node,s.borderTopWidth):0,r=s.borderRightStyle!=none?px(node,s.borderRightWidth):0,b=s.borderBottomStyle!=none?px(node,s.borderBottomWidth):0;return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};geom.getPadBorderExtents=function getPadBorderExtents(node,_279){node=dom.byId(node);var s=_279||_276.getComputedStyle(node),p=geom.getPadExtents(node,s),b=geom.getBorderExtents(node,s);return {l:p.l+b.l,t:p.t+b.t,r:p.r+b.r,b:p.b+b.b,w:p.w+b.w,h:p.h+b.h};};geom.getMarginExtents=function getMarginExtents(node,_27a){node=dom.byId(node);var s=_27a||_276.getComputedStyle(node),px=_276.toPixelValue,l=px(node,s.marginLeft),t=px(node,s.marginTop),r=px(node,s.marginRight),b=px(node,s.marginBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};geom.getMarginBox=function getMarginBox(node,_27b){node=dom.byId(node);var s=_27b||_276.getComputedStyle(node),me=geom.getMarginExtents(node,s),l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode,px=_276.toPixelValue,pcs;if((has("ie")==8&&!has("quirks"))){if(p){pcs=_276.getComputedStyle(p);l-=pcs.borderLeftStyle!=none?px(node,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=none?px(node,pcs.borderTopWidth):0;}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};geom.getContentBox=function getContentBox(node,_27c){node=dom.byId(node);var s=_27c||_276.getComputedStyle(node),w=node.clientWidth,h,pe=geom.getPadExtents(node,s),be=geom.getBorderExtents(node,s),l=node.offsetLeft+pe.l+be.l,t=node.offsetTop+pe.t+be.t;if(!w){w=node.offsetWidth-be.w;h=node.offsetHeight-be.h;}else{h=node.clientHeight;}if((has("ie")==8&&!has("quirks"))){var p=node.parentNode,px=_276.toPixelValue,pcs;if(p){pcs=_276.getComputedStyle(p);l-=pcs.borderLeftStyle!=none?px(node,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=none?px(node,pcs.borderTopWidth):0;}}return {l:l,t:t,w:w-pe.w,h:h-pe.h};};function _27d(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};function _27e(node){return node.tagName.toLowerCase()=="button"||node.tagName.toLowerCase()=="input"&&(node.getAttribute("type")||"").toLowerCase()=="button";};function _27f(node){return geom.boxModel=="border-box"||node.tagName.toLowerCase()=="table"||_27e(node);};function _280(node){var _281={x:0,y:0,width:0,height:0,top:0,right:0,bottom:0,left:0},ret;try{ret=node.getBoundingClientRect();}catch(e){return _281;}if(typeof ret.left==="undefined"){return _281;}return ret;};geom.setContentSize=function setContentSize(node,box,_282){node=dom.byId(node);var w=box.w,h=box.h;if(_27f(node)){var pb=geom.getPadBorderExtents(node,_282);if(w>=0){w+=pb.w;}if(h>=0){h+=pb.h;}}_27d(node,NaN,NaN,w,h);};var _283={l:0,t:0,w:0,h:0};geom.setMarginBox=function setMarginBox(node,box,_284){node=dom.byId(node);var s=_284||_276.getComputedStyle(node),w=box.w,h=box.h,pb=_27f(node)?_283:geom.getPadBorderExtents(node,s),mb=geom.getMarginExtents(node,s);if(has("webkit")){if(_27e(node)){var ns=node.style;if(w>=0&&!ns.width){ns.width="4px";}if(h>=0&&!ns.height){ns.height="4px";}}}if(w>=0){w=Math.max(w-pb.w-mb.w,0);}if(h>=0){h=Math.max(h-pb.h-mb.h,0);}_27d(node,box.l,box.t,w,h);};geom.isBodyLtr=function isBodyLtr(doc){doc=doc||win.doc;return (win.body(doc).dir||doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};geom.docScroll=function docScroll(doc){doc=doc||win.doc;var node=doc.parentWindow||doc.defaultView;return "pageXOffset" in node?{x:node.pageXOffset,y:node.pageYOffset}:(node=has("quirks")?win.body(doc):doc.documentElement)&&{x:geom.fixIeBiDiScrollLeft(node.scrollLeft||0,doc),y:node.scrollTop||0};};geom.getIeDocumentElementOffset=function(doc){return {x:0,y:0};};geom.fixIeBiDiScrollLeft=function fixIeBiDiScrollLeft(_285,doc){doc=doc||win.doc;var ie=has("ie");if(ie&&!geom.isBodyLtr(doc)){var qk=has("quirks"),de=qk?win.body(doc):doc.documentElement,pwin=win.global;if(ie==6&&!qk&&pwin.frameElement&&de.scrollHeight>de.clientHeight){_285+=de.clientLeft;}return (ie<8||qk)?(_285+de.clientWidth-de.scrollWidth):-_285;}return _285;};geom.position=function(node,_286){node=dom.byId(node);var db=win.body(node.ownerDocument),ret=_280(node);ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(has("ie")<9){ret.x-=(has("quirks")?db.clientLeft+db.offsetLeft:0);ret.y-=(has("quirks")?db.clientTop+db.offsetTop:0);}if(_286){var _287=geom.docScroll(node.ownerDocument);ret.x+=_287.x;ret.y+=_287.y;}return ret;};geom.getMarginSize=function getMarginSize(node,_288){node=dom.byId(node);var me=geom.getMarginExtents(node,_288||_276.getComputedStyle(node));var size=_280(node);return {w:(size.right-size.left)+me.w,h:(size.bottom-size.top)+me.h};};geom.normalizeEvent=function(_289){if(!("layerX" in _289)){_289.layerX=_289.offsetX;_289.layerY=_289.offsetY;}if(!("pageX" in _289)){var se=_289.target;var doc=(se&&se.ownerDocument)||document;var _28a=has("quirks")?doc.body:doc.documentElement;_289.pageX=_289.clientX+geom.fixIeBiDiScrollLeft(_28a.scrollLeft||0,doc);_289.pageY=_289.clientY+(_28a.scrollTop||0);}};return geom;});},"dojo/_base/window":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){var ret={global:dojo.global,doc:dojo.global["document"]||null,body:function(doc){doc=doc||dojo.doc;return doc.body||doc.getElementsByTagName("body")[0];},setContext:function(_28b,_28c){dojo.global=ret.global=_28b;dojo.doc=ret.doc=_28c;},withGlobal:function(_28d,_28e,_28f,_290){var _291=dojo.global;try{dojo.global=ret.global=_28d;return ret.withDoc.call(null,_28d.document,_28e,_28f,_290);}finally{dojo.global=ret.global=_291;}},withDoc:function(_292,_293,_294,_295){var _296=ret.doc,oldQ=has("quirks"),_297=has("ie"),isIE,mode,pwin;try{dojo.doc=ret.doc=_292;dojo.isQuirks=has.add("quirks",dojo.doc.compatMode=="BackCompat",true,true);if(has("ie")){if((pwin=_292.parentWindow)&&pwin.navigator){isIE=parseFloat(pwin.navigator.appVersion.split("MSIE ")[1])||undefined;mode=_292.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}dojo.isIE=has.add("ie",isIE,true,true);}}if(_294&&typeof _293=="string"){_293=_294[_293];}return _293.apply(_294,_295||[]);}finally{dojo.doc=ret.doc=_296;dojo.isQuirks=has.add("quirks",oldQ,true,true);dojo.isIE=has.add("ie",_297,true,true);}}};1&&lang.mixin(dojo,ret);return ret;});},"dojo/dom":function(){define(["./sniff","./_base/window","./_base/kernel"],function(has,win,_298){if(has("ie")<=7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}var dom={};if(has("ie")){dom.byId=function(id,doc){if(typeof id!="string"){return id||null;}var _299=doc||win.doc,te=id&&_299.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_299.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}return null;};}else{dom.byId=function(id,doc){return ((typeof id=="string")?(doc||win.doc).getElementById(id):id)||null;};}var doc=_298.global["document"]||null;has.add("dom-contains",!!(doc&&doc.contains));dom.isDescendant=has("dom-contains")?function(node,_29a){return !!((_29a=dom.byId(_29a))&&_29a.contains(dom.byId(node)));}:function(node,_29b){try{node=dom.byId(node);_29b=dom.byId(_29b);while(node){if(node==_29b){return true;}node=node.parentNode;}}catch(e){}return false;};has.add("css-user-select",function(_29c,doc,_29d){if(!_29d){return false;}var _29e=_29d.style;var _29f=["Khtml","O","Moz","Webkit"],i=_29f.length,name="userSelect",_2a0;do{if(typeof _29e[name]!=="undefined"){return name;}}while(i--&&(name=_29f[i]+"UserSelect"));return false;});var _2a1=has("css-user-select");dom.setSelectable=_2a1?function(node,_2a2){dom.byId(node).style[_2a1]=_2a2?"":"none";}:function(node,_2a3){node=dom.byId(node);var _2a4=node.getElementsByTagName("*"),i=_2a4.length;if(_2a3){node.removeAttribute("unselectable");while(i--){_2a4[i].removeAttribute("unselectable");}}else{node.setAttribute("unselectable","on");while(i--){_2a4[i].setAttribute("unselectable","on");}}};return dom;});},"dojo/dom-style":function(){define(["./sniff","./dom","./_base/window"],function(has,dom,win){var _2a5,_2a6={};if(has("webkit")){_2a5=function(node){var s;if(node.nodeType==1){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(has("ie")&&(has("ie")<9||has("quirks"))){_2a5=function(node){return node.nodeType==1&&node.currentStyle?node.currentStyle:{};};}else{_2a5=function(node){if(node.nodeType===1){var dv=node.ownerDocument.defaultView,w=dv.opener?dv:win.global.window;return w.getComputedStyle(node,null);}return {};};}}_2a6.getComputedStyle=_2a5;var _2a7;if(!has("ie")){_2a7=function(_2a8,_2a9){return parseFloat(_2a9)||0;};}else{_2a7=function(_2aa,_2ab){if(!_2ab){return 0;}if(_2ab=="medium"){return 4;}if(_2ab.slice&&_2ab.slice(-2)=="px"){return parseFloat(_2ab);}var s=_2aa.style,rs=_2aa.runtimeStyle,cs=_2aa.currentStyle,_2ac=s.left,_2ad=rs.left;rs.left=cs.left;try{s.left=_2ab;_2ab=s.pixelLeft;}catch(e){_2ab=0;}s.left=_2ac;rs.left=_2ad;return _2ab;};}_2a6.toPixelValue=_2a7;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};var _2ae=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return _2a5(node).opacity;};var _2af=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node,_2b0){if(_2b0===""){_2b0=1;}var ov=_2b0*100,_2b1=_2b0===1;if(_2b1){node.style.zoom="";if(af(node)){node.style.filter=node.style.filter.replace(new RegExp("\\s*progid:"+astr+"\\([^\\)]+?\\)","i"),"");}}else{node.style.zoom=1;if(af(node)){af(node,1).Opacity=ov;}else{node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}af(node,1).Enabled=true;}if(node.tagName.toLowerCase()=="tr"){for(var td=node.firstChild;td;td=td.nextSibling){if(td.tagName.toLowerCase()=="td"){_2af(td,_2b0);}}}return _2b0;}:function(node,_2b2){return node.style.opacity=_2b2;};var _2b3={left:true,top:true};var _2b4=/margin|padding|width|height|max|min|offset/;function _2b5(node,type,_2b6){type=type.toLowerCase();if(_2b6=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_2b6){case 700:return "bold";case 400:default:return "normal";}}if(!(type in _2b3)){_2b3[type]=_2b4.test(type);}return _2b3[type]?_2a7(node,_2b6):_2b6;};var _2b7={cssFloat:1,styleFloat:1,"float":1};_2a6.get=function getStyle(node,name){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");if(l==2&&op){return _2ae(n);}name=_2b7[name]?"cssFloat" in n.style?"cssFloat":"styleFloat":name;var s=_2a6.getComputedStyle(n);return (l==1)?s:_2b5(n,name,s[name]||n.style[name]);};_2a6.set=function setStyle(node,name,_2b8){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");name=_2b7[name]?"cssFloat" in n.style?"cssFloat":"styleFloat":name;if(l==3){return op?_2af(n,_2b8):n.style[name]=_2b8;}for(var x in name){_2a6.set(node,x,name[x]);}return _2a6.getComputedStyle(n);};return _2a6;});},"dojo/mouse":function(){define(["./_base/kernel","./on","./has","./dom","./_base/window"],function(dojo,on,has,dom,win){has.add("dom-quirks",win.doc&&win.doc.compatMode=="BackCompat");has.add("events-mouseenter",win.doc&&"onmouseenter" in win.doc.createElement("div"));has.add("events-mousewheel",win.doc&&"onmousewheel" in win.doc);var _2b9;if((has("dom-quirks")&&has("ie"))||!has("dom-addeventlistener")){_2b9={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_2ba){return e.button&_2ba;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{_2b9={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_2bb){return e.button==_2bb;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}dojo.mouseButtons=_2b9;function _2bc(type,_2bd){var _2be=function(node,_2bf){return on(node,type,function(evt){if(_2bd){return _2bd(evt,_2bf);}if(!dom.isDescendant(evt.relatedTarget,node)){return _2bf.call(this,evt);}});};_2be.bubble=function(_2c0){return _2bc(type,function(evt,_2c1){var _2c2=_2c0(evt.target);var _2c3=evt.relatedTarget;if(_2c2&&(_2c2!=(_2c3&&_2c3.nodeType==1&&_2c0(_2c3)))){return _2c1.call(_2c2,evt);}});};return _2be;};var _2c4;if(has("events-mousewheel")){_2c4="mousewheel";}else{_2c4=function(node,_2c5){return on(node,"DOMMouseScroll",function(evt){evt.wheelDelta=-evt.detail;_2c5.call(this,evt);});};}return {_eventHandler:_2bc,enter:_2bc("mouseover"),leave:_2bc("mouseout"),wheel:_2c4,isLeft:_2b9.isLeft,isMiddle:_2b9.isMiddle,isRight:_2b9.isRight};});},"dojo/_base/sniff":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){if(!1){return has;}dojo._name="browser";lang.mixin(dojo,{isBrowser:true,isFF:has("ff"),isIE:has("ie"),isKhtml:has("khtml"),isWebKit:has("webkit"),isMozilla:has("mozilla"),isMoz:has("mozilla"),isOpera:has("opera"),isSafari:has("safari"),isChrome:has("chrome"),isMac:has("mac"),isIos:has("ios"),isAndroid:has("android"),isWii:has("wii"),isQuirks:has("quirks"),isAir:has("air")});return has;});},"dojo/keys":function(){define(["./_base/kernel","./sniff"],function(dojo,has){return dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:has("webkit")?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:has("mac")&&!has("air")?(has("safari")?91:224):17};});},"dojo/_base/Deferred":function(){define(["./kernel","../Deferred","../promise/Promise","../errors/CancelError","../has","./lang","../when"],function(dojo,_2c6,_2c7,_2c8,has,lang,when){var _2c9=function(){};var _2ca=Object.freeze||function(){};var _2cb=dojo.Deferred=function(_2cc){var _2cd,_2ce,_2cf,_2d0,_2d1,head,_2d2;var _2d3=(this.promise=new _2c7());function _2d4(_2d5){if(_2ce){throw new Error("This deferred has already been resolved");}_2cd=_2d5;_2ce=true;_2d6();};function _2d6(){var _2d7;while(!_2d7&&_2d2){var _2d8=_2d2;_2d2=_2d2.next;if((_2d7=(_2d8.progress==_2c9))){_2ce=false;}var func=(_2d1?_2d8.error:_2d8.resolved);if(has("config-useDeferredInstrumentation")){if(_2d1&&_2c6.instrumentRejected){_2c6.instrumentRejected(_2cd,!!func);}}if(func){try{var _2d9=func(_2cd);if(_2d9&&typeof _2d9.then==="function"){_2d9.then(lang.hitch(_2d8.deferred,"resolve"),lang.hitch(_2d8.deferred,"reject"),lang.hitch(_2d8.deferred,"progress"));continue;}var _2da=_2d7&&_2d9===undefined;if(_2d7&&!_2da){_2d1=_2d9 instanceof Error;}_2d8.deferred[_2da&&_2d1?"reject":"resolve"](_2da?_2cd:_2d9);}catch(e){_2d8.deferred.reject(e);}}else{if(_2d1){_2d8.deferred.reject(_2cd);}else{_2d8.deferred.resolve(_2cd);}}}};this.isResolved=_2d3.isResolved=function(){return _2d0==0;};this.isRejected=_2d3.isRejected=function(){return _2d0==1;};this.isFulfilled=_2d3.isFulfilled=function(){return _2d0>=0;};this.isCanceled=_2d3.isCanceled=function(){return _2cf;};this.resolve=this.callback=function(_2db){this.fired=_2d0=0;this.results=[_2db,null];_2d4(_2db);};this.reject=this.errback=function(_2dc){_2d1=true;this.fired=_2d0=1;if(has("config-useDeferredInstrumentation")){if(_2c6.instrumentRejected){_2c6.instrumentRejected(_2dc,!!_2d2);}}_2d4(_2dc);this.results=[null,_2dc];};this.progress=function(_2dd){var _2de=_2d2;while(_2de){var _2df=_2de.progress;_2df&&_2df(_2dd);_2de=_2de.next;}};this.addCallbacks=function(_2e0,_2e1){this.then(_2e0,_2e1,_2c9);return this;};_2d3.then=this.then=function(_2e2,_2e3,_2e4){var _2e5=_2e4==_2c9?this:new _2cb(_2d3.cancel);var _2e6={resolved:_2e2,error:_2e3,progress:_2e4,deferred:_2e5};if(_2d2){head=head.next=_2e6;}else{_2d2=head=_2e6;}if(_2ce){_2d6();}return _2e5.promise;};var _2e7=this;_2d3.cancel=this.cancel=function(){if(!_2ce){var _2e8=_2cc&&_2cc(_2e7);if(!_2ce){if(!(_2e8 instanceof Error)){_2e8=new _2c8(_2e8);}_2e8.log=false;_2e7.reject(_2e8);}}_2cf=true;};_2ca(_2d3);};lang.extend(_2cb,{addCallback:function(_2e9){return this.addCallbacks(lang.hitch.apply(dojo,arguments));},addErrback:function(_2ea){return this.addCallbacks(null,lang.hitch.apply(dojo,arguments));},addBoth:function(_2eb){var _2ec=lang.hitch.apply(dojo,arguments);return this.addCallbacks(_2ec,_2ec);},fired:-1});_2cb.when=dojo.when=when;return _2cb;});},"dojo/Deferred":function(){define(["./has","./_base/lang","./errors/CancelError","./promise/Promise","./promise/instrumentation"],function(has,lang,_2ed,_2ee,_2ef){"use strict";var _2f0=0,_2f1=1,_2f2=2;var _2f3="This deferred has already been fulfilled.";var _2f4=Object.freeze||function(){};var _2f5=function(_2f6,type,_2f7,_2f8,_2f9){if(1){if(type===_2f2&&_2fa.instrumentRejected&&_2f6.length===0){_2fa.instrumentRejected(_2f7,false,_2f8,_2f9);}}for(var i=0;i<_2f6.length;i++){_2fb(_2f6[i],type,_2f7,_2f8);}};var _2fb=function(_2fc,type,_2fd,_2fe){var func=_2fc[type];var _2ff=_2fc.deferred;if(func){try{var _300=func(_2fd);if(type===_2f0){if(typeof _300!=="undefined"){_301(_2ff,type,_300);}}else{if(_300&&typeof _300.then==="function"){_2fc.cancel=_300.cancel;_300.then(_302(_2ff,_2f1),_302(_2ff,_2f2),_302(_2ff,_2f0));return;}_301(_2ff,_2f1,_300);}}catch(error){_301(_2ff,_2f2,error);}}else{_301(_2ff,type,_2fd);}if(1){if(type===_2f2&&_2fa.instrumentRejected){_2fa.instrumentRejected(_2fd,!!func,_2fe,_2ff.promise);}}};var _302=function(_303,type){return function(_304){_301(_303,type,_304);};};var _301=function(_305,type,_306){if(!_305.isCanceled()){switch(type){case _2f0:_305.progress(_306);break;case _2f1:_305.resolve(_306);break;case _2f2:_305.reject(_306);break;}}};var _2fa=function(_307){var _308=this.promise=new _2ee();var _309=this;var _30a,_30b,_30c;var _30d=false;var _30e=[];if(1&&Error.captureStackTrace){Error.captureStackTrace(_309,_2fa);Error.captureStackTrace(_308,_2fa);}this.isResolved=_308.isResolved=function(){return _30a===_2f1;};this.isRejected=_308.isRejected=function(){return _30a===_2f2;};this.isFulfilled=_308.isFulfilled=function(){return !!_30a;};this.isCanceled=_308.isCanceled=function(){return _30d;};this.progress=function(_30f,_310){if(!_30a){_2f5(_30e,_2f0,_30f,null,_309);return _308;}else{if(_310===true){throw new Error(_2f3);}else{return _308;}}};this.resolve=function(_311,_312){if(!_30a){_2f5(_30e,_30a=_2f1,_30b=_311,null,_309);_30e=null;return _308;}else{if(_312===true){throw new Error(_2f3);}else{return _308;}}};var _313=this.reject=function(_314,_315){if(!_30a){if(1&&Error.captureStackTrace){Error.captureStackTrace(_30c={},_313);}_2f5(_30e,_30a=_2f2,_30b=_314,_30c,_309);_30e=null;return _308;}else{if(_315===true){throw new Error(_2f3);}else{return _308;}}};this.then=_308.then=function(_316,_317,_318){var _319=[_318,_316,_317];_319.cancel=_308.cancel;_319.deferred=new _2fa(function(_31a){return _319.cancel&&_319.cancel(_31a);});if(_30a&&!_30e){_2fb(_319,_30a,_30b,_30c);}else{_30e.push(_319);}return _319.deferred.promise;};this.cancel=_308.cancel=function(_31b,_31c){if(!_30a){if(_307){var _31d=_307(_31b);_31b=typeof _31d==="undefined"?_31b:_31d;}_30d=true;if(!_30a){if(typeof _31b==="undefined"){_31b=new _2ed();}_313(_31b);return _31b;}else{if(_30a===_2f2&&_30b===_31b){return _31b;}}}else{if(_31c===true){throw new Error(_2f3);}}};_2f4(_308);};_2fa.prototype.toString=function(){return "[object Deferred]";};if(_2ef){_2ef(_2fa);}return _2fa;});},"dojo/errors/CancelError":function(){define(["./create"],function(_31e){return _31e("CancelError",null,null,{dojoType:"cancel",log:false});});},"dojo/errors/create":function(){define(["../_base/lang"],function(lang){return function(name,ctor,base,_31f){base=base||Error;var _320=function(_321){if(base===Error){if(Error.captureStackTrace){Error.captureStackTrace(this,_320);}var err=Error.call(this,_321),prop;for(prop in err){if(err.hasOwnProperty(prop)){this[prop]=err[prop];}}this.message=_321;this.stack=err.stack;}else{base.apply(this,arguments);}if(ctor){ctor.apply(this,arguments);}};_320.prototype=lang.delegate(base.prototype,_31f);_320.prototype.name=name;_320.prototype.constructor=_320;return _320;};});},"dojo/promise/Promise":function(){define(["../_base/lang"],function(lang){"use strict";function _322(){throw new TypeError("abstract");};return lang.extend(function Promise(){},{then:function(_323,_324,_325){_322();},cancel:function(_326,_327){_322();},isResolved:function(){_322();},isRejected:function(){_322();},isFulfilled:function(){_322();},isCanceled:function(){_322();},"finally":function(_328){return this.then(function(_329){var _32a=_328();if(_32a&&typeof _32a.then==="function"){return _32a.then(function(){return _329;});}return _329;},function(_32b){var _32c=_328();if(_32c&&typeof _32c.then==="function"){return _32c.then(function(){throw _32b;});}throw _32b;});},always:function(_32d){return this.then(_32d,_32d);},"catch":function(_32e){return this.then(null,_32e);},otherwise:function(_32f){return this.then(null,_32f);},trace:function(){return this;},traceRejected:function(){return this;},toString:function(){return "[object Promise]";}});});},"dojo/promise/instrumentation":function(){define(["./tracer","../has","../_base/lang","../_base/array"],function(_330,has,lang,_331){has.add("config-useDeferredInstrumentation","report-unhandled-rejections");function _332(_333,_334,_335){if(_333&&_333.log===false){return;}var _336="";if(_333&&_333.stack){_336+=_333.stack;}if(_334&&_334.stack){_336+="\n ----------------------------------------\n rejected"+_334.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ");}if(_335&&_335.stack){_336+="\n ----------------------------------------\n"+_335.stack;}console.error(_333,_336);};function _337(_338,_339,_33a,_33b){if(!_339){_332(_338,_33a,_33b);}};var _33c=[];var _33d=false;var _33e=1000;function _33f(_340,_341,_342,_343){if(!_331.some(_33c,function(obj){if(obj.error===_340){if(_341){obj.handled=true;}return true;}})){_33c.push({error:_340,rejection:_342,handled:_341,deferred:_343,timestamp:new Date().getTime()});}if(!_33d){_33d=setTimeout(_344,_33e);}};function _344(){var now=new Date().getTime();var _345=now-_33e;_33c=_331.filter(_33c,function(obj){if(obj.timestamp<_345){if(!obj.handled){_332(obj.error,obj.rejection,obj.deferred);}return false;}return true;});if(_33c.length){_33d=setTimeout(_344,_33c[0].timestamp+_33e-now);}else{_33d=false;}};return function(_346){var _347=has("config-useDeferredInstrumentation");if(_347){_330.on("resolved",lang.hitch(console,"log","resolved"));_330.on("rejected",lang.hitch(console,"log","rejected"));_330.on("progress",lang.hitch(console,"log","progress"));var args=[];if(typeof _347==="string"){args=_347.split(",");_347=args.shift();}if(_347==="report-rejections"){_346.instrumentRejected=_337;}else{if(_347==="report-unhandled-rejections"||_347===true||_347===1){_346.instrumentRejected=_33f;_33e=parseInt(args[0],10)||_33e;}else{throw new Error("Unsupported instrumentation usage <"+_347+">");}}}};});},"dojo/promise/tracer":function(){define(["../_base/lang","./Promise","../Evented"],function(lang,_348,_349){"use strict";var _34a=new _349;var emit=_34a.emit;_34a.emit=null;function _34b(args){setTimeout(function(){emit.apply(_34a,args);},0);};_348.prototype.trace=function(){var args=lang._toArray(arguments);this.then(function(_34c){_34b(["resolved",_34c].concat(args));},function(_34d){_34b(["rejected",_34d].concat(args));},function(_34e){_34b(["progress",_34e].concat(args));});return this;};_348.prototype.traceRejected=function(){var args=lang._toArray(arguments);this.otherwise(function(_34f){_34b(["rejected",_34f].concat(args));});return this;};return _34a;});},"dojo/when":function(){define(["./Deferred","./promise/Promise"],function(_350,_351){"use strict";return function when(_352,_353,_354,_355){var _356=_352&&typeof _352.then==="function";var _357=_356&&_352 instanceof _351;if(!_356){if(arguments.length>1){return _353?_353(_352):_352;}else{return new _350().resolve(_352);}}else{if(!_357){var _358=new _350(_352.cancel);_352.then(_358.resolve,_358.reject,_358.progress);_352=_358.promise;}}if(_353||_354||_355){return _352.then(_353,_354,_355);}return _352;};});},"dojo/_base/json":function(){define(["./kernel","../json"],function(dojo,json){dojo.fromJson=function(js){return eval("("+js+")");};dojo._escapeString=json.stringify;dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_359){return json.stringify(it,function(key,_35a){if(_35a){var tf=_35a.__json__||_35a.json;if(typeof tf=="function"){return tf.call(_35a);}}return _35a;},_359&&dojo.toJsonIndentStr);};return dojo;});},"dojo/json":function(){define(["./has"],function(has){"use strict";var _35b=typeof JSON!="undefined";has.add("json-parse",_35b);has.add("json-stringify",_35b&&JSON.stringify({a:0},function(k,v){return v||1;})=="{\"a\":1}");if(has("json-stringify")){return JSON;}else{var _35c=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};return {parse:has("json-parse")?JSON.parse:function(str,_35d){if(_35d&&!/^([\s\[\{]*(?:"(?:\\.|[^"])*"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(str)){throw new SyntaxError("Invalid characters in JSON");}return eval("("+str+")");},stringify:function(_35e,_35f,_360){var _361;if(typeof _35f=="string"){_360=_35f;_35f=null;}function _362(it,_363,key){if(_35f){it=_35f(key,it);}var val,_364=typeof it;if(_364=="number"){return isFinite(it)?it+"":"null";}if(_364=="boolean"){return it+"";}if(it===null){return "null";}if(typeof it=="string"){return _35c(it);}if(_364=="function"||_364=="undefined"){return _361;}if(typeof it.toJSON=="function"){return _362(it.toJSON(key),_363,key);}if(it instanceof Date){return "\"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z\"".replace(/\{(\w+)(\+)?\}/g,function(t,prop,plus){var num=it["getUTC"+prop]()+(plus?1:0);return num<10?"0"+num:num;});}if(it.valueOf()!==it){return _362(it.valueOf(),_363,key);}var _365=_360?(_363+_360):"";var sep=_360?" ":"";var _366=_360?"\n":"";if(it instanceof Array){var itl=it.length,res=[];for(key=0;key<itl;key++){var obj=it[key];val=_362(obj,_365,key);if(typeof val!="string"){val="null";}res.push(_366+_365+val);}return "["+res.join(",")+_366+_363+"]";}var _367=[];for(key in it){var _368;if(it.hasOwnProperty(key)){if(typeof key=="number"){_368="\""+key+"\"";}else{if(typeof key=="string"){_368=_35c(key);}else{continue;}}val=_362(it[key],_365,key);if(typeof val!="string"){continue;}_367.push(_366+_365+_368+":"+sep+val);}}return "{"+_367.join(",")+_366+_363+"}";};return _362(_35e,"","");}};}});},"dojo/_base/Color":function(){define(["./kernel","./lang","./array","./config"],function(dojo,lang,_369,_36a){var _36b=dojo.Color=function(_36c){if(_36c){this.setColor(_36c);}};_36b.named={"black":[0,0,0],"silver":[192,192,192],"gray":[128,128,128],"white":[255,255,255],"maroon":[128,0,0],"red":[255,0,0],"purple":[128,0,128],"fuchsia":[255,0,255],"green":[0,128,0],"lime":[0,255,0],"olive":[128,128,0],"yellow":[255,255,0],"navy":[0,0,128],"blue":[0,0,255],"teal":[0,128,128],"aqua":[0,255,255],"transparent":_36a.transparentColor||[0,0,0,0]};lang.extend(_36b,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_36d){if(lang.isString(_36d)){_36b.fromString(_36d,this);}else{if(lang.isArray(_36d)){_36b.fromArray(_36d,this);}else{this._set(_36d.r,_36d.g,_36d.b,_36d.a);if(!(_36d instanceof _36b)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var arr=_369.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+arr.join("");},toCss:function(_36e){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_36e?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});_36b.blendColors=dojo.blendColors=function(_36f,end,_370,obj){var t=obj||new _36b();t.r=Math.round(_36f.r+(end.r-_36f.r)*_370);t.g=Math.round(_36f.g+(end.g-_36f.g)*_370);t.b=Math.round(_36f.b+(end.b-_36f.b)*_370);t.a=_36f.a+(end.a-_36f.a)*_370;return t.sanitize();};_36b.fromRgb=dojo.colorFromRgb=function(_371,obj){var m=_371.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&_36b.fromArray(m[1].split(/\s*,\s*/),obj);};_36b.fromHex=dojo.colorFromHex=function(_372,obj){var t=obj||new _36b(),bits=(_372.length==4)?4:8,mask=(1<<bits)-1;_372=Number("0x"+_372.substr(1));if(isNaN(_372)){return null;}_369.forEach(["b","g","r"],function(x){var c=_372&mask;_372>>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};_36b.fromArray=dojo.colorFromArray=function(a,obj){var t=obj||new _36b();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};_36b.fromString=dojo.colorFromString=function(str,obj){var a=_36b.named[str];return a&&_36b.fromArray(a,obj)||_36b.fromRgb(str,obj)||_36b.fromHex(str,obj);};return _36b;});},"dojo/_base/browser":function(){if(require.has){require.has.add("config-selectorEngine","acme");}define(["../ready","./kernel","./connect","./unload","./window","./event","./html","./NodeList","../query","./xhr","./fx"],function(dojo){return dojo;});},"dojo/_base/unload":function(){define(["./kernel","./lang","../on"],function(dojo,lang,on){var win=window;var _373={addOnWindowUnload:function(obj,_374){if(!dojo.windowUnloaded){on(win,"unload",(dojo.windowUnloaded=function(){}));}on(win,"unload",lang.hitch(obj,_374));},addOnUnload:function(obj,_375){on(win,"beforeunload",lang.hitch(obj,_375));}};dojo.addOnWindowUnload=_373.addOnWindowUnload;dojo.addOnUnload=_373.addOnUnload;return _373;});},"dojo/_base/html":function(){define(["./kernel","../dom","../dom-style","../dom-attr","../dom-prop","../dom-class","../dom-construct","../dom-geometry"],function(dojo,dom,_376,attr,prop,cls,ctr,geom){dojo.byId=dom.byId;dojo.isDescendant=dom.isDescendant;dojo.setSelectable=dom.setSelectable;dojo.getAttr=attr.get;dojo.setAttr=attr.set;dojo.hasAttr=attr.has;dojo.removeAttr=attr.remove;dojo.getNodeProp=attr.getNodeProp;dojo.attr=function(node,name,_377){if(arguments.length==2){return attr[typeof name=="string"?"get":"set"](node,name);}return attr.set(node,name,_377);};dojo.hasClass=cls.contains;dojo.addClass=cls.add;dojo.removeClass=cls.remove;dojo.toggleClass=cls.toggle;dojo.replaceClass=cls.replace;dojo._toDom=dojo.toDom=ctr.toDom;dojo.place=ctr.place;dojo.create=ctr.create;dojo.empty=function(node){ctr.empty(node);};dojo._destroyElement=dojo.destroy=function(node){ctr.destroy(node);};dojo._getPadExtents=dojo.getPadExtents=geom.getPadExtents;dojo._getBorderExtents=dojo.getBorderExtents=geom.getBorderExtents;dojo._getPadBorderExtents=dojo.getPadBorderExtents=geom.getPadBorderExtents;dojo._getMarginExtents=dojo.getMarginExtents=geom.getMarginExtents;dojo._getMarginSize=dojo.getMarginSize=geom.getMarginSize;dojo._getMarginBox=dojo.getMarginBox=geom.getMarginBox;dojo.setMarginBox=geom.setMarginBox;dojo._getContentBox=dojo.getContentBox=geom.getContentBox;dojo.setContentSize=geom.setContentSize;dojo._isBodyLtr=dojo.isBodyLtr=geom.isBodyLtr;dojo._docScroll=dojo.docScroll=geom.docScroll;dojo._getIeDocumentElementOffset=dojo.getIeDocumentElementOffset=geom.getIeDocumentElementOffset;dojo._fixIeBiDiScrollLeft=dojo.fixIeBiDiScrollLeft=geom.fixIeBiDiScrollLeft;dojo.position=geom.position;dojo.marginBox=function marginBox(node,box){return box?geom.setMarginBox(node,box):geom.getMarginBox(node);};dojo.contentBox=function contentBox(node,box){return box?geom.setContentSize(node,box):geom.getContentBox(node);};dojo.coords=function(node,_378){dojo.deprecated("dojo.coords()","Use dojo.position() or dojo.marginBox().");node=dom.byId(node);var s=_376.getComputedStyle(node),mb=geom.getMarginBox(node,s);var abs=geom.position(node,_378);mb.x=abs.x;mb.y=abs.y;return mb;};dojo.getProp=prop.get;dojo.setProp=prop.set;dojo.prop=function(node,name,_379){if(arguments.length==2){return prop[typeof name=="string"?"get":"set"](node,name);}return prop.set(node,name,_379);};dojo.getStyle=_376.get;dojo.setStyle=_376.set;dojo.getComputedStyle=_376.getComputedStyle;dojo.__toPixelValue=dojo.toPixelValue=_376.toPixelValue;dojo.style=function(node,name,_37a){switch(arguments.length){case 1:return _376.get(node);case 2:return _376[typeof name=="string"?"get":"set"](node,name);}return _376.set(node,name,_37a);};return dojo;});},"dojo/dom-attr":function(){define(["exports","./sniff","./_base/lang","./dom","./dom-style","./dom-prop"],function(_37b,has,lang,dom,_37c,prop){var _37d={innerHTML:1,textContent:1,className:1,htmlFor:has("ie")?1:0,value:1},_37e={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};function _37f(node,name){var attr=node.getAttributeNode&&node.getAttributeNode(name);return !!attr&&attr.specified;};_37b.has=function hasAttr(node,name){var lc=name.toLowerCase();return !!_37d[prop.names[lc]||name]||_37f(dom.byId(node),_37e[lc]||name);};_37b.get=function getAttr(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_380=prop.names[lc]||name,_381=_37d[_380],_382=node[_380];if(_381&&typeof _382!="undefined"){return _382;}if(_380=="textContent"){return prop.get(node,_380);}if(_380!="href"&&(typeof _382=="boolean"||lang.isFunction(_382))){return _382;}var _383=_37e[lc]||name;return _37f(node,_383)?node.getAttribute(_383):null;};_37b.set=function setAttr(node,name,_384){node=dom.byId(node);if(arguments.length==2){for(var x in name){_37b.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_385=prop.names[lc]||name,_386=_37d[_385];if(_385=="style"&&typeof _384!="string"){_37c.set(node,_384);return node;}if(_386||typeof _384=="boolean"||lang.isFunction(_384)){return prop.set(node,name,_384);}node.setAttribute(_37e[lc]||name,_384);return node;};_37b.remove=function removeAttr(node,name){dom.byId(node).removeAttribute(_37e[name.toLowerCase()]||name);};_37b.getNodeProp=function getNodeProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_387=prop.names[lc]||name;if((_387 in node)&&_387!="href"){return node[_387];}var _388=_37e[lc]||name;return _37f(node,_388)?node.getAttribute(_388):null;};});},"dojo/dom-prop":function(){define(["exports","./_base/kernel","./sniff","./_base/lang","./dom","./dom-style","./dom-construct","./_base/connect"],function(_389,dojo,has,lang,dom,_38a,ctr,conn){var _38b={},_38c=1,_38d=dojo._scopeName+"attrid";has.add("dom-textContent",function(_38e,doc,_38f){return "textContent" in _38f;});_389.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",textcontent:"textContent",valuetype:"valueType"};function _390(node){var text="",ch=node.childNodes;for(var i=0,n;n=ch[i];i++){if(n.nodeType!=8){if(n.nodeType==1){text+=_390(n);}else{text+=n.nodeValue;}}}return text;};_389.get=function getProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_391=_389.names[lc]||name;if(_391=="textContent"&&!has("dom-textContent")){return _390(node);}return node[_391];};_389.set=function setProp(node,name,_392){node=dom.byId(node);var l=arguments.length;if(l==2&&typeof name!="string"){for(var x in name){_389.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_393=_389.names[lc]||name;if(_393=="style"&&typeof _392!="string"){_38a.set(node,_392);return node;}if(_393=="innerHTML"){if(has("ie")&&node.tagName.toLowerCase() in {col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}){ctr.empty(node);node.appendChild(ctr.toDom(_392,node.ownerDocument));}else{node[_393]=_392;}return node;}if(_393=="textContent"&&!has("dom-textContent")){ctr.empty(node);node.appendChild(node.ownerDocument.createTextNode(_392));return node;}if(lang.isFunction(_392)){var _394=node[_38d];if(!_394){_394=_38c++;node[_38d]=_394;}if(!_38b[_394]){_38b[_394]={};}var h=_38b[_394][_393];if(h){conn.disconnect(h);}else{try{delete node[_393];}catch(e){}}if(_392){_38b[_394][_393]=conn.connect(node,_393,_392);}else{node[_393]=null;}return node;}node[_393]=_392;return node;};});},"dojo/dom-construct":function(){define(["exports","./_base/kernel","./sniff","./_base/window","./dom","./dom-attr"],function(_395,dojo,has,win,dom,attr){var _396={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_397=/<\s*([\w\:]+)/,_398={},_399=0,_39a="__"+dojo._scopeName+"ToDomId";for(var _39b in _396){if(_396.hasOwnProperty(_39b)){var tw=_396[_39b];tw.pre=_39b=="option"?"<select multiple=\"multiple\">":"<"+tw.join("><")+">";tw.post="</"+tw.reverse().join("></")+">";}}var _39c;if(has("ie")<=8){_39c=function(doc){doc.__dojo_html5_tested="yes";var div=_39d("div",{innerHTML:"<nav>a</nav>",style:{visibility:"hidden"}},doc.body);if(div.childNodes.length!==1){("abbr article aside audio canvas details figcaption figure footer header "+"hgroup mark meter nav output progress section summary time video").replace(/\b\w+\b/g,function(n){doc.createElement(n);});}_39e(div);};}function _39f(node,ref){var _3a0=ref.parentNode;if(_3a0){_3a0.insertBefore(node,ref);}};function _3a1(node,ref){var _3a2=ref.parentNode;if(_3a2){if(_3a2.lastChild==ref){_3a2.appendChild(node);}else{_3a2.insertBefore(node,ref.nextSibling);}}};_395.toDom=function toDom(frag,doc){doc=doc||win.doc;var _3a3=doc[_39a];if(!_3a3){doc[_39a]=_3a3=++_399+"";_398[_3a3]=doc.createElement("div");}if(has("ie")<=8){if(!doc.__dojo_html5_tested&&doc.body){_39c(doc);}}frag+="";var _3a4=frag.match(_397),tag=_3a4?_3a4[1].toLowerCase():"",_3a5=_398[_3a3],wrap,i,fc,df;if(_3a4&&_396[tag]){wrap=_396[tag];_3a5.innerHTML=wrap.pre+frag+wrap.post;for(i=wrap.length;i;--i){_3a5=_3a5.firstChild;}}else{_3a5.innerHTML=frag;}if(_3a5.childNodes.length==1){return _3a5.removeChild(_3a5.firstChild);}df=doc.createDocumentFragment();while((fc=_3a5.firstChild)){df.appendChild(fc);}return df;};_395.place=function place(node,_3a6,_3a7){_3a6=dom.byId(_3a6);if(typeof node=="string"){node=/^\s*</.test(node)?_395.toDom(node,_3a6.ownerDocument):dom.byId(node);}if(typeof _3a7=="number"){var cn=_3a6.childNodes;if(!cn.length||cn.length<=_3a7){_3a6.appendChild(node);}else{_39f(node,cn[_3a7<0?0:_3a7]);}}else{switch(_3a7){case "before":_39f(node,_3a6);break;case "after":_3a1(node,_3a6);break;case "replace":_3a6.parentNode.replaceChild(node,_3a6);break;case "only":_395.empty(_3a6);_3a6.appendChild(node);break;case "first":if(_3a6.firstChild){_39f(node,_3a6.firstChild);break;}default:_3a6.appendChild(node);}}return node;};var _39d=_395.create=function _39d(tag,_3a8,_3a9,pos){var doc=win.doc;if(_3a9){_3a9=dom.byId(_3a9);doc=_3a9.ownerDocument;}if(typeof tag=="string"){tag=doc.createElement(tag);}if(_3a8){attr.set(tag,_3a8);}if(_3a9){_395.place(tag,_3a9,pos);}return tag;};function _3aa(node){if("innerHTML" in node){try{node.innerHTML="";return;}catch(e){}}for(var c;c=node.lastChild;){node.removeChild(c);}};_395.empty=function empty(node){_3aa(dom.byId(node));};function _3ab(node,_3ac){if(node.firstChild){_3aa(node);}if(_3ac){has("ie")&&_3ac.canHaveChildren&&"removeNode" in node?node.removeNode(false):_3ac.removeChild(node);}};var _39e=_395.destroy=function _39e(node){node=dom.byId(node);if(!node){return;}_3ab(node,node.parentNode);};});},"dojo/dom-class":function(){define(["./_base/lang","./_base/array","./dom"],function(lang,_3ad,dom){var _3ae="className";var cls,_3af=/\s+/,a1=[""];function _3b0(s){if(typeof s=="string"||s instanceof String){if(s&&!_3af.test(s)){a1[0]=s;return a1;}var a=s.split(_3af);if(a.length&&!a[0]){a.shift();}if(a.length&&!a[a.length-1]){a.pop();}return a;}if(!s){return [];}return _3ad.filter(s,function(x){return x;});};var _3b1={};cls={contains:function containsClass(node,_3b2){return ((" "+dom.byId(node)[_3ae]+" ").indexOf(" "+_3b2+" ")>=0);},add:function addClass(node,_3b3){node=dom.byId(node);_3b3=_3b0(_3b3);var cls=node[_3ae],_3b4;cls=cls?" "+cls+" ":" ";_3b4=cls.length;for(var i=0,len=_3b3.length,c;i<len;++i){c=_3b3[i];if(c&&cls.indexOf(" "+c+" ")<0){cls+=c+" ";}}if(_3b4<cls.length){node[_3ae]=cls.substr(1,cls.length-2);}},remove:function removeClass(node,_3b5){node=dom.byId(node);var cls;if(_3b5!==undefined){_3b5=_3b0(_3b5);cls=" "+node[_3ae]+" ";for(var i=0,len=_3b5.length;i<len;++i){cls=cls.replace(" "+_3b5[i]+" "," ");}cls=lang.trim(cls);}else{cls="";}if(node[_3ae]!=cls){node[_3ae]=cls;}},replace:function replaceClass(node,_3b6,_3b7){node=dom.byId(node);_3b1[_3ae]=node[_3ae];cls.remove(_3b1,_3b7);cls.add(_3b1,_3b6);if(node[_3ae]!==_3b1[_3ae]){node[_3ae]=_3b1[_3ae];}},toggle:function toggleClass(node,_3b8,_3b9){node=dom.byId(node);if(_3b9===undefined){_3b8=_3b0(_3b8);for(var i=0,len=_3b8.length,c;i<len;++i){c=_3b8[i];cls[cls.contains(node,c)?"remove":"add"](node,c);}}else{cls[_3b9?"add":"remove"](node,_3b8);}return _3b9;}};return cls;});},"dojo/_base/NodeList":function(){define(["./kernel","../query","./array","./html","../NodeList-dom"],function(dojo,_3ba,_3bb){var _3bc=_3ba.NodeList,nlp=_3bc.prototype;nlp.connect=_3bc._adaptAsForEach(function(){return dojo.connect.apply(this,arguments);});nlp.coords=_3bc._adaptAsMap(dojo.coords);_3bc.events=["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"];_3bb.forEach(_3bc.events,function(evt){var _3bd="on"+evt;nlp[_3bd]=function(a,b){return this.connect(_3bd,a,b);};});dojo.NodeList=_3bc;return _3bc;});},"dojo/query":function(){define(["./_base/kernel","./has","./dom","./on","./_base/array","./_base/lang","./selector/_loader","./selector/_loader!default"],function(dojo,has,dom,on,_3be,lang,_3bf,_3c0){"use strict";has.add("array-extensible",function(){return lang.delegate([],{length:1}).length==1&&!has("bug-for-in-skips-shadowed");});var ap=Array.prototype,aps=ap.slice,apc=ap.concat,_3c1=_3be.forEach;var tnl=function(a,_3c2,_3c3){var _3c4=new (_3c3||this._NodeListCtor||nl)(a);return _3c2?_3c4._stash(_3c2):_3c4;};var _3c5=function(f,a,o){a=[0].concat(aps.call(a,0));o=o||dojo.global;return function(node){a[0]=node;return f.apply(o,a);};};var _3c6=function(f,o){return function(){this.forEach(_3c5(f,arguments,o));return this;};};var _3c7=function(f,o){return function(){return this.map(_3c5(f,arguments,o));};};var _3c8=function(f,o){return function(){return this.filter(_3c5(f,arguments,o));};};var _3c9=function(f,g,o){return function(){var a=arguments,body=_3c5(f,a,o);if(g.call(o||dojo.global,a)){return this.map(body);}this.forEach(body);return this;};};var _3ca=function(_3cb){var _3cc=this instanceof nl&&has("array-extensible");if(typeof _3cb=="number"){_3cb=Array(_3cb);}var _3cd=(_3cb&&"length" in _3cb)?_3cb:arguments;if(_3cc||!_3cd.sort){var _3ce=_3cc?this:[],l=_3ce.length=_3cd.length;for(var i=0;i<l;i++){_3ce[i]=_3cd[i];}if(_3cc){return _3ce;}_3cd=_3ce;}lang._mixin(_3cd,nlp);_3cd._NodeListCtor=function(_3cf){return nl(_3cf);};return _3cd;};var nl=_3ca,nlp=nl.prototype=has("array-extensible")?[]:{};nl._wrap=nlp._wrap=tnl;nl._adaptAsMap=_3c7;nl._adaptAsForEach=_3c6;nl._adaptAsFilter=_3c8;nl._adaptWithCondition=_3c9;_3c1(["slice","splice"],function(name){var f=ap[name];nlp[name]=function(){return this._wrap(f.apply(this,arguments),name=="slice"?this:null);};});_3c1(["indexOf","lastIndexOf","every","some"],function(name){var f=_3be[name];nlp[name]=function(){return f.apply(dojo,[this].concat(aps.call(arguments,0)));};});lang.extend(_3ca,{constructor:nl,_NodeListCtor:nl,toString:function(){return this.join(",");},_stash:function(_3d0){this._parent=_3d0;return this;},on:function(_3d1,_3d2){var _3d3=this.map(function(node){return on(node,_3d1,_3d2);});_3d3.remove=function(){for(var i=0;i<_3d3.length;i++){_3d3[i].remove();}};return _3d3;},end:function(){if(this._parent){return this._parent;}else{return new this._NodeListCtor(0);}},concat:function(item){var t=aps.call(this,0),m=_3be.map(arguments,function(a){return aps.call(a,0);});return this._wrap(apc.apply(t,m),this);},map:function(func,obj){return this._wrap(_3be.map(this,func,obj),this);},forEach:function(_3d4,_3d5){_3c1(this,_3d4,_3d5);return this;},filter:function(_3d6){var a=arguments,_3d7=this,_3d8=0;if(typeof _3d6=="string"){_3d7=_3d9._filterResult(this,a[0]);if(a.length==1){return _3d7._stash(this);}_3d8=1;}return this._wrap(_3be.filter(_3d7,a[_3d8],a[_3d8+1]),this);},instantiate:function(_3da,_3db){var c=lang.isFunction(_3da)?_3da:lang.getObject(_3da);_3db=_3db||{};return this.forEach(function(node){new c(_3db,node);});},at:function(){var t=new this._NodeListCtor(0);_3c1(arguments,function(i){if(i<0){i=this.length+i;}if(this[i]){t.push(this[i]);}},this);return t._stash(this);}});function _3dc(_3dd,_3de){var _3df=function(_3e0,root){if(typeof root=="string"){root=dom.byId(root);if(!root){return new _3de([]);}}var _3e1=typeof _3e0=="string"?_3dd(_3e0,root):_3e0?(_3e0.end&&_3e0.on)?_3e0:[_3e0]:[];if(_3e1.end&&_3e1.on){return _3e1;}return new _3de(_3e1);};_3df.matches=_3dd.match||function(node,_3e2,root){return _3df.filter([node],_3e2,root).length>0;};_3df.filter=_3dd.filter||function(_3e3,_3e4,root){return _3df(_3e4,root).filter(function(node){return _3be.indexOf(_3e3,node)>-1;});};if(typeof _3dd!="function"){var _3e5=_3dd.search;_3dd=function(_3e6,root){return _3e5(root||document,_3e6);};}return _3df;};var _3d9=_3dc(_3c0,_3ca);dojo.query=_3dc(_3c0,function(_3e7){return _3ca(_3e7);});_3d9.load=function(id,_3e8,_3e9){_3bf.load(id,_3e8,function(_3ea){_3e9(_3dc(_3ea,_3ca));});};dojo._filterQueryResult=_3d9._filterResult=function(_3eb,_3ec,root){return new _3ca(_3d9.filter(_3eb,_3ec,root));};dojo.NodeList=_3d9.NodeList=_3ca;return _3d9;});},"dojo/selector/_loader":function(){define(["../has","require"],function(has,_3ed){"use strict";if(typeof document!=="undefined"){var _3ee=document.createElement("div");has.add("dom-qsa2.1",!!_3ee.querySelectorAll);has.add("dom-qsa3",function(){try{_3ee.innerHTML="<p class='TEST'></p>";return _3ee.querySelectorAll(".TEST:empty").length==1;}catch(e){}});}var _3ef;var acme="./acme",lite="./lite";return {load:function(id,_3f0,_3f1,_3f2){if(_3f2&&_3f2.isBuild){_3f1();return;}var req=_3ed;id=id=="default"?has("config-selectorEngine")||"css3":id;id=id=="css2"||id=="lite"?lite:id=="css2.1"?has("dom-qsa2.1")?lite:acme:id=="css3"?has("dom-qsa3")?lite:acme:id=="acme"?acme:(req=_3f0)&&id;if(id.charAt(id.length-1)=="?"){id=id.substring(0,id.length-1);var _3f3=true;}if(_3f3&&(has("dom-compliant-qsa")||_3ef)){return _3f1(_3ef);}req([id],function(_3f4){if(id!="./lite"){_3ef=_3f4;}_3f1(_3f4);});}};});},"dojo/NodeList-dom":function(){define(["./_base/kernel","./query","./_base/array","./_base/lang","./dom-class","./dom-construct","./dom-geometry","./dom-attr","./dom-style"],function(dojo,_3f5,_3f6,lang,_3f7,_3f8,_3f9,_3fa,_3fb){var _3fc=function(a){return a.length==1&&(typeof a[0]=="string");};var _3fd=function(node){var p=node.parentNode;if(p){p.removeChild(node);}};var _3fe=_3f5.NodeList,awc=_3fe._adaptWithCondition,aafe=_3fe._adaptAsForEach,aam=_3fe._adaptAsMap;function _3ff(_400){return function(node,name,_401){if(arguments.length==2){return _400[typeof name=="string"?"get":"set"](node,name);}return _400.set(node,name,_401);};};lang.extend(_3fe,{_normalize:function(_402,_403){var _404=_402.parse===true;if(typeof _402.template=="string"){var _405=_402.templateFunc||(dojo.string&&dojo.string.substitute);_402=_405?_405(_402.template,_402):_402;}var type=(typeof _402);if(type=="string"||type=="number"){_402=_3f8.toDom(_402,(_403&&_403.ownerDocument));if(_402.nodeType==11){_402=lang._toArray(_402.childNodes);}else{_402=[_402];}}else{if(!lang.isArrayLike(_402)){_402=[_402];}else{if(!lang.isArray(_402)){_402=lang._toArray(_402);}}}if(_404){_402._runParse=true;}return _402;},_cloneNode:function(node){return node.cloneNode(true);},_place:function(ary,_406,_407,_408){if(_406.nodeType!=1&&_407=="only"){return;}var _409=_406,_40a;var _40b=ary.length;for(var i=_40b-1;i>=0;i--){var node=(_408?this._cloneNode(ary[i]):ary[i]);if(ary._runParse&&dojo.parser&&dojo.parser.parse){if(!_40a){_40a=_409.ownerDocument.createElement("div");}_40a.appendChild(node);dojo.parser.parse(_40a);node=_40a.firstChild;while(_40a.firstChild){_40a.removeChild(_40a.firstChild);}}if(i==_40b-1){_3f8.place(node,_409,_407);}else{_409.parentNode.insertBefore(node,_409);}_409=node;}},position:aam(_3f9.position),attr:awc(_3ff(_3fa),_3fc),style:awc(_3ff(_3fb),_3fc),addClass:aafe(_3f7.add),removeClass:aafe(_3f7.remove),toggleClass:aafe(_3f7.toggle),replaceClass:aafe(_3f7.replace),empty:aafe(_3f8.empty),removeAttr:aafe(_3fa.remove),marginBox:aam(_3f9.getMarginBox),place:function(_40c,_40d){var item=_3f5(_40c)[0];return this.forEach(function(node){_3f8.place(node,item,_40d);});},orphan:function(_40e){return (_40e?_3f5._filterResult(this,_40e):this).forEach(_3fd);},adopt:function(_40f,_410){return _3f5(_40f).place(this[0],_410)._stash(this);},query:function(_411){if(!_411){return this;}var ret=new _3fe;this.map(function(node){_3f5(_411,node).forEach(function(_412){if(_412!==undefined){ret.push(_412);}});});return ret._stash(this);},filter:function(_413){var a=arguments,_414=this,_415=0;if(typeof _413=="string"){_414=_3f5._filterResult(this,a[0]);if(a.length==1){return _414._stash(this);}_415=1;}return this._wrap(_3f6.filter(_414,a[_415],a[_415+1]),this);},addContent:function(_416,_417){_416=this._normalize(_416,this[0]);for(var i=0,node;(node=this[i]);i++){if(_416.length){this._place(_416,node,_417,i>0);}else{_3f8.empty(node);}}return this;}});return _3fe;});},"dojo/_base/xhr":function(){define(["./kernel","./sniff","require","../io-query","../dom","../dom-form","./Deferred","./config","./json","./lang","./array","../on","../aspect","../request/watch","../request/xhr","../request/util"],function(dojo,has,_418,ioq,dom,_419,_41a,_41b,json,lang,_41c,on,_41d,_41e,_41f,util){dojo._xhrObj=_41f._create;var cfg=dojo.config;dojo.objectToQuery=ioq.objectToQuery;dojo.queryToObject=ioq.queryToObject;dojo.fieldToObject=_419.fieldToObject;dojo.formToObject=_419.toObject;dojo.formToQuery=_419.toQuery;dojo.formToJson=_419.toJson;dojo._blockAsync=false;var _420=dojo._contentHandlers=dojo.contentHandlers={"text":function(xhr){return xhr.responseText;},"json":function(xhr){return json.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!_41b.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _421=xhr.responseText;var _422=_421.indexOf("/*");var _423=_421.lastIndexOf("*/");if(_422==-1||_423==-1){throw new Error("JSON was not comment filtered");}return json.fromJson(_421.substring(_422+2,_423));},"javascript":function(xhr){return dojo.eval(xhr.responseText);},"xml":function(xhr){var _424=xhr.responseXML;if(_424&&has("dom-qsa2.1")&&!_424.querySelectorAll&&has("dom-parser")){_424=new DOMParser().parseFromString(xhr.responseText,"application/xml");}if(has("ie")){if((!_424||!_424.documentElement)){var ms=function(n){return "MSXML"+n+".DOMDocument";};var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];_41c.some(dp,function(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(xhr.responseText);_424=dom;}catch(e){return false;}return true;});}}return _424;},"json-comment-optional":function(xhr){if(xhr.responseText&&/^[^{\[]*\/\*/.test(xhr.responseText)){return _420["json-comment-filtered"](xhr);}else{return _420["json"](xhr);}}};dojo._ioSetArgs=function(args,_425,_426,_427){var _428={args:args,url:args.url};var _429=null;if(args.form){var form=dom.byId(args.form);var _42a=form.getAttributeNode("action");_428.url=_428.url||(_42a?_42a.value:(dojo.doc?dojo.doc.URL:null));_429=_419.toObject(form);}var _42b={};if(_429){lang.mixin(_42b,_429);}if(args.content){lang.mixin(_42b,args.content);}if(args.preventCache){_42b["dojo.preventCache"]=new Date().valueOf();}_428.query=ioq.objectToQuery(_42b);_428.handleAs=args.handleAs||"text";var d=new _41a(function(dfd){dfd.canceled=true;_425&&_425(dfd);var err=dfd.ioArgs.error;if(!err){err=new Error("request cancelled");err.dojoType="cancel";dfd.ioArgs.error=err;}return err;});d.addCallback(_426);var ld=args.load;if(ld&&lang.isFunction(ld)){d.addCallback(function(_42c){return ld.call(args,_42c,_428);});}var err=args.error;if(err&&lang.isFunction(err)){d.addErrback(function(_42d){return err.call(args,_42d,_428);});}var _42e=args.handle;if(_42e&&lang.isFunction(_42e)){d.addBoth(function(_42f){return _42e.call(args,_42f,_428);});}d.addErrback(function(_430){return _427(_430,d);});if(cfg.ioPublish&&dojo.publish&&_428.args.ioPublish!==false){d.addCallbacks(function(res){dojo.publish("/dojo/io/load",[d,res]);return res;},function(res){dojo.publish("/dojo/io/error",[d,res]);return res;});d.addBoth(function(res){dojo.publish("/dojo/io/done",[d,res]);return res;});}d.ioArgs=_428;return d;};var _431=function(dfd){var ret=_420[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return ret===undefined?null:ret;};var _432=function(_433,dfd){if(!dfd.ioArgs.args.failOk){console.error(_433);}return _433;};var _434=function(dfd){if(_435<=0){_435=0;if(cfg.ioPublish&&dojo.publish&&(!dfd||dfd&&dfd.ioArgs.args.ioPublish!==false)){dojo.publish("/dojo/io/stop");}}};var _435=0;_41d.after(_41e,"_onAction",function(){_435-=1;});_41d.after(_41e,"_onInFlight",_434);dojo._ioCancelAll=_41e.cancelAll;dojo._ioNotifyStart=function(dfd){if(cfg.ioPublish&&dojo.publish&&dfd.ioArgs.args.ioPublish!==false){if(!_435){dojo.publish("/dojo/io/start");}_435+=1;dojo.publish("/dojo/io/send",[dfd]);}};dojo._ioWatch=function(dfd,_436,_437,_438){var args=dfd.ioArgs.options=dfd.ioArgs.args;lang.mixin(dfd,{response:dfd.ioArgs,isValid:function(_439){return _436(dfd);},isReady:function(_43a){return _437(dfd);},handleResponse:function(_43b){return _438(dfd);}});_41e(dfd);_434(dfd);};var _43c="application/x-www-form-urlencoded";dojo._ioAddQueryToUrl=function(_43d){if(_43d.query.length){_43d.url+=(_43d.url.indexOf("?")==-1?"?":"&")+_43d.query;_43d.query=null;}};dojo.xhr=function(_43e,args,_43f){var rDfd;var dfd=dojo._ioSetArgs(args,function(dfd){rDfd&&rDfd.cancel();},_431,_432);var _440=dfd.ioArgs;if("postData" in args){_440.query=args.postData;}else{if("putData" in args){_440.query=args.putData;}else{if("rawBody" in args){_440.query=args.rawBody;}else{if((arguments.length>2&&!_43f)||"POST|PUT".indexOf(_43e.toUpperCase())===-1){dojo._ioAddQueryToUrl(_440);}}}}var _441={method:_43e,handleAs:"text",timeout:args.timeout,withCredentials:args.withCredentials,ioArgs:_440};if(typeof args.headers!=="undefined"){_441.headers=args.headers;}if(typeof args.contentType!=="undefined"){if(!_441.headers){_441.headers={};}_441.headers["Content-Type"]=args.contentType;}if(typeof _440.query!=="undefined"){_441.data=_440.query;}if(typeof args.sync!=="undefined"){_441.sync=args.sync;}dojo._ioNotifyStart(dfd);try{rDfd=_41f(_440.url,_441,true);}catch(e){dfd.cancel();return dfd;}dfd.ioArgs.xhr=rDfd.response.xhr;rDfd.then(function(){dfd.resolve(dfd);}).otherwise(function(_442){_440.error=_442;if(_442.response){_442.status=_442.response.status;_442.responseText=_442.response.text;_442.xhr=_442.response.xhr;}dfd.reject(_442);});return dfd;};dojo.xhrGet=function(args){return dojo.xhr("GET",args);};dojo.rawXhrPost=dojo.xhrPost=function(args){return dojo.xhr("POST",args,true);};dojo.rawXhrPut=dojo.xhrPut=function(args){return dojo.xhr("PUT",args,true);};dojo.xhrDelete=function(args){return dojo.xhr("DELETE",args);};dojo._isDocumentOk=function(x){return util.checkStatus(x.status);};dojo._getText=function(url){var _443;dojo.xhrGet({url:url,sync:true,load:function(text){_443=text;}});return _443;};lang.mixin(dojo.xhr,{_xhrObj:dojo._xhrObj,fieldToObject:_419.fieldToObject,formToObject:_419.toObject,objectToQuery:ioq.objectToQuery,formToQuery:_419.toQuery,formToJson:_419.toJson,queryToObject:ioq.queryToObject,contentHandlers:_420,_ioSetArgs:dojo._ioSetArgs,_ioCancelAll:dojo._ioCancelAll,_ioNotifyStart:dojo._ioNotifyStart,_ioWatch:dojo._ioWatch,_ioAddQueryToUrl:dojo._ioAddQueryToUrl,_isDocumentOk:dojo._isDocumentOk,_getText:dojo._getText,get:dojo.xhrGet,post:dojo.xhrPost,put:dojo.xhrPut,del:dojo.xhrDelete});return dojo.xhr;});},"dojo/io-query":function(){define(["./_base/lang"],function(lang){var _444={};return {objectToQuery:function objectToQuery(map){var enc=encodeURIComponent,_445=[];for(var name in map){var _446=map[name];if(_446!=_444[name]){var _447=enc(name)+"=";if(lang.isArray(_446)){for(var i=0,l=_446.length;i<l;++i){_445.push(_447+enc(_446[i]));}}else{_445.push(_447+enc(_446));}}}return _445.join("&");},queryToObject:function queryToObject(str){var dec=decodeURIComponent,qp=str.split("&"),ret={},name,val;for(var i=0,l=qp.length,item;i<l;++i){item=qp[i];if(item.length){var s=item.indexOf("=");if(s<0){name=dec(item);val="";}else{name=dec(item.slice(0,s));val=dec(item.slice(s+1));}if(typeof ret[name]=="string"){ret[name]=[ret[name]];}if(lang.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}}return ret;}};});},"dojo/dom-form":function(){define(["./_base/lang","./dom","./io-query","./json"],function(lang,dom,ioq,json){function _448(obj,name,_449){if(_449===null){return;}var val=obj[name];if(typeof val=="string"){obj[name]=[val,_449];}else{if(lang.isArray(val)){val.push(_449);}else{obj[name]=_449;}}};var _44a="file|submit|image|reset|button";var form={fieldToObject:function fieldToObject(_44b){var ret=null;_44b=dom.byId(_44b);if(_44b){var _44c=_44b.name,type=(_44b.type||"").toLowerCase();if(_44c&&type&&!_44b.disabled){if(type=="radio"||type=="checkbox"){if(_44b.checked){ret=_44b.value;}}else{if(_44b.multiple){ret=[];var _44d=[_44b.firstChild];while(_44d.length){for(var node=_44d.pop();node;node=node.nextSibling){if(node.nodeType==1&&node.tagName.toLowerCase()=="option"){if(node.selected){ret.push(node.value);}}else{if(node.nextSibling){_44d.push(node.nextSibling);}if(node.firstChild){_44d.push(node.firstChild);}break;}}}}else{ret=_44b.value;}}}}return ret;},toObject:function formToObject(_44e){var ret={},_44f=dom.byId(_44e).elements;for(var i=0,l=_44f.length;i<l;++i){var item=_44f[i],_450=item.name,type=(item.type||"").toLowerCase();if(_450&&type&&_44a.indexOf(type)<0&&!item.disabled){_448(ret,_450,form.fieldToObject(item));if(type=="image"){ret[_450+".x"]=ret[_450+".y"]=ret[_450].x=ret[_450].y=0;}}}return ret;},toQuery:function formToQuery(_451){return ioq.objectToQuery(form.toObject(_451));},toJson:function formToJson(_452,_453){return json.stringify(form.toObject(_452),null,_453?4:0);}};return form;});},"dojo/request/watch":function(){define(["./util","../errors/RequestTimeoutError","../errors/CancelError","../_base/array","../_base/window","../has!host-browser?dom-addeventlistener?:../on:"],function(util,_454,_455,_456,win,on){var _457=null,_458=[];function _459(){var now=+(new Date);for(var i=0,dfd;i<_458.length&&(dfd=_458[i]);i++){var _45a=dfd.response,_45b=_45a.options;if((dfd.isCanceled&&dfd.isCanceled())||(dfd.isValid&&!dfd.isValid(_45a))){_458.splice(i--,1);_45c._onAction&&_45c._onAction();}else{if(dfd.isReady&&dfd.isReady(_45a)){_458.splice(i--,1);dfd.handleResponse(_45a);_45c._onAction&&_45c._onAction();}else{if(dfd.startTime){if(dfd.startTime+(_45b.timeout||0)<now){_458.splice(i--,1);dfd.cancel(new _454("Timeout exceeded",_45a));_45c._onAction&&_45c._onAction();}}}}}_45c._onInFlight&&_45c._onInFlight(dfd);if(!_458.length){clearInterval(_457);_457=null;}};function _45c(dfd){if(dfd.response.options.timeout){dfd.startTime=+(new Date);}if(dfd.isFulfilled()){return;}_458.push(dfd);if(!_457){_457=setInterval(_459,50);}if(dfd.response.options.sync){_459();}};_45c.cancelAll=function cancelAll(){try{_456.forEach(_458,function(dfd){try{dfd.cancel(new _455("All requests canceled."));}catch(e){}});}catch(e){}};if(win&&on&&win.doc.attachEvent){on(win.global,"unload",function(){_45c.cancelAll();});}return _45c;});},"dojo/request/util":function(){define(["exports","../errors/RequestError","../errors/CancelError","../Deferred","../io-query","../_base/array","../_base/lang","../promise/Promise","../has"],function(_45d,_45e,_45f,_460,_461,_462,lang,_463,has){function _464(_465){return has("native-arraybuffer")&&_465 instanceof ArrayBuffer;};function _466(_467){return has("native-blob")&&_467 instanceof Blob;};function _468(_469){if(typeof Element!=="undefined"){return _469 instanceof Element;}return _469.nodeType===1;};function _46a(_46b){return has("native-formdata")&&_46b instanceof FormData;};function _46c(_46d){return _46d&&typeof _46d==="object"&&!_46a(_46d)&&!_468(_46d)&&!_466(_46d)&&!_464(_46d);};_45d.deepCopy=function(_46e,_46f){for(var name in _46f){var tval=_46e[name],sval=_46f[name];if(name!=="__proto__"&&tval!==sval){if(_46c(sval)){if(Object.prototype.toString.call(sval)==="[object Date]"){_46e[name]=new Date(sval);}else{if(lang.isArray(sval)){_46e[name]=_45d.deepCopyArray(sval);}else{if(tval&&typeof tval==="object"){_45d.deepCopy(tval,sval);}else{_46e[name]=_45d.deepCopy({},sval);}}}}else{_46e[name]=sval;}}}return _46e;};_45d.deepCopyArray=function(_470){var _471=[];for(var i=0,l=_470.length;i<l;i++){var _472=_470[i];if(typeof _472==="object"){_471.push(_45d.deepCopy({},_472));}else{_471.push(_472);}}return _471;};_45d.deepCreate=function deepCreate(_473,_474){_474=_474||{};var _475=lang.delegate(_473),name,_476;for(name in _473){_476=_473[name];if(_476&&typeof _476==="object"){_475[name]=_45d.deepCreate(_476,_474[name]);}}return _45d.deepCopy(_475,_474);};var _477=Object.freeze||function(obj){return obj;};function _478(_479){return _477(_479);};function _47a(_47b){return _47b.data!==undefined?_47b.data:_47b.text;};_45d.deferred=function deferred(_47c,_47d,_47e,_47f,_480,last){var def=new _460(function(_481){_47d&&_47d(def,_47c);if(!_481||!(_481 instanceof _45e)&&!(_481 instanceof _45f)){return new _45f("Request canceled",_47c);}return _481;});def.response=_47c;def.isValid=_47e;def.isReady=_47f;def.handleResponse=_480;function _482(_483){_483.response=_47c;throw _483;};var _484=def.then(_478).otherwise(_482);if(_45d.notify){_484.then(lang.hitch(_45d.notify,"emit","load"),lang.hitch(_45d.notify,"emit","error"));}var _485=_484.then(_47a);var _486=new _463();for(var prop in _485){if(_485.hasOwnProperty(prop)){_486[prop]=_485[prop];}}_486.response=_484;_477(_486);if(last){def.then(function(_487){last.call(def,_487);},function(_488){last.call(def,_47c,_488);});}def.promise=_486;def.then=_486.then;return def;};_45d.addCommonMethods=function addCommonMethods(_489,_48a){_462.forEach(_48a||["GET","POST","PUT","DELETE"],function(_48b){_489[(_48b==="DELETE"?"DEL":_48b).toLowerCase()]=function(url,_48c){_48c=lang.delegate(_48c||{});_48c.method=_48b;return _489(url,_48c);};});};_45d.parseArgs=function parseArgs(url,_48d,_48e){var data=_48d.data,_48f=_48d.query;if(data&&!_48e){if(typeof data==="object"&&(!(has("native-xhr2"))||!(_464(data)||_466(data)))){_48d.data=_461.objectToQuery(data);}}if(_48f){if(typeof _48f==="object"){_48f=_461.objectToQuery(_48f);}if(_48d.preventCache){_48f+=(_48f?"&":"")+"request.preventCache="+(+(new Date));}}else{if(_48d.preventCache){_48f="request.preventCache="+(+(new Date));}}if(url&&_48f){url+=(~url.indexOf("?")?"&":"?")+_48f;}return {url:url,options:_48d,getHeader:function(_490){return null;}};};_45d.checkStatus=function(stat){stat=stat||0;return (stat>=200&&stat<300)||stat===304||stat===1223||!stat;};});},"dojo/errors/RequestError":function(){define(["./create"],function(_491){return _491("RequestError",function(_492,_493){this.response=_493;});});},"dojo/errors/RequestTimeoutError":function(){define(["./create","./RequestError"],function(_494,_495){return _494("RequestTimeoutError",null,_495,{dojoType:"timeout"});});},"dojo/request/xhr":function(){define(["../errors/RequestError","./watch","./handlers","./util","../has"],function(_496,_497,_498,util,has){has.add("native-xhr",function(){return typeof XMLHttpRequest!=="undefined";});has.add("dojo-force-activex-xhr",function(){return has("activex")&&window.location.protocol==="file:";});has.add("native-xhr2",function(){if(!has("native-xhr")||has("dojo-force-activex-xhr")){return;}var x=new XMLHttpRequest();return typeof x["addEventListener"]!=="undefined"&&(typeof opera==="undefined"||typeof x["upload"]!=="undefined");});has.add("native-formdata",function(){return typeof FormData!=="undefined";});has.add("native-blob",function(){return typeof Blob!=="undefined";});has.add("native-arraybuffer",function(){return typeof ArrayBuffer!=="undefined";});has.add("native-response-type",function(){return has("native-xhr")&&typeof new XMLHttpRequest().responseType!=="undefined";});has.add("native-xhr2-blob",function(){if(!has("native-response-type")){return;}var x=new XMLHttpRequest();x.open("GET","https://dojotoolkit.org/",true);x.responseType="blob";var _499=x.responseType;x.abort();return _499==="blob";});var _49a={"blob":has("native-xhr2-blob")?"blob":"arraybuffer","document":"document","arraybuffer":"arraybuffer"};function _49b(_49c,_49d){var _49e=_49c.xhr;_49c.status=_49c.xhr.status;try{_49c.text=_49e.responseText;}catch(e){}if(_49c.options.handleAs==="xml"){_49c.data=_49e.responseXML;}var _49f;if(_49d){this.reject(_49d);}else{try{_498(_49c);}catch(e){_49f=e;}if(util.checkStatus(_49e.status)){if(!_49f){this.resolve(_49c);}else{this.reject(_49f);}}else{if(!_49f){_49d=new _496("Unable to load "+_49c.url+" status: "+_49e.status,_49c);this.reject(_49d);}else{_49d=new _496("Unable to load "+_49c.url+" status: "+_49e.status+" and an error in handleAs: transformation of response",_49c);this.reject(_49d);}}}};var _4a0,_4a1,_4a2,_4a3;if(has("native-xhr2")){_4a0=function(_4a4){return !this.isFulfilled();};_4a3=function(dfd,_4a5){_4a5.xhr.abort();};_4a2=function(_4a6,dfd,_4a7,_4a8){function _4a9(evt){dfd.handleResponse(_4a7);};function _4aa(evt){var _4ab=evt.target;var _4ac=new _496("Unable to load "+_4a7.url+" status: "+_4ab.status,_4a7);dfd.handleResponse(_4a7,_4ac);};function _4ad(_4ae,evt){_4a7.transferType=_4ae;if(evt.lengthComputable){_4a7.loaded=evt.loaded;_4a7.total=evt.total;dfd.progress(_4a7);}else{if(_4a7.xhr.readyState===3){_4a7.loaded=("loaded" in evt)?evt.loaded:evt.position;dfd.progress(_4a7);}}};function _4af(evt){return _4ad("download",evt);};function _4b0(evt){return _4ad("upload",evt);};_4a6.addEventListener("load",_4a9,false);_4a6.addEventListener("error",_4aa,false);_4a6.addEventListener("progress",_4af,false);if(_4a8&&_4a6.upload){_4a6.upload.addEventListener("progress",_4b0,false);}return function(){_4a6.removeEventListener("load",_4a9,false);_4a6.removeEventListener("error",_4aa,false);_4a6.removeEventListener("progress",_4af,false);_4a6.upload.removeEventListener("progress",_4b0,false);_4a6=null;};};}else{_4a0=function(_4b1){return _4b1.xhr.readyState;};_4a1=function(_4b2){return 4===_4b2.xhr.readyState;};_4a3=function(dfd,_4b3){var xhr=_4b3.xhr;var _4b4=typeof xhr.abort;if(_4b4==="function"||_4b4==="object"||_4b4==="unknown"){xhr.abort();}};}function _4b5(_4b6){return this.xhr.getResponseHeader(_4b6);};var _4b7,_4b8={data:null,query:null,sync:false,method:"GET"};function xhr(url,_4b9,_4ba){var _4bb=has("native-formdata")&&_4b9&&_4b9.data&&_4b9.data instanceof FormData;var _4bc=util.parseArgs(url,util.deepCreate(_4b8,_4b9),_4bb);url=_4bc.url;_4b9=_4bc.options;var _4bd=!_4b9.data&&_4b9.method!=="POST"&&_4b9.method!=="PUT";if(has("ie")<=10){url=url.split("#")[0];}var _4be,last=function(){_4be&&_4be();};var dfd=util.deferred(_4bc,_4a3,_4a0,_4a1,_49b,last);var _4bf=_4bc.xhr=xhr._create();if(!_4bf){dfd.cancel(new _496("XHR was not created"));return _4ba?dfd:dfd.promise;}_4bc.getHeader=_4b5;if(_4a2){_4be=_4a2(_4bf,dfd,_4bc,_4b9.uploadProgress);}var data=typeof (_4b9.data)==="undefined"?null:_4b9.data,_4c0=!_4b9.sync,_4c1=_4b9.method;try{_4bf.open(_4c1,url,_4c0,_4b9.user||_4b7,_4b9.password||_4b7);if(_4b9.withCredentials){_4bf.withCredentials=_4b9.withCredentials;}if(has("native-response-type")&&_4b9.handleAs in _49a){_4bf.responseType=_49a[_4b9.handleAs];}var _4c2=_4b9.headers,_4c3=(_4bb||_4bd)?false:"application/x-www-form-urlencoded";if(_4c2){for(var hdr in _4c2){if(hdr.toLowerCase()==="content-type"){_4c3=_4c2[hdr];}else{if(_4c2[hdr]){_4bf.setRequestHeader(hdr,_4c2[hdr]);}}}}if(_4c3&&_4c3!==false){_4bf.setRequestHeader("Content-Type",_4c3);}if(!_4c2||!("X-Requested-With" in _4c2)){_4bf.setRequestHeader("X-Requested-With","XMLHttpRequest");}if(util.notify){util.notify.emit("send",_4bc,dfd.promise.cancel);}_4bf.send(data);}catch(e){dfd.reject(e);}_497(dfd);_4bf=null;return _4ba?dfd:dfd.promise;};xhr._create=function(){throw new Error("XMLHTTP not available");};if(has("native-xhr")&&!has("dojo-force-activex-xhr")){xhr._create=function(){return new XMLHttpRequest();};}else{if(has("activex")){try{new ActiveXObject("Msxml2.XMLHTTP");xhr._create=function(){return new ActiveXObject("Msxml2.XMLHTTP");};}catch(e){try{new ActiveXObject("Microsoft.XMLHTTP");xhr._create=function(){return new ActiveXObject("Microsoft.XMLHTTP");};}catch(e){}}}}util.addCommonMethods(xhr);return xhr;});},"dojo/request/handlers":function(){define(["../json","../_base/kernel","../_base/array","../has","../selector/_loader"],function(JSON,_4c4,_4c5,has){has.add("activex",typeof ActiveXObject!=="undefined");has.add("dom-parser",function(_4c6){return "DOMParser" in _4c6;});var _4c7;if(has("activex")){var dp=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML.DOMDocument"];var _4c8;_4c7=function(_4c9){var _4ca=_4c9.data;var text=_4c9.text;if(_4ca&&has("dom-qsa2.1")&&!_4ca.querySelectorAll&&has("dom-parser")){_4ca=new DOMParser().parseFromString(text,"application/xml");}function _4cb(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(text);_4ca=dom;_4c8=p;}catch(e){return false;}return true;};if(!_4ca||!_4ca.documentElement){if(!_4c8||!_4cb(_4c8)){_4c5.some(dp,_4cb);}}return _4ca;};}var _4cc=function(_4cd){if(!has("native-xhr2-blob")&&_4cd.options.handleAs==="blob"&&typeof Blob!=="undefined"){return new Blob([_4cd.xhr.response],{type:_4cd.xhr.getResponseHeader("Content-Type")});}return _4cd.xhr.response;};var _4ce={"javascript":function(_4cf){return _4c4.eval(_4cf.text||"");},"json":function(_4d0){return JSON.parse(_4d0.text||null);},"xml":_4c7,"blob":_4cc,"arraybuffer":_4cc,"document":_4cc};function _4d1(_4d2){var _4d3=_4ce[_4d2.options.handleAs];_4d2.data=_4d3?_4d3(_4d2):(_4d2.data||_4d2.text);return _4d2;};_4d1.register=function(name,_4d4){_4ce[name]=_4d4;};return _4d1;});},"dojo/_base/fx":function(){define(["./kernel","./config","./lang","../Evented","./Color","../aspect","../sniff","../dom","../dom-style"],function(dojo,_4d5,lang,_4d6,_4d7,_4d8,has,dom,_4d9){var _4da=lang.mixin;var _4db={};var _4dc=_4db._Line=function(_4dd,end){this.start=_4dd;this.end=end;};_4dc.prototype.getValue=function(n){return ((this.end-this.start)*n)+this.start;};var _4de=_4db.Animation=function(args){_4da(this,args);if(lang.isArray(this.curve)){this.curve=new _4dc(this.curve[0],this.curve[1]);}};_4de.prototype=new _4d6();lang.extend(_4de,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var _4df=this._percent,_4e0=this.easing;return _4e0?_4e0(_4df):_4df;},_fire:function(evt,args){var a=args||[];if(this[evt]){if(_4d5.debugAtAllCosts){this[evt].apply(this,a);}else{try{this[evt].apply(this,a);}catch(e){console.error("exception in animation handler for:",evt);console.error(e);}}}return this;},play:function(_4e1,_4e2){var _4e3=this;if(_4e3._delayTimer){_4e3._clearTimer();}if(_4e2){_4e3._stopTimer();_4e3._active=_4e3._paused=false;_4e3._percent=0;}else{if(_4e3._active&&!_4e3._paused){return _4e3;}}_4e3._fire("beforeBegin",[_4e3.node]);var de=_4e1||_4e3.delay,_4e4=lang.hitch(_4e3,"_play",_4e2);if(de>0){_4e3._delayTimer=setTimeout(_4e4,de);return _4e3;}_4e4();return _4e3;},_play:function(_4e5){var _4e6=this;if(_4e6._delayTimer){_4e6._clearTimer();}_4e6._startTime=new Date().valueOf();if(_4e6._paused){_4e6._startTime-=_4e6.duration*_4e6._percent;}_4e6._active=true;_4e6._paused=false;var _4e7=_4e6.curve.getValue(_4e6._getStep());if(!_4e6._percent){if(!_4e6._startRepeatCount){_4e6._startRepeatCount=_4e6.repeat;}_4e6._fire("onBegin",[_4e7]);}_4e6._fire("onPlay",[_4e7]);_4e6._cycle();return _4e6;},pause:function(){var _4e8=this;if(_4e8._delayTimer){_4e8._clearTimer();}_4e8._stopTimer();if(!_4e8._active){return _4e8;}_4e8._paused=true;_4e8._fire("onPause",[_4e8.curve.getValue(_4e8._getStep())]);return _4e8;},gotoPercent:function(_4e9,_4ea){var _4eb=this;_4eb._stopTimer();_4eb._active=_4eb._paused=true;_4eb._percent=_4e9;if(_4ea){_4eb.play();}return _4eb;},stop:function(_4ec){var _4ed=this;if(_4ed._delayTimer){_4ed._clearTimer();}if(!_4ed._timer){return _4ed;}_4ed._stopTimer();if(_4ec){_4ed._percent=1;}_4ed._fire("onStop",[_4ed.curve.getValue(_4ed._getStep())]);_4ed._active=_4ed._paused=false;return _4ed;},destroy:function(){this.stop();},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _4ee=this;if(_4ee._active){var curr=new Date().valueOf();var step=_4ee.duration===0?1:(curr-_4ee._startTime)/(_4ee.duration);if(step>=1){step=1;}_4ee._percent=step;if(_4ee.easing){step=_4ee.easing(step);}_4ee._fire("onAnimate",[_4ee.curve.getValue(step)]);if(_4ee._percent<1){_4ee._startTimer();}else{_4ee._active=false;if(_4ee.repeat>0){_4ee.repeat--;_4ee.play(null,true);}else{if(_4ee.repeat==-1){_4ee.play(null,true);}else{if(_4ee._startRepeatCount){_4ee.repeat=_4ee._startRepeatCount;_4ee._startRepeatCount=0;}}}_4ee._percent=0;_4ee._fire("onEnd",[_4ee.node]);!_4ee.repeat&&_4ee._stopTimer();}}return _4ee;},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer;}});var ctr=0,_4ef=null,_4f0={run:function(){}};lang.extend(_4de,{_startTimer:function(){if(!this._timer){this._timer=_4d8.after(_4f0,"run",lang.hitch(this,"_cycle"),true);ctr++;}if(!_4ef){_4ef=setInterval(lang.hitch(_4f0,"run"),this.rate);}},_stopTimer:function(){if(this._timer){this._timer.remove();this._timer=null;ctr--;}if(ctr<=0){clearInterval(_4ef);_4ef=null;ctr=0;}}});var _4f1=has("ie")?function(node){var ns=node.style;if(!ns.width.length&&_4d9.get(node,"width")=="auto"){ns.width="auto";}}:function(){};_4db._fade=function(args){args.node=dom.byId(args.node);var _4f2=_4da({properties:{}},args),_4f3=(_4f2.properties.opacity={});_4f3.start=!("start" in _4f2)?function(){return +_4d9.get(_4f2.node,"opacity")||0;}:_4f2.start;_4f3.end=_4f2.end;var anim=_4db.animateProperty(_4f2);_4d8.after(anim,"beforeBegin",lang.partial(_4f1,_4f2.node),true);return anim;};_4db.fadeIn=function(args){return _4db._fade(_4da({end:1},args));};_4db.fadeOut=function(args){return _4db._fade(_4da({end:0},args));};_4db._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _4f4=function(_4f5){this._properties=_4f5;for(var p in _4f5){var prop=_4f5[p];if(prop.start instanceof _4d7){prop.tempColor=new _4d7();}}};_4f4.prototype.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p],_4f6=prop.start;if(_4f6 instanceof _4d7){ret[p]=_4d7.blendColors(_4f6,prop.end,r,prop.tempColor).toCss();}else{if(!lang.isArray(_4f6)){ret[p]=((prop.end-_4f6)*r)+_4f6+(p!="opacity"?prop.units||"px":0);}}}return ret;};_4db.animateProperty=function(args){var n=args.node=dom.byId(args.node);if(!args.easing){args.easing=dojo._defaultEasing;}var anim=new _4de(args);_4d8.after(anim,"beforeBegin",lang.hitch(anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];if(lang.isFunction(prop)){prop=prop(n);}prop=pm[p]=_4da({},(lang.isObject(prop)?prop:{end:prop}));if(lang.isFunction(prop.start)){prop.start=prop.start(n);}if(lang.isFunction(prop.end)){prop.end=prop.end(n);}var _4f7=(p.toLowerCase().indexOf("color")>=0);function _4f8(node,p){var v={height:node.offsetHeight,width:node.offsetWidth}[p];if(v!==undefined){return v;}v=_4d9.get(node,p);return (p=="opacity")?+v:(_4f7?v:parseFloat(v));};if(!("end" in prop)){prop.end=_4f8(n,p);}else{if(!("start" in prop)){prop.start=_4f8(n,p);}}if(_4f7){prop.start=new _4d7(prop.start);prop.end=new _4d7(prop.end);}else{prop.start=(p=="opacity")?+prop.start:parseFloat(prop.start);}}this.curve=new _4f4(pm);}),true);_4d8.after(anim,"onAnimate",lang.hitch(_4d9,"set",anim.node),true);return anim;};_4db.anim=function(node,_4f9,_4fa,_4fb,_4fc,_4fd){return _4db.animateProperty({node:node,duration:_4fa||_4de.prototype.duration,properties:_4f9,easing:_4fb,onEnd:_4fc}).play(_4fd||0);};if(1){_4da(dojo,_4db);dojo._Animation=_4de;}return _4db;});},"dojo/_base/loader":function(){define(["./kernel","../has","require","module","../json","./lang","./array"],function(dojo,has,_4fe,_4ff,json,lang,_500){if(!1){console.error("cannot load the Dojo v1.x loader with a foreign loader");return 0;}1||has.add("dojo-fast-sync-require",1);var _501=function(id){return {src:_4ff.id,id:id};},_502=function(name){return name.replace(/\./g,"/");},_503=/\/\/>>built/,_504=[],_505=[],_506=function(mid,_507,_508){_504.push(_508);_500.forEach(mid.split(","),function(mid){var _509=_50a(mid,_507.module);_505.push(_509);_50b(_509);});_50c();},_50c=(1?function(){var _50d,mid;for(mid in _50e){_50d=_50e[mid];if(_50d.noReqPluginCheck===undefined){_50d.noReqPluginCheck=/loadInit\!/.test(mid)||/require\!/.test(mid)?1:0;}if(!_50d.executed&&!_50d.noReqPluginCheck&&_50d.injected==_50f){return;}}_510(function(){var _511=_504;_504=[];_500.forEach(_511,function(cb){cb(1);});});}:(function(){var _512,_513=function(m){_512[m.mid]=1;for(var t,_514,deps=m.deps||[],i=0;i<deps.length;i++){_514=deps[i];if(!(t=_512[_514.mid])){if(t===0||!_513(_514)){_512[m.mid]=0;return false;}}}return true;};return function(){var _515,mid;_512={};for(mid in _50e){_515=_50e[mid];if(_515.executed||_515.noReqPluginCheck){_512[mid]=1;}else{if(_515.noReqPluginCheck!==0){_515.noReqPluginCheck=/loadInit\!/.test(mid)||/require\!/.test(mid)?1:0;}if(_515.noReqPluginCheck){_512[mid]=1;}else{if(_515.injected!==_540){_512[mid]=0;}}}}for(var t,i=0,end=_505.length;i<end;i++){_515=_505[i];if(!(t=_512[_515.mid])){if(t===0||!_513(_515)){return;}}}_510(function(){var _516=_504;_504=[];_500.forEach(_516,function(cb){cb(1);});});};})()),_517=function(mid,_518,_519){_518([mid],function(_51a){_518(_51a.names,function(){for(var _51b="",args=[],i=0;i<arguments.length;i++){_51b+="var "+_51a.names[i]+"= arguments["+i+"]; ";args.push(arguments[i]);}eval(_51b);var _51c=_518.module,_51d=[],_51e,_51f={provide:function(_520){_520=_502(_520);var _521=_50a(_520,_51c);if(_521!==_51c){_546(_521);}},require:function(_522,_523){_522=_502(_522);_523&&(_50a(_522,_51c).result=_541);_51d.push(_522);},requireLocalization:function(_524,_525,_526){if(!_51e){_51e=["dojo/i18n"];}_526=(_526||dojo.locale).toLowerCase();_524=_502(_524)+"/nls/"+(/root/i.test(_526)?"":_526+"/")+_502(_525);if(_50a(_524,_51c).isXd){_51e.push("dojo/i18n!"+_524);}},loadInit:function(f){f();}},hold={},p;try{for(p in _51f){hold[p]=dojo[p];dojo[p]=_51f[p];}_51a.def.apply(null,args);}catch(e){_527("error",[_501("failedDojoLoadInit"),e]);}finally{for(p in _51f){dojo[p]=hold[p];}}if(_51e){_51d=_51d.concat(_51e);}if(_51d.length){_506(_51d.join(","),_518,_519);}else{_519();}});});},_528=function(text,_529,_52a){var _52b=/\(|\)/g,_52c=1,_52d;_52b.lastIndex=_529;while((_52d=_52b.exec(text))){if(_52d[0]==")"){_52c-=1;}else{_52c+=1;}if(_52c==0){break;}}if(_52c!=0){throw "unmatched paren around character "+_52b.lastIndex+" in: "+text;}return [dojo.trim(text.substring(_52a,_52b.lastIndex))+";\n",_52b.lastIndex];},_52e=/\/\/.*|\/\*[\s\S]*?\*\/|("(?:\\.|[^"])*"|'(?:\\.|[^'])*'|`(?:\\.|[^`])*`)/mg,_52f=/(^|\s)dojo\.(loadInit|require|provide|requireLocalization|requireIf|requireAfterIf|platformRequire)\s*\(/mg,_530=/(^|\s)(require|define)\s*\(/m,_531=function(text,_532){var _533,_534,_535,_536,_537=[],_538=[],_539=[];_532=_532||text.replace(_52e,"$1");while((_533=_52f.exec(_532))){_534=_52f.lastIndex;_535=_534-_533[0].length;_536=_528(_532,_534,_535);if(_533[2]=="loadInit"){_537.push(_536[0]);}else{_538.push(_536[0]);}_52f.lastIndex=_536[1];}_539=_537.concat(_538);if(_539.length||!_530.test(_532)){return [text.replace(/(^|\s)dojo\.loadInit\s*\(/g,"\n0 && dojo.loadInit("),_539.join(""),_539];}else{return 0;}},_53a=function(_53b,text){var _53c,id,_53d=[],_53e=[];if(_503.test(text)||!(_53c=_531(text))){return 0;}id=_53b.mid+"-*loadInit";for(var p in _50a("dojo",_53b).result.scopeMap){_53d.push(p);_53e.push("\""+p+"\"");}return "// xdomain rewrite of "+_53b.mid+"\n"+"define('"+id+"',{\n"+"\tnames:"+json.stringify(_53d)+",\n"+"\tdef:function("+_53d.join(",")+"){"+_53c[1]+"}"+"});\n\n"+"define("+json.stringify(_53d.concat(["dojo/loadInit!"+id]))+", function("+_53d.join(",")+"){\n"+_53c[0]+"});";},_53f=_4fe.initSyncLoader(_506,_50c,_53a),sync=_53f.sync,_50f=_53f.requested,_540=_53f.arrived,_541=_53f.nonmodule,_542=_53f.executing,_543=_53f.executed,_544=_53f.syncExecStack,_50e=_53f.modules,_545=_53f.execQ,_50a=_53f.getModule,_50b=_53f.injectModule,_546=_53f.setArrived,_527=_53f.signal,_547=_53f.finishExec,_548=_53f.execModule,_549=_53f.getLegacyMode,_510=_53f.guardCheckComplete;_506=_53f.dojoRequirePlugin;dojo.provide=function(mid){var _54a=_544[0],_54b=lang.mixin(_50a(_502(mid),_4fe.module),{executed:_542,result:lang.getObject(mid,true)});_546(_54b);if(_54a){(_54a.provides||(_54a.provides=[])).push(function(){_54b.result=lang.getObject(mid);delete _54b.provides;_54b.executed!==_543&&_547(_54b);});}return _54b.result;};has.add("config-publishRequireResult",1,0,0);dojo.require=function(_54c,_54d){function _54e(mid,_54f){var _550=_50a(_502(mid),_4fe.module);if(_544.length&&_544[0].finish){_544[0].finish.push(mid);return undefined;}if(_550.executed){return _550.result;}_54f&&(_550.result=_541);var _551=_549();_50b(_550);_551=_549();if(_550.executed!==_543&&_550.injected===_540){_53f.guardCheckComplete(function(){_548(_550);});}if(_550.executed){return _550.result;}if(_551==sync){if(_550.cjs){_545.unshift(_550);}else{_544.length&&(_544[0].finish=[mid]);}}else{_545.push(_550);}return undefined;};var _552=_54e(_54c,_54d);if(has("config-publishRequireResult")&&!lang.exists(_54c)&&_552!==undefined){lang.setObject(_54c,_552);}return _552;};dojo.loadInit=function(f){f();};dojo.registerModulePath=function(_553,_554){var _555={};_555[_553.replace(/\./g,"/")]=_554;_4fe({paths:_555});};dojo.platformRequire=function(_556){var _557=(_556.common||[]).concat(_556[dojo._name]||_556["default"]||[]),temp;while(_557.length){if(lang.isArray(temp=_557.shift())){dojo.require.apply(dojo,temp);}else{dojo.require(temp);}}};dojo.requireIf=dojo.requireAfterIf=function(_558,_559,_55a){if(_558){dojo.require(_559,_55a);}};dojo.requireLocalization=function(_55b,_55c,_55d){_4fe(["../i18n"],function(i18n){i18n.getLocalization(_55b,_55c,_55d);});};return {extractLegacyApiApplications:_531,require:_506,loadInit:_517};});}}});(function(){var _55e=this.require;_55e({cache:{}});!_55e.async&&_55e(["dojo"]);_55e.boot&&_55e.apply(null,_55e.boot);})(); \ No newline at end of file
diff --git a/lib/dojo/package.json b/lib/dojo/package.json
index 410e6ecf3..bccf2f033 100644
--- a/lib/dojo/package.json
+++ b/lib/dojo/package.json
@@ -1,6 +1,6 @@
{
"name": "dojo",
- "version": "1.16.4",
+ "version": "1.16.5",
"directories": {
"lib": "."
},
@@ -11,7 +11,7 @@
"jsgi-node": "0.3.1",
"formidable": "1.0.17",
"sinon": "1.12.2",
- "dojo": "1.16.4"
+ "dojo": "1.16.5"
},
"main": "main",
"scripts": {
diff --git a/lib/dojo/tt-rss-layer.js b/lib/dojo/tt-rss-layer.js
index 7737ede83..3b49e3c21 100644
--- a/lib/dojo/tt-rss-layer.js
+++ b/lib/dojo/tt-rss-layer.js
@@ -5,4 +5,4 @@
*/
//>>built
-require({cache:{"dojo/_base/url":function(){define(["./kernel"],function(_1){var _2=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),_3=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),_4=function(){var n=null,_5=arguments,_6=[_5[0]];for(var i=1;i<_5.length;i++){if(!_5[i]){continue;}var _7=new _4(_5[i]+""),_8=new _4(_6[0]+"");if(_7.path==""&&!_7.scheme&&!_7.authority&&!_7.query){if(_7.fragment!=n){_8.fragment=_7.fragment;}_7=_8;}else{if(!_7.scheme){_7.scheme=_8.scheme;if(!_7.authority){_7.authority=_8.authority;if(_7.path.charAt(0)!="/"){var _9=_8.path.substring(0,_8.path.lastIndexOf("/")+1)+_7.path;var _a=_9.split("/");for(var j=0;j<_a.length;j++){if(_a[j]=="."){if(j==_a.length-1){_a[j]="";}else{_a.splice(j,1);j--;}}else{if(j>0&&!(j==1&&_a[0]=="")&&_a[j]==".."&&_a[j-1]!=".."){if(j==(_a.length-1)){_a.splice(j,1);_a[j-1]="";}else{_a.splice(j-1,2);j-=2;}}}}_7.path=_a.join("/");}}}}_6=[];if(_7.scheme){_6.push(_7.scheme,":");}if(_7.authority){_6.push("//",_7.authority);}_6.push(_7.path);if(_7.query){_6.push("?",_7.query);}if(_7.fragment){_6.push("#",_7.fragment);}}this.uri=_6.join("");var r=this.uri.match(_2);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(_3);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};_4.prototype.toString=function(){return this.uri;};return _1._Url=_4;});},"dojo/cache":function(){define(["./_base/kernel","./text"],function(_b){return _b.cache;});},"dojo/text":function(){define(["./_base/kernel","require","./has","./request"],function(_c,_d,_e,_f){var _10;if(1){_10=function(url,_11,_12){_f(url,{sync:!!_11,headers:{"X-Requested-With":null}}).then(_12);};}else{if(_d.getText){_10=_d.getText;}else{console.error("dojo/text plugin failed to load because loader does not support getText");}}var _13={},_14=function(_15){if(_15){_15=_15.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");var _16=_15.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_16){_15=_16[1];}}else{_15="";}return _15;},_17={},_18={};_c.cache=function(_19,url,_1a){var key;if(typeof _19=="string"){if(/\//.test(_19)){key=_19;_1a=url;}else{key=_d.toUrl(_19.replace(/\./g,"/")+(url?("/"+url):""));}}else{key=_19+"";_1a=url;}var val=(_1a!=undefined&&typeof _1a!="string")?_1a.value:_1a,_1b=_1a&&_1a.sanitize;if(typeof val=="string"){_13[key]=val;return _1b?_14(val):val;}else{if(val===null){delete _13[key];return null;}else{if(!(key in _13)){_10(key,true,function(_1c){_13[key]=_1c;});}return _1b?_14(_13[key]):_13[key];}}};return {dynamic:true,normalize:function(id,_1d){var _1e=id.split("!"),url=_1e[0];return (/^\./.test(url)?_1d(url):url)+(_1e[1]?"!"+_1e[1]:"");},load:function(id,_1f,_20){var _21=id.split("!"),_22=_21.length>1,_23=_21[0],url=_1f.toUrl(_21[0]),_24="url:"+url,_25=_17,_26=function(_27){_20(_22?_14(_27):_27);};if(_23 in _13){_25=_13[_23];}else{if(_1f.cache&&_24 in _1f.cache){_25=_1f.cache[_24];}else{if(url in _13){_25=_13[url];}}}if(_25===_17){if(_18[url]){_18[url].push(_26);}else{var _28=_18[url]=[_26];_10(url,!_1f.async,function(_29){_13[_23]=_13[url]=_29;for(var i=0;i<_28.length;){_28[i++](_29);}delete _18[url];});}}else{_26(_25);}}};});},"dojo/request":function(){define(["./request/default!"],function(_2a){return _2a;});},"dojo/request/default":function(){define(["exports","require","../has"],function(_2b,_2c,has){var _2d=has("config-requestProvider"),_2e;if(1||has("host-webworker")){_2e="./xhr";}else{if(0){_2e="./node";}}if(!_2d){_2d=_2e;}_2b.getPlatformDefaultId=function(){return _2e;};_2b.load=function(id,_2f,_30,_31){_2c([id=="platform"?_2e:_2d],function(_32){_30(_32);});};});},"dojo/parser":function(){define(["require","./_base/kernel","./_base/lang","./_base/array","./_base/config","./dom","./_base/window","./_base/url","./aspect","./promise/all","./date/stamp","./Deferred","./has","./query","./on","./ready"],function(_33,_34,_35,_36,_37,dom,_38,_39,_3a,all,_3b,_3c,has,_3d,don,_3e){new Date("X");function _3f(_40){return eval("("+_40+")");};var _41=0;_3a.after(_35,"extend",function(){_41++;},true);function _42(_43){var map=_43._nameCaseMap,_44=_43.prototype;if(!map||map._extendCnt<_41){map=_43._nameCaseMap={};for(var _45 in _44){if(_45.charAt(0)==="_"){continue;}map[_45.toLowerCase()]=_45;}map._extendCnt=_41;}return map;};function _46(_47,_48){if(!_48){_48=_33;}var _49=_48._dojoParserCtorMap||(_48._dojoParserCtorMap={});var ts=_47.join();if(!_49[ts]){var _4a=[];for(var i=0,l=_47.length;i<l;i++){var t=_47[i];_4a[_4a.length]=(_49[t]=_49[t]||(_35.getObject(t)||(~t.indexOf("/")&&_48(t))));}var _4b=_4a.shift();_49[ts]=_4a.length?(_4b.createSubclass?_4b.createSubclass(_4a):_4b.extend.apply(_4b,_4a)):_4b;}return _49[ts];};var _4c={_clearCache:function(){_41++;_ctorMap={};},_functionFromScript:function(_4d,_4e){var _4f="",_50="",_51=(_4d.getAttribute(_4e+"args")||_4d.getAttribute("args")),_52=_4d.getAttribute("with");var _53=(_51||"").split(/\s*,\s*/);if(_52&&_52.length){_36.forEach(_52.split(/\s*,\s*/),function(_54){_4f+="with("+_54+"){";_50+="}";});}return new Function(_53,_4f+_4d.innerHTML+_50);},instantiate:function(_55,_56,_57){_56=_56||{};_57=_57||{};var _58=(_57.scope||_34._scopeName)+"Type",_59="data-"+(_57.scope||_34._scopeName)+"-",_5a=_59+"type",_5b=_59+"mixins";var _5c=[];_36.forEach(_55,function(_5d){var _5e=_58 in _56?_56[_58]:_5d.getAttribute(_5a)||_5d.getAttribute(_58);if(_5e){var _5f=_5d.getAttribute(_5b),_60=_5f?[_5e].concat(_5f.split(/\s*,\s*/)):[_5e];_5c.push({node:_5d,types:_60});}});return this._instantiate(_5c,_56,_57);},_instantiate:function(_61,_62,_63,_64){var _65=_36.map(_61,function(obj){var _66=obj.ctor||_46(obj.types,_63.contextRequire);if(!_66){throw new Error("Unable to resolve constructor for: '"+obj.types.join()+"'");}return this.construct(_66,obj.node,_62,_63,obj.scripts,obj.inherited);},this);function _67(_68){if(!_62._started&&!_63.noStart){_36.forEach(_68,function(_69){if(typeof _69.startup==="function"&&!_69._started){_69.startup();}});}return _68;};if(_64){return all(_65).then(_67);}else{return _67(_65);}},construct:function(_6a,_6b,_6c,_6d,_6e,_6f){var _70=_6a&&_6a.prototype;_6d=_6d||{};var _71={};if(_6d.defaults){_35.mixin(_71,_6d.defaults);}if(_6f){_35.mixin(_71,_6f);}var _72;if(has("dom-attributes-explicit")){_72=_6b.attributes;}else{if(has("dom-attributes-specified-flag")){_72=_36.filter(_6b.attributes,function(a){return a.specified;});}else{var _73=/^input$|^img$/i.test(_6b.nodeName)?_6b:_6b.cloneNode(false),_74=_73.outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g,"").replace(/^\s*<[a-zA-Z0-9]*\s*/,"").replace(/\s*>.*$/,"");_72=_36.map(_74.split(/\s+/),function(_75){var _76=_75.toLowerCase();return {name:_75,value:(_6b.nodeName=="LI"&&_75=="value")||_76=="enctype"?_6b.getAttribute(_76):_6b.getAttributeNode(_76).value};});}}var _77=_6d.scope||_34._scopeName,_78="data-"+_77+"-",_79={};if(_77!=="dojo"){_79[_78+"props"]="data-dojo-props";_79[_78+"type"]="data-dojo-type";_79[_78+"mixins"]="data-dojo-mixins";_79[_77+"type"]="dojotype";_79[_78+"id"]="data-dojo-id";}var i=0,_7a,_7b=[],_7c,_7d;while(_7a=_72[i++]){var _7e=_7a.name,_7f=_7e.toLowerCase(),_80=_7a.value;switch(_79[_7f]||_7f){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":_7d=_80;break;case "data-dojo-id":case "jsid":_7c=_80;break;case "data-dojo-attach-point":case "dojoattachpoint":_71.dojoAttachPoint=_80;break;case "data-dojo-attach-event":case "dojoattachevent":_71.dojoAttachEvent=_80;break;case "class":_71["class"]=_6b.className;break;case "style":_71["style"]=_6b.style&&_6b.style.cssText;break;default:if(!(_7e in _70)){var map=_42(_6a);_7e=map[_7f]||_7e;}if(_7e in _70){switch(typeof _70[_7e]){case "string":_71[_7e]=_80;break;case "number":_71[_7e]=_80.length?Number(_80):NaN;break;case "boolean":_71[_7e]=_80.toLowerCase()!="false";break;case "function":if(_80===""||_80.search(/[^\w\.]+/i)!=-1){_71[_7e]=new Function(_80);}else{_71[_7e]=_35.getObject(_80,false)||new Function(_80);}_7b.push(_7e);break;default:var _81=_70[_7e];_71[_7e]=(_81&&"length" in _81)?(_80?_80.split(/\s*,\s*/):[]):(_81 instanceof Date)?(_80==""?new Date(""):_80=="now"?new Date():_3b.fromISOString(_80)):(_81 instanceof _39)?(_34.baseUrl+_80):_3f(_80);}}else{_71[_7e]=_80;}}}for(var j=0;j<_7b.length;j++){var _82=_7b[j].toLowerCase();_6b.removeAttribute(_82);_6b[_82]=null;}if(_7d){try{_7d=_3f.call(_6d.propsThis,"{"+_7d+"}");_35.mixin(_71,_7d);}catch(e){throw new Error(e.toString()+" in data-dojo-props='"+_7d+"'");}}_35.mixin(_71,_6c);if(!_6e){_6e=(_6a&&(_6a._noScript||_70._noScript)?[]:_3d("> script[type^='dojo/']",_6b));}var _83=[],_84=[],_85=[],ons=[];if(_6e){for(i=0;i<_6e.length;i++){var _86=_6e[i];_6b.removeChild(_86);var _87=(_86.getAttribute(_78+"event")||_86.getAttribute("event")),_88=_86.getAttribute(_78+"prop"),_89=_86.getAttribute(_78+"method"),_8a=_86.getAttribute(_78+"advice"),_8b=_86.getAttribute("type"),nf=this._functionFromScript(_86,_78);if(_87){if(_8b=="dojo/connect"){_83.push({method:_87,func:nf});}else{if(_8b=="dojo/on"){ons.push({event:_87,func:nf});}else{_71[_87]=nf;}}}else{if(_8b=="dojo/aspect"){_83.push({method:_89,advice:_8a,func:nf});}else{if(_8b=="dojo/watch"){_85.push({prop:_88,func:nf});}else{_84.push(nf);}}}}}var _8c=_6a.markupFactory||_70.markupFactory;var _8d=_8c?_8c(_71,_6b,_6a):new _6a(_71,_6b);function _8e(_8f){if(_7c){_35.setObject(_7c,_8f);}for(i=0;i<_83.length;i++){_3a[_83[i].advice||"after"](_8f,_83[i].method,_35.hitch(_8f,_83[i].func),true);}for(i=0;i<_84.length;i++){_84[i].call(_8f);}for(i=0;i<_85.length;i++){_8f.watch(_85[i].prop,_85[i].func);}for(i=0;i<ons.length;i++){don(_8f,ons[i].event,ons[i].func);}return _8f;};if(_8d.then){return _8d.then(_8e);}else{return _8e(_8d);}},scan:function(_90,_91){var _92=[],_93=[],_94={};var _95=(_91.scope||_34._scopeName)+"Type",_96="data-"+(_91.scope||_34._scopeName)+"-",_97=_96+"type",_98=_96+"textdir",_99=_96+"mixins";var _9a=_90.firstChild;var _9b=_91.inherited;if(!_9b){function _9c(_9d,_9e){return (_9d.getAttribute&&_9d.getAttribute(_9e))||(_9d.parentNode&&_9c(_9d.parentNode,_9e));};_9b={dir:_9c(_90,"dir"),lang:_9c(_90,"lang"),textDir:_9c(_90,_98)};for(var key in _9b){if(!_9b[key]){delete _9b[key];}}}var _9f={inherited:_9b};var _a0;var _a1;function _a2(_a3){if(!_a3.inherited){_a3.inherited={};var _a4=_a3.node,_a5=_a2(_a3.parent);var _a6={dir:_a4.getAttribute("dir")||_a5.dir,lang:_a4.getAttribute("lang")||_a5.lang,textDir:_a4.getAttribute(_98)||_a5.textDir};for(var key in _a6){if(_a6[key]){_a3.inherited[key]=_a6[key];}}}return _a3.inherited;};while(true){if(!_9a){if(!_9f||!_9f.node){break;}_9a=_9f.node.nextSibling;_a1=false;_9f=_9f.parent;_a0=_9f.scripts;continue;}if(_9a.nodeType!=1){_9a=_9a.nextSibling;continue;}if(_a0&&_9a.nodeName.toLowerCase()=="script"){_a7=_9a.getAttribute("type");if(_a7&&/^dojo\/\w/i.test(_a7)){_a0.push(_9a);}_9a=_9a.nextSibling;continue;}if(_a1){_9a=_9a.nextSibling;continue;}var _a7=_9a.getAttribute(_97)||_9a.getAttribute(_95);var _a8=_9a.firstChild;if(!_a7&&(!_a8||(_a8.nodeType==3&&!_a8.nextSibling))){_9a=_9a.nextSibling;continue;}var _a9;var _aa=null;if(_a7){var _ab=_9a.getAttribute(_99),_ac=_ab?[_a7].concat(_ab.split(/\s*,\s*/)):[_a7];try{_aa=_46(_ac,_91.contextRequire);}catch(e){}if(!_aa){_36.forEach(_ac,function(t){if(~t.indexOf("/")&&!_94[t]){_94[t]=true;_93[_93.length]=t;}});}var _ad=_aa&&!_aa.prototype._noScript?[]:null;_a9={types:_ac,ctor:_aa,parent:_9f,node:_9a,scripts:_ad};_a9.inherited=_a2(_a9);_92.push(_a9);}else{_a9={node:_9a,scripts:_a0,parent:_9f};}_a0=_ad;_a1=_9a.stopParser||(_aa&&_aa.prototype.stopParser&&!(_91.template));_9f=_a9;_9a=_a8;}var d=new _3c();if(_93.length){if(has("dojo-debug-messages")){console.warn("WARNING: Modules being Auto-Required: "+_93.join(", "));}var r=_91.contextRequire||_33;r(_93,function(){d.resolve(_36.filter(_92,function(_ae){if(!_ae.ctor){try{_ae.ctor=_46(_ae.types,_91.contextRequire);}catch(e){}}var _af=_ae.parent;while(_af&&!_af.types){_af=_af.parent;}var _b0=_ae.ctor&&_ae.ctor.prototype;_ae.instantiateChildren=!(_b0&&_b0.stopParser&&!(_91.template));_ae.instantiate=!_af||(_af.instantiate&&_af.instantiateChildren);return _ae.instantiate;}));});}else{d.resolve(_92);}return d.promise;},_require:function(_b1,_b2){var _b3=_3f("{"+_b1.innerHTML+"}"),_b4=[],_b5=[],d=new _3c();var _b6=(_b2&&_b2.contextRequire)||_33;for(var _b7 in _b3){_b4.push(_b7);_b5.push(_b3[_b7]);}_b6(_b5,function(){for(var i=0;i<_b4.length;i++){_35.setObject(_b4[i],arguments[i]);}d.resolve(arguments);});return d.promise;},_scanAmd:function(_b8,_b9){var _ba=new _3c(),_bb=_ba.promise;_ba.resolve(true);var _bc=this;_3d("script[type='dojo/require']",_b8).forEach(function(_bd){_bb=_bb.then(function(){return _bc._require(_bd,_b9);});_bd.parentNode.removeChild(_bd);});return _bb;},parse:function(_be,_bf){if(_be&&typeof _be!="string"&&!("nodeType" in _be)){_bf=_be;_be=_bf.rootNode;}var _c0=_be?dom.byId(_be):_38.body();_bf=_bf||{};var _c1=_bf.template?{template:true}:{},_c2=[],_c3=this;var p=this._scanAmd(_c0,_bf).then(function(){return _c3.scan(_c0,_bf);}).then(function(_c4){return _c3._instantiate(_c4,_c1,_bf,true);}).then(function(_c5){return _c2=_c2.concat(_c5);}).otherwise(function(e){console.error("dojo/parser::parse() error",e);throw e;});_35.mixin(_c2,p);return _c2;}};if(1){_34.parser=_4c;}if(_37.parseOnLoad){_3e(100,_4c,"parse");}return _4c;});},"dojo/promise/all":function(){define(["../_base/array","../_base/lang","../Deferred","../when"],function(_c6,_c7,_c8,_c9){"use strict";var _ca=_c6.some;return function all(_cb){var _cc,_c6;if(_c7.isArray(_cb)){_c6=_cb;}else{if(_cb&&typeof _cb==="object"){_cc=_cb;}}var _cd;var _ce=[];if(_cc){_c6=[];for(var key in _cc){if(Object.hasOwnProperty.call(_cc,key)){_ce.push(key);_c6.push(_cc[key]);}}_cd={};}else{if(_c6){_cd=[];}}if(!_c6||!_c6.length){return new _c8().resolve(_cd);}var _cf=new _c8();_cf.promise.always(function(){_cd=_ce=null;});var _d0=_c6.length;_ca(_c6,function(_d1,_d2){if(!_cc){_ce.push(_d2);}_c9(_d1,function(_d3){if(!_cf.isFulfilled()){_cd[_ce[_d2]]=_d3;if(--_d0===0){_cf.resolve(_cd);}}},_cf.reject);return _cf.isFulfilled();});return _cf.promise;};});},"dojo/date/stamp":function(){define(["../_base/lang","../_base/array"],function(_d4,_d5){var _d6={};_d4.setObject("dojo.date.stamp",_d6);_d6.fromISOString=function(_d7,_d8){if(!_d6._isoRegExp){_d6._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;}var _d9=_d6._isoRegExp.exec(_d7),_da=null;if(_d9){_d9.shift();if(_d9[1]){_d9[1]--;}if(_d9[6]){_d9[6]*=1000;}if(_d8){_d8=new Date(_d8);_d5.forEach(_d5.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(_db){return _d8["get"+_db]();}),function(_dc,_dd){_d9[_dd]=_d9[_dd]||_dc;});}_da=new Date(_d9[0]||1970,_d9[1]||0,_d9[2]||1,_d9[3]||0,_d9[4]||0,_d9[5]||0,_d9[6]||0);if(_d9[0]<100){_da.setFullYear(_d9[0]||1970);}var _de=0,_df=_d9[7]&&_d9[7].charAt(0);if(_df!="Z"){_de=((_d9[8]||0)*60)+(Number(_d9[9])||0);if(_df!="-"){_de*=-1;}}if(_df){_de-=_da.getTimezoneOffset();}if(_de){_da.setTime(_da.getTime()+_de*60000);}}return _da;};_d6.toISOString=function(_e0,_e1){var _e2=function(n){return (n<10)?"0"+n:n;};_e1=_e1||{};var _e3=[],_e4=_e1.zulu?"getUTC":"get",_e5="";if(_e1.selector!="time"){var _e6=_e0[_e4+"FullYear"]();_e5=["0000".substr((_e6+"").length)+_e6,_e2(_e0[_e4+"Month"]()+1),_e2(_e0[_e4+"Date"]())].join("-");}_e3.push(_e5);if(_e1.selector!="date"){var _e7=[_e2(_e0[_e4+"Hours"]()),_e2(_e0[_e4+"Minutes"]()),_e2(_e0[_e4+"Seconds"]())].join(":");var _e8=_e0[_e4+"Milliseconds"]();if(_e1.milliseconds){_e7+="."+(_e8<100?"0":"")+_e2(_e8);}if(_e1.zulu){_e7+="Z";}else{if(_e1.selector!="time"){var _e9=_e0.getTimezoneOffset();var _ea=Math.abs(_e9);_e7+=(_e9>0?"-":"+")+_e2(Math.floor(_ea/60))+":"+_e2(_ea%60);}}_e3.push(_e7);}return _e3.join("T");};return _d6;});},"dojo/node":function(){define(["./_base/kernel","./has","require"],function(_eb,has,_ec){var _ed=_eb.global.require&&_eb.global.require.nodeRequire;if(!_ed){throw new Error("Cannot find the Node.js require");}var _ee=_ed("module");return {load:function(id,_ef,_f0){if(_ee._findPath&&_ee._nodeModulePaths){var _f1=_ee._findPath(id,_ee._nodeModulePaths(_ef.toUrl(".")));if(_f1!==false){id=_f1;}}var _f2=define,_f3;define=undefined;try{_f3=_ed(id);}finally{define=_f2;}_f0(_f3);},normalize:function(id,_f4){if(id.charAt(0)==="."){id=_ec.toUrl(_f4("./"+id));}return id;}};});},"dojo/data/ItemFileWriteStore":function(){define(["../_base/lang","../_base/declare","../_base/array","../_base/json","../_base/kernel","./ItemFileReadStore","../date/stamp"],function(_f5,_f6,_f7,_f8,_f9,_fa,_fb){return _f6("dojo.data.ItemFileWriteStore",_fa,{constructor:function(_fc){this._features["dojo.data.api.Write"]=true;this._features["dojo.data.api.Notification"]=true;this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};if(!this._datatypeMap["Date"].serialize){this._datatypeMap["Date"].serialize=function(obj){return _fb.toISOString(obj,{zulu:true});};}if(_fc&&(_fc.referenceIntegrity===false)){this.referenceIntegrity=false;}this._saveInProgress=false;},referenceIntegrity:true,_assert:function(_fd){if(!_fd){throw new Error("assertion failed in ItemFileWriteStore");}},_getIdentifierAttribute:function(){return this.getFeatures()["dojo.data.api.Identity"];},newItem:function(_fe,_ff){this._assert(!this._saveInProgress);if(!this._loadFinished){this._forceLoad();}if(typeof _fe!="object"&&typeof _fe!="undefined"){throw new Error("newItem() was passed something other than an object");}var _100=null;var _101=this._getIdentifierAttribute();if(_101===Number){_100=this._arrayOfAllItems.length;}else{_100=_fe[_101];if(typeof _100==="undefined"){throw new Error("newItem() was not passed an identity for the new item");}if(_f5.isArray(_100)){throw new Error("newItem() was not passed an single-valued identity");}}if(this._itemsByIdentity){this._assert(typeof this._itemsByIdentity[_100]==="undefined");}this._assert(typeof this._pending._newItems[_100]==="undefined");this._assert(typeof this._pending._deletedItems[_100]==="undefined");var _102={};_102[this._storeRefPropName]=this;_102[this._itemNumPropName]=this._arrayOfAllItems.length;if(this._itemsByIdentity){this._itemsByIdentity[_100]=_102;_102[_101]=[_100];}this._arrayOfAllItems.push(_102);var _103=null;if(_ff&&_ff.parent&&_ff.attribute){_103={item:_ff.parent,attribute:_ff.attribute,oldValue:undefined};var _104=this.getValues(_ff.parent,_ff.attribute);if(_104&&_104.length>0){var _105=_104.slice(0,_104.length);if(_104.length===1){_103.oldValue=_104[0];}else{_103.oldValue=_104.slice(0,_104.length);}_105.push(_102);this._setValueOrValues(_ff.parent,_ff.attribute,_105,false);_103.newValue=this.getValues(_ff.parent,_ff.attribute);}else{this._setValueOrValues(_ff.parent,_ff.attribute,_102,false);_103.newValue=_102;}}else{_102[this._rootItemPropName]=true;this._arrayOfTopLevelItems.push(_102);}this._pending._newItems[_100]=_102;for(var key in _fe){if(key===this._storeRefPropName||key===this._itemNumPropName){throw new Error("encountered bug in ItemFileWriteStore.newItem");}var _106=_fe[key];if(!_f5.isArray(_106)){_106=[_106];}_102[key]=_106;if(this.referenceIntegrity){for(var i=0;i<_106.length;i++){var val=_106[i];if(this.isItem(val)){this._addReferenceToMap(val,_102,key);}}}}this.onNew(_102,_103);return _102;},_removeArrayElement:function(_107,_108){var _109=_f7.indexOf(_107,_108);if(_109!=-1){_107.splice(_109,1);return true;}return false;},deleteItem:function(item){this._assert(!this._saveInProgress);this._assertIsItem(item);var _10a=item[this._itemNumPropName];var _10b=this.getIdentity(item);if(this.referenceIntegrity){var _10c=this.getAttributes(item);if(item[this._reverseRefMap]){item["backup_"+this._reverseRefMap]=_f5.clone(item[this._reverseRefMap]);}_f7.forEach(_10c,function(_10d){_f7.forEach(this.getValues(item,_10d),function(_10e){if(this.isItem(_10e)){if(!item["backupRefs_"+this._reverseRefMap]){item["backupRefs_"+this._reverseRefMap]=[];}item["backupRefs_"+this._reverseRefMap].push({id:this.getIdentity(_10e),attr:_10d});this._removeReferenceFromMap(_10e,item,_10d);}},this);},this);var _10f=item[this._reverseRefMap];if(_10f){for(var _110 in _10f){var _111=null;if(this._itemsByIdentity){_111=this._itemsByIdentity[_110];}else{_111=this._arrayOfAllItems[_110];}if(_111){for(var _112 in _10f[_110]){var _113=this.getValues(_111,_112)||[];var _114=_f7.filter(_113,function(_115){return !(this.isItem(_115)&&this.getIdentity(_115)==_10b);},this);this._removeReferenceFromMap(item,_111,_112);if(_114.length<_113.length){this._setValueOrValues(_111,_112,_114,true);}}}}}}this._arrayOfAllItems[_10a]=null;item[this._storeRefPropName]=null;if(this._itemsByIdentity){delete this._itemsByIdentity[_10b];}this._pending._deletedItems[_10b]=item;if(item[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,item);}this.onDelete(item);return true;},setValue:function(item,_116,_117){return this._setValueOrValues(item,_116,_117,true);},setValues:function(item,_118,_119){return this._setValueOrValues(item,_118,_119,true);},unsetAttribute:function(item,_11a){return this._setValueOrValues(item,_11a,[],true);},_setValueOrValues:function(item,_11b,_11c,_11d){this._assert(!this._saveInProgress);this._assertIsItem(item);this._assert(_f5.isString(_11b));this._assert(typeof _11c!=="undefined");var _11e=this._getIdentifierAttribute();if(_11b==_11e){throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier.");}var _11f=this._getValueOrValues(item,_11b);var _120=this.getIdentity(item);if(!this._pending._modifiedItems[_120]){var _121={};for(var key in item){if((key===this._storeRefPropName)||(key===this._itemNumPropName)||(key===this._rootItemPropName)){_121[key]=item[key];}else{if(key===this._reverseRefMap){_121[key]=_f5.clone(item[key]);}else{_121[key]=item[key].slice(0,item[key].length);}}}this._pending._modifiedItems[_120]=_121;}var _122=false;if(_f5.isArray(_11c)&&_11c.length===0){_122=delete item[_11b];_11c=undefined;if(this.referenceIntegrity&&_11f){var _123=_11f;if(!_f5.isArray(_123)){_123=[_123];}for(var i=0;i<_123.length;i++){var _124=_123[i];if(this.isItem(_124)){this._removeReferenceFromMap(_124,item,_11b);}}}}else{var _125;if(_f5.isArray(_11c)){_125=_11c.slice(0,_11c.length);}else{_125=[_11c];}if(this.referenceIntegrity){if(_11f){var _123=_11f;if(!_f5.isArray(_123)){_123=[_123];}var map={};_f7.forEach(_123,function(_126){if(this.isItem(_126)){var id=this.getIdentity(_126);map[id.toString()]=true;}},this);_f7.forEach(_125,function(_127){if(this.isItem(_127)){var id=this.getIdentity(_127);if(map[id.toString()]){delete map[id.toString()];}else{this._addReferenceToMap(_127,item,_11b);}}},this);for(var rId in map){var _128;if(this._itemsByIdentity){_128=this._itemsByIdentity[rId];}else{_128=this._arrayOfAllItems[rId];}this._removeReferenceFromMap(_128,item,_11b);}}else{for(var i=0;i<_125.length;i++){var _124=_125[i];if(this.isItem(_124)){this._addReferenceToMap(_124,item,_11b);}}}}item[_11b]=_125;_122=true;}if(_11d){this.onSet(item,_11b,_11f,_11c);}return _122;},_addReferenceToMap:function(_129,_12a,_12b){var _12c=this.getIdentity(_12a);var _12d=_129[this._reverseRefMap];if(!_12d){_12d=_129[this._reverseRefMap]={};}var _12e=_12d[_12c];if(!_12e){_12e=_12d[_12c]={};}_12e[_12b]=true;},_removeReferenceFromMap:function(_12f,_130,_131){var _132=this.getIdentity(_130);var _133=_12f[this._reverseRefMap];var _134;if(_133){for(_134 in _133){if(_134==_132){delete _133[_134][_131];if(this._isEmpty(_133[_134])){delete _133[_134];}}}if(this._isEmpty(_133)){delete _12f[this._reverseRefMap];}}},_dumpReferenceMap:function(){var i;for(i=0;i<this._arrayOfAllItems.length;i++){var item=this._arrayOfAllItems[i];if(item&&item[this._reverseRefMap]){}}},_getValueOrValues:function(item,_135){var _136=undefined;if(this.hasAttribute(item,_135)){var _137=this.getValues(item,_135);if(_137.length==1){_136=_137[0];}else{_136=_137;}}return _136;},_flatten:function(_138){if(this.isItem(_138)){return {_reference:this.getIdentity(_138)};}else{if(typeof _138==="object"){for(var type in this._datatypeMap){var _139=this._datatypeMap[type];if(_f5.isObject(_139)&&!_f5.isFunction(_139)){if(_138 instanceof _139.type){if(!_139.serialize){throw new Error("ItemFileWriteStore: No serializer defined for type mapping: ["+type+"]");}return {_type:type,_value:_139.serialize(_138)};}}else{if(_138 instanceof _139){return {_type:type,_value:_138.toString()};}}}}return _138;}},_getNewFileContentString:function(){var _13a={};var _13b=this._getIdentifierAttribute();if(_13b!==Number){_13a.identifier=_13b;}if(this._labelAttr){_13a.label=this._labelAttr;}_13a.items=[];for(var i=0;i<this._arrayOfAllItems.length;++i){var item=this._arrayOfAllItems[i];if(item!==null){var _13c={};for(var key in item){if(key!==this._storeRefPropName&&key!==this._itemNumPropName&&key!==this._reverseRefMap&&key!==this._rootItemPropName){var _13d=this.getValues(item,key);if(_13d.length==1){_13c[key]=this._flatten(_13d[0]);}else{var _13e=[];for(var j=0;j<_13d.length;++j){_13e.push(this._flatten(_13d[j]));_13c[key]=_13e;}}}}_13a.items.push(_13c);}}var _13f=true;return _f8.toJson(_13a,_13f);},_isEmpty:function(_140){var _141=true;if(_f5.isObject(_140)){var i;for(i in _140){_141=false;break;}}else{if(_f5.isArray(_140)){if(_140.length>0){_141=false;}}}return _141;},save:function(_142){this._assert(!this._saveInProgress);this._saveInProgress=true;var self=this;var _143=function(){self._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};self._saveInProgress=false;if(_142&&_142.onComplete){var _144=_142.scope||_f9.global;_142.onComplete.call(_144);}};var _145=function(err){self._saveInProgress=false;if(_142&&_142.onError){var _146=_142.scope||_f9.global;_142.onError.call(_146,err);}};if(this._saveEverything){var _147=this._getNewFileContentString();this._saveEverything(_143,_145,_147);}if(this._saveCustom){this._saveCustom(_143,_145);}if(!this._saveEverything&&!this._saveCustom){_143();}},revert:function(){this._assert(!this._saveInProgress);var _148;for(_148 in this._pending._modifiedItems){var _149=this._pending._modifiedItems[_148];var _14a=null;if(this._itemsByIdentity){_14a=this._itemsByIdentity[_148];}else{_14a=this._arrayOfAllItems[_148];}_149[this._storeRefPropName]=this;for(var key in _14a){delete _14a[key];}_f5.mixin(_14a,_149);}var _14b;for(_148 in this._pending._deletedItems){_14b=this._pending._deletedItems[_148];_14b[this._storeRefPropName]=this;var _14c=_14b[this._itemNumPropName];if(_14b["backup_"+this._reverseRefMap]){_14b[this._reverseRefMap]=_14b["backup_"+this._reverseRefMap];delete _14b["backup_"+this._reverseRefMap];}this._arrayOfAllItems[_14c]=_14b;if(this._itemsByIdentity){this._itemsByIdentity[_148]=_14b;}if(_14b[this._rootItemPropName]){this._arrayOfTopLevelItems.push(_14b);}}for(_148 in this._pending._deletedItems){_14b=this._pending._deletedItems[_148];if(_14b["backupRefs_"+this._reverseRefMap]){_f7.forEach(_14b["backupRefs_"+this._reverseRefMap],function(_14d){var _14e;if(this._itemsByIdentity){_14e=this._itemsByIdentity[_14d.id];}else{_14e=this._arrayOfAllItems[_14d.id];}this._addReferenceToMap(_14e,_14b,_14d.attr);},this);delete _14b["backupRefs_"+this._reverseRefMap];}}for(_148 in this._pending._newItems){var _14f=this._pending._newItems[_148];_14f[this._storeRefPropName]=null;this._arrayOfAllItems[_14f[this._itemNumPropName]]=null;if(_14f[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_14f);}if(this._itemsByIdentity){delete this._itemsByIdentity[_148];}}this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};return true;},isDirty:function(item){if(item){var _150=this.getIdentity(item);return new Boolean(this._pending._newItems[_150]||this._pending._modifiedItems[_150]||this._pending._deletedItems[_150]).valueOf();}else{return !this._isEmpty(this._pending._newItems)||!this._isEmpty(this._pending._modifiedItems)||!this._isEmpty(this._pending._deletedItems);}},onSet:function(item,_151,_152,_153){},onNew:function(_154,_155){},onDelete:function(_156){},close:function(_157){if(this.clearOnClose){if(!this.isDirty()){this.inherited(arguments);}else{throw new Error("dojo.data.ItemFileWriteStore: There are unsaved changes present in the store. Please save or revert the changes before invoking close.");}}}});});},"dojo/data/ItemFileReadStore":function(){define(["../_base/kernel","../_base/lang","../_base/declare","../_base/array","../_base/xhr","../Evented","./util/filter","./util/simpleFetch","../date/stamp"],function(_158,lang,_159,_15a,xhr,_15b,_15c,_15d,_15e){var _15f=_159("dojo.data.ItemFileReadStore",[_15b],{constructor:function(_160){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_160.url;this._ccUrl=_160.url;this.url=_160.url;this._jsonData=_160.data;this.data=null;this._datatypeMap=_160.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_161){return _15e.fromISOString(_161);}};}this._features={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};this._itemsByIdentity=null;this._storeRefPropName="_S";this._itemNumPropName="_0";this._rootItemPropName="_RI";this._reverseRefMap="_RRM";this._loadInProgress=false;this._queuedFetches=[];if(_160.urlPreventCache!==undefined){this.urlPreventCache=_160.urlPreventCache?true:false;}if(_160.hierarchical!==undefined){this.hierarchical=_160.hierarchical?true:false;}if(_160.clearOnClose){this.clearOnClose=true;}if("failOk" in _160){this.failOk=_160.failOk?true:false;}},url:"",_ccUrl:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,failOk:false,hierarchical:true,_assertIsItem:function(item){if(!this.isItem(item)){throw new Error(this.declaredClass+": Invalid item argument.");}},_assertIsAttribute:function(_162){if(typeof _162!=="string"){throw new Error(this.declaredClass+": Invalid attribute argument.");}},getValue:function(item,_163,_164){var _165=this.getValues(item,_163);return (_165.length>0)?_165[0]:_164;},getValues:function(item,_166){this._assertIsItem(item);this._assertIsAttribute(_166);return (item[_166]||[]).slice(0);},getAttributes:function(item){this._assertIsItem(item);var _167=[];for(var key in item){if((key!==this._storeRefPropName)&&(key!==this._itemNumPropName)&&(key!==this._rootItemPropName)&&(key!==this._reverseRefMap)){_167.push(key);}}return _167;},hasAttribute:function(item,_168){this._assertIsItem(item);this._assertIsAttribute(_168);return (_168 in item);},containsValue:function(item,_169,_16a){var _16b=undefined;if(typeof _16a==="string"){_16b=_15c.patternToRegExp(_16a,false);}return this._containsValue(item,_169,_16a,_16b);},_containsValue:function(item,_16c,_16d,_16e){return _15a.some(this.getValues(item,_16c),function(_16f){if(_16f!==null&&!lang.isObject(_16f)&&_16e){if(_16f.toString().match(_16e)){return true;}}else{if(_16d===_16f){return true;}}});},isItem:function(_170){if(_170&&_170[this._storeRefPropName]===this){if(this._arrayOfAllItems[_170[this._itemNumPropName]]===_170){return true;}}return false;},isItemLoaded:function(_171){return this.isItem(_171);},loadItem:function(_172){this._assertIsItem(_172.item);},getFeatures:function(){return this._features;},getLabel:function(item){if(this._labelAttr&&this.isItem(item)){return this.getValue(item,this._labelAttr);}return undefined;},getLabelAttributes:function(item){if(this._labelAttr){return [this._labelAttr];}return null;},filter:function(_173,_174,_175){var _176=[],i,key;if(_173.query){var _177,_178=_173.queryOptions?_173.queryOptions.ignoreCase:false;var _179={};for(key in _173.query){_177=_173.query[key];if(typeof _177==="string"){_179[key]=_15c.patternToRegExp(_177,_178);}else{if(_177 instanceof RegExp){_179[key]=_177;}}}for(i=0;i<_174.length;++i){var _17a=true;var _17b=_174[i];if(_17b===null){_17a=false;}else{for(key in _173.query){_177=_173.query[key];if(!this._containsValue(_17b,key,_177,_179[key])){_17a=false;}}}if(_17a){_176.push(_17b);}}_175(_176,_173);}else{for(i=0;i<_174.length;++i){var item=_174[i];if(item!==null){_176.push(item);}}_175(_176,_173);}},_fetchItems:function(_17c,_17d,_17e){var self=this;if(this._loadFinished){this.filter(_17c,this._getItemsArray(_17c.queryOptions),_17d);}else{if(this._jsonFileUrl!==this._ccUrl){_158.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_17c,filter:lang.hitch(self,"filter"),findCallback:lang.hitch(self,_17d)});}else{this._loadInProgress=true;var _17f={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _180=xhr.get(_17f);_180.addCallback(function(data){try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;self.filter(_17c,self._getItemsArray(_17c.queryOptions),_17d);self._handleQueuedFetches();}catch(e){self._loadFinished=true;self._loadInProgress=false;_17e(e,_17c);}});_180.addErrback(function(_181){self._loadInProgress=false;_17e(_181,_17c);});var _182=null;if(_17c.abort){_182=_17c.abort;}_17c.abort=function(){var df=_180;if(df&&df.fired===-1){df.cancel();df=null;}if(_182){_182.call(_17c);}};}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;self.filter(_17c,this._getItemsArray(_17c.queryOptions),_17d);}catch(e){_17e(e,_17c);}}else{_17e(new Error(this.declaredClass+": No JSON source data was provided as either URL or a nested Javascript object."),_17c);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i<this._queuedFetches.length;i++){var _183=this._queuedFetches[i],_184=_183.args,_185=_183.filter,_186=_183.findCallback;if(_185){_185(_184,this._getItemsArray(_184.queryOptions),_186);}else{this.fetchItemByIdentity(_184);}}this._queuedFetches=[];}},_getItemsArray:function(_187){if(_187&&_187.deep){return this._arrayOfAllItems;}return this._arrayOfTopLevelItems;},close:function(_188){if(this.clearOnClose&&this._loadFinished&&!this._loadInProgress){if(((this._jsonFileUrl==""||this._jsonFileUrl==null)&&(this.url==""||this.url==null))&&this.data==null){}this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._itemsByIdentity=null;this._loadInProgress=false;this._queuedFetches=[];}},_getItemsFromLoadedData:function(_189){var _18a=false,self=this;function _18b(_18c){return (_18c!==null)&&(typeof _18c==="object")&&(!lang.isArray(_18c)||_18a)&&(!lang.isFunction(_18c))&&(_18c.constructor==Object||lang.isArray(_18c))&&(typeof _18c._reference==="undefined")&&(typeof _18c._type==="undefined")&&(typeof _18c._value==="undefined")&&self.hierarchical;};function _18d(_18e){self._arrayOfAllItems.push(_18e);for(var _18f in _18e){var _190=_18e[_18f];if(_190){if(lang.isArray(_190)){var _191=_190;for(var k=0;k<_191.length;++k){var _192=_191[k];if(_18b(_192)){_18d(_192);}}}else{if(_18b(_190)){_18d(_190);}}}}};this._labelAttr=_189.label;var i,item;this._arrayOfAllItems=[];this._arrayOfTopLevelItems=_189.items;for(i=0;i<this._arrayOfTopLevelItems.length;++i){item=this._arrayOfTopLevelItems[i];if(lang.isArray(item)){_18a=true;}_18d(item);item[this._rootItemPropName]=true;}var _193={},key;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){if(key!==this._rootItemPropName){var _194=item[key];if(_194!==null){if(!lang.isArray(_194)){item[key]=[_194];}}else{item[key]=[null];}}_193[key]=key;}}while(_193[this._storeRefPropName]){this._storeRefPropName+="_";}while(_193[this._itemNumPropName]){this._itemNumPropName+="_";}while(_193[this._reverseRefMap]){this._reverseRefMap+="_";}var _195;var _196=_189.identifier;if(_196){this._itemsByIdentity={};this._features["dojo.data.api.Identity"]=_196;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];_195=item[_196];var _197=_195[0];if(!Object.hasOwnProperty.call(this._itemsByIdentity,_197)){this._itemsByIdentity[_197]=item;}else{if(this._jsonFileUrl){throw new Error(this.declaredClass+": The json data as specified by: ["+this._jsonFileUrl+"] is malformed. Items within the list have identifier: ["+_196+"]. Value collided: ["+_197+"]");}else{if(this._jsonData){throw new Error(this.declaredClass+": The json data provided by the creation arguments is malformed. Items within the list have identifier: ["+_196+"]. Value collided: ["+_197+"]");}}}}}else{this._features["dojo.data.api.Identity"]=Number;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];item[this._storeRefPropName]=this;item[this._itemNumPropName]=i;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){_195=item[key];for(var j=0;j<_195.length;++j){_194=_195[j];if(_194!==null&&typeof _194=="object"){if(("_type" in _194)&&("_value" in _194)){var type=_194._type;var _198=this._datatypeMap[type];if(!_198){throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '"+type+"'");}else{if(lang.isFunction(_198)){_195[j]=new _198(_194._value);}else{if(lang.isFunction(_198.deserialize)){_195[j]=_198.deserialize(_194._value);}else{throw new Error("dojo.data.ItemFileReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function");}}}}if(_194._reference){var _199=_194._reference;if(!lang.isObject(_199)){_195[j]=this._getItemByIdentity(_199);}else{for(var k=0;k<this._arrayOfAllItems.length;++k){var _19a=this._arrayOfAllItems[k],_19b=true;for(var _19c in _199){if(_19a[_19c]!=_199[_19c]){_19b=false;}}if(_19b){_195[j]=_19a;}}}if(this.referenceIntegrity){var _19d=_195[j];if(this.isItem(_19d)){this._addReferenceToMap(_19d,item,key);}}}else{if(this.isItem(_194)){if(this.referenceIntegrity){this._addReferenceToMap(_194,item,key);}}}}}}}},_addReferenceToMap:function(_19e,_19f,_1a0){},getIdentity:function(item){var _1a1=this._features["dojo.data.api.Identity"];if(_1a1===Number){return item[this._itemNumPropName];}else{var _1a2=item[_1a1];if(_1a2){return _1a2[0];}}return null;},fetchItemByIdentity:function(_1a3){var item,_1a4;if(!this._loadFinished){var self=this;if(this._jsonFileUrl!==this._ccUrl){_158.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null&&this._jsonData==null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_1a3});}else{this._loadInProgress=true;var _1a5={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _1a6=xhr.get(_1a5);_1a6.addCallback(function(data){var _1a7=_1a3.scope?_1a3.scope:_158.global;try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;item=self._getItemByIdentity(_1a3.identity);if(_1a3.onItem){_1a3.onItem.call(_1a7,item);}self._handleQueuedFetches();}catch(error){self._loadInProgress=false;if(_1a3.onError){_1a3.onError.call(_1a7,error);}}});_1a6.addErrback(function(_1a8){self._loadInProgress=false;if(_1a3.onError){var _1a9=_1a3.scope?_1a3.scope:_158.global;_1a3.onError.call(_1a9,_1a8);}});}}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;item=self._getItemByIdentity(_1a3.identity);if(_1a3.onItem){_1a4=_1a3.scope?_1a3.scope:_158.global;_1a3.onItem.call(_1a4,item);}}}}else{item=this._getItemByIdentity(_1a3.identity);if(_1a3.onItem){_1a4=_1a3.scope?_1a3.scope:_158.global;_1a3.onItem.call(_1a4,item);}}},_getItemByIdentity:function(_1aa){var item=null;if(this._itemsByIdentity){if(Object.hasOwnProperty.call(this._itemsByIdentity,_1aa)){item=this._itemsByIdentity[_1aa];}}else{if(Object.hasOwnProperty.call(this._arrayOfAllItems,_1aa)){item=this._arrayOfAllItems[_1aa];}}if(item===undefined){item=null;}return item;},getIdentityAttributes:function(item){var _1ab=this._features["dojo.data.api.Identity"];if(_1ab===Number){return null;}else{return [_1ab];}},_forceLoad:function(){var self=this;if(this._jsonFileUrl!==this._ccUrl){_158.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){var _1ac={url:this._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk,sync:true};var _1ad=xhr.get(_1ac);_1ad.addCallback(function(data){try{if(self._loadInProgress!==true&&!self._loadFinished){self._getItemsFromLoadedData(data);self._loadFinished=true;}else{if(self._loadInProgress){throw new Error(this.declaredClass+": Unable to perform a synchronous load, an async load is in progress.");}}}catch(e){throw e;}});_1ad.addErrback(function(_1ae){throw _1ae;});}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;}}}});lang.extend(_15f,_15d);return _15f;});},"dojo/data/util/filter":function(){define(["../../_base/lang"],function(lang){var _1af={};lang.setObject("dojo.data.util.filter",_1af);_1af.patternToRegExp=function(_1b0,_1b1){var rxp="^";var c=null;for(var i=0;i<_1b0.length;i++){c=_1b0.charAt(i);switch(c){case "\\":rxp+=c;i++;rxp+=_1b0.charAt(i);break;case "*":rxp+=".*";break;case "?":rxp+=".";break;case "$":case "^":case "/":case "+":case ".":case "|":case "(":case ")":case "{":case "}":case "[":case "]":rxp+="\\";default:rxp+=c;}}rxp+="$";if(_1b1){return new RegExp(rxp,"mi");}else{return new RegExp(rxp,"m");}};return _1af;});},"dojo/data/util/simpleFetch":function(){define(["../../_base/lang","../../_base/kernel","./sorter"],function(lang,_1b2,_1b3){var _1b4={};lang.setObject("dojo.data.util.simpleFetch",_1b4);_1b4.errorHandler=function(_1b5,_1b6){if(_1b6.onError){var _1b7=_1b6.scope||_1b2.global;_1b6.onError.call(_1b7,_1b5,_1b6);}};_1b4.fetchHandler=function(_1b8,_1b9){var _1ba=_1b9.abort||null,_1bb=false,_1bc=_1b9.start?_1b9.start:0,_1bd=(_1b9.count&&(_1b9.count!==Infinity))?(_1bc+_1b9.count):_1b8.length;_1b9.abort=function(){_1bb=true;if(_1ba){_1ba.call(_1b9);}};var _1be=_1b9.scope||_1b2.global;if(!_1b9.store){_1b9.store=this;}if(_1b9.onBegin){_1b9.onBegin.call(_1be,_1b8.length,_1b9);}if(_1b9.sort){_1b8.sort(_1b3.createSortFunction(_1b9.sort,this));}if(_1b9.onItem){for(var i=_1bc;(i<_1b8.length)&&(i<_1bd);++i){var item=_1b8[i];if(!_1bb){_1b9.onItem.call(_1be,item,_1b9);}}}if(_1b9.onComplete&&!_1bb){var _1bf=null;if(!_1b9.onItem){_1bf=_1b8.slice(_1bc,_1bd);}_1b9.onComplete.call(_1be,_1bf,_1b9);}};_1b4.fetch=function(_1c0){_1c0=_1c0||{};if(!_1c0.store){_1c0.store=this;}this._fetchItems(_1c0,lang.hitch(this,"fetchHandler"),lang.hitch(this,"errorHandler"));return _1c0;};return _1b4;});},"dojo/data/util/sorter":function(){define(["../../_base/lang"],function(lang){var _1c1={};lang.setObject("dojo.data.util.sorter",_1c1);_1c1.basicComparator=function(a,b){var r=-1;if(a===null){a=undefined;}if(b===null){b=undefined;}if(a==b){r=0;}else{if(a>b||a==null){r=1;}}return r;};_1c1.createSortFunction=function(_1c2,_1c3){var _1c4=[];function _1c5(attr,dir,comp,s){return function(_1c6,_1c7){var a=s.getValue(_1c6,attr);var b=s.getValue(_1c7,attr);return dir*comp(a,b);};};var _1c8;var map=_1c3.comparatorMap;var bc=_1c1.basicComparator;for(var i=0;i<_1c2.length;i++){_1c8=_1c2[i];var attr=_1c8.attribute;if(attr){var dir=(_1c8.descending)?-1:1;var comp=bc;if(map){if(typeof attr!=="string"&&("toString" in attr)){attr=attr.toString();}comp=map[attr]||bc;}_1c4.push(_1c5(attr,dir,comp,_1c3));}}return function(rowA,rowB){var i=0;while(i<_1c4.length){var ret=_1c4[i++](rowA,rowB);if(ret!==0){return ret;}}return 0;};};return _1c1;});},"dojo/selector/acme":function(){define(["../dom","../sniff","../_base/array","../_base/lang","../_base/window"],function(dom,has,_1c9,lang,win){var trim=lang.trim;var each=_1c9.forEach;var _1ca=function(){return win.doc;};var _1cb=(_1ca().compatMode)=="BackCompat";var _1cc=">~+";var _1cd=false;var _1ce=function(){return true;};var _1cf=function(_1d0){if(_1cc.indexOf(_1d0.slice(-1))>=0){_1d0+=" * ";}else{_1d0+=" ";}var ts=function(s,e){return trim(_1d0.slice(s,e));};var _1d1=[];var _1d2=-1,_1d3=-1,_1d4=-1,_1d5=-1,_1d6=-1,inId=-1,_1d7=-1,_1d8,lc="",cc="",_1d9;var x=0,ql=_1d0.length,_1da=null,_1db=null;var _1dc=function(){if(_1d7>=0){var tv=(_1d7==x)?null:ts(_1d7,x);_1da[(_1cc.indexOf(tv)<0)?"tag":"oper"]=tv;_1d7=-1;}};var _1dd=function(){if(inId>=0){_1da.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _1de=function(){if(_1d6>=0){_1da.classes.push(ts(_1d6+1,x).replace(/\\/g,""));_1d6=-1;}};var _1df=function(){_1dd();_1dc();_1de();};var _1e0=function(){_1df();if(_1d5>=0){_1da.pseudos.push({name:ts(_1d5+1,x)});}_1da.loops=(_1da.pseudos.length||_1da.attrs.length||_1da.classes.length);_1da.oquery=_1da.query=ts(_1d9,x);_1da.otag=_1da.tag=(_1da["oper"])?null:(_1da.tag||"*");if(_1da.tag){_1da.tag=_1da.tag.toUpperCase();}if(_1d1.length&&(_1d1[_1d1.length-1].oper)){_1da.infixOper=_1d1.pop();_1da.query=_1da.infixOper.query+" "+_1da.query;}_1d1.push(_1da);_1da=null;};for(;lc=cc,cc=_1d0.charAt(x),x<ql;x++){if(lc=="\\"){continue;}if(!_1da){_1d9=x;_1da={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return _1cd?this.otag:this.tag;}};_1d7=x;}if(_1d8){if(cc==_1d8){_1d8=null;}continue;}else{if(cc=="'"||cc=="\""){_1d8=cc;continue;}}if(_1d2>=0){if(cc=="]"){if(!_1db.attr){_1db.attr=ts(_1d2+1,x);}else{_1db.matchFor=ts((_1d4||_1d2+1),x);}var cmf=_1db.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_1db.matchFor=cmf.slice(1,-1);}}if(_1db.matchFor){_1db.matchFor=_1db.matchFor.replace(/\\/g,"");}_1da.attrs.push(_1db);_1db=null;_1d2=_1d4=-1;}else{if(cc=="="){var _1e1=("|~^$*".indexOf(lc)>=0)?lc:"";_1db.type=_1e1+cc;_1db.attr=ts(_1d2+1,x-_1e1.length);_1d4=x+1;}}}else{if(_1d3>=0){if(cc==")"){if(_1d5>=0){_1db.value=ts(_1d3+1,x);}_1d5=_1d3=-1;}}else{if(cc=="#"){_1df();inId=x+1;}else{if(cc=="."){_1df();_1d6=x;}else{if(cc==":"){_1df();_1d5=x;}else{if(cc=="["){_1df();_1d2=x;_1db={};}else{if(cc=="("){if(_1d5>=0){_1db={name:ts(_1d5+1,x),value:null};_1da.pseudos.push(_1db);}_1d3=x;}else{if((cc==" ")&&(lc!=cc)){_1e0();}}}}}}}}}return _1d1;};var _1e2=function(_1e3,_1e4){if(!_1e3){return _1e4;}if(!_1e4){return _1e3;}return function(){return _1e3.apply(window,arguments)&&_1e4.apply(window,arguments);};};var _1e5=function(i,arr){var r=arr||[];if(i){r.push(i);}return r;};var _1e6=function(n){return (1==n.nodeType);};var _1e7="";var _1e8=function(elem,attr){if(!elem){return _1e7;}if(attr=="class"){return elem.className||_1e7;}if(attr=="for"){return elem.htmlFor||_1e7;}if(attr=="style"){return elem.style.cssText||_1e7;}return (_1cd?elem.getAttribute(attr):elem.getAttribute(attr,2))||_1e7;};var _1e9={"*=":function(attr,_1ea){return function(elem){return (_1e8(elem,attr).indexOf(_1ea)>=0);};},"^=":function(attr,_1eb){return function(elem){return (_1e8(elem,attr).indexOf(_1eb)==0);};},"$=":function(attr,_1ec){return function(elem){var ea=" "+_1e8(elem,attr);var _1ed=ea.lastIndexOf(_1ec);return _1ed>-1&&(_1ed==(ea.length-_1ec.length));};},"~=":function(attr,_1ee){var tval=" "+_1ee+" ";return function(elem){var ea=" "+_1e8(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_1ef){var _1f0=_1ef+"-";return function(elem){var ea=_1e8(elem,attr);return ((ea==_1ef)||(ea.indexOf(_1f0)==0));};},"=":function(attr,_1f1){return function(elem){return (_1e8(elem,attr)==_1f1);};}};var _1f2=_1ca().documentElement;var _1f3=!(_1f2.nextElementSibling||"nextElementSibling" in _1f2);var _1f4=!_1f3?"nextElementSibling":"nextSibling";var _1f5=!_1f3?"previousElementSibling":"previousSibling";var _1f6=(_1f3?_1e6:_1ce);var _1f7=function(node){while(node=node[_1f5]){if(_1f6(node)){return false;}}return true;};var _1f8=function(node){while(node=node[_1f4]){if(_1f6(node)){return false;}}return true;};var _1f9=function(node){var root=node.parentNode;root=root.nodeType!=7?root:root.nextSibling;var i=0,tret=root.children||root.childNodes,ci=(node["_i"]||node.getAttribute("_i")||-1),cl=(root["_l"]||(typeof root.getAttribute!=="undefined"?root.getAttribute("_l"):-1));if(!tret){return -1;}var l=tret.length;if(cl==l&&ci>=0&&cl>=0){return ci;}if(has("ie")&&typeof root.setAttribute!=="undefined"){root.setAttribute("_l",l);}else{root["_l"]=l;}ci=-1;for(var te=root["firstElementChild"]||root["firstChild"];te;te=te[_1f4]){if(_1f6(te)){if(has("ie")){te.setAttribute("_i",++i);}else{te["_i"]=++i;}if(node===te){ci=i;}}}return ci;};var _1fa=function(elem){return !((_1f9(elem))%2);};var _1fb=function(elem){return ((_1f9(elem))%2);};var _1fc={"checked":function(name,_1fd){return function(elem){return !!("checked" in elem?elem.checked:elem.selected);};},"disabled":function(name,_1fe){return function(elem){return elem.disabled;};},"enabled":function(name,_1ff){return function(elem){return !elem.disabled;};},"first-child":function(){return _1f7;},"last-child":function(){return _1f8;},"only-child":function(name,_200){return function(node){return _1f7(node)&&_1f8(node);};},"empty":function(name,_201){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt===1)||(nt==3)){return false;}}return true;};},"contains":function(name,_202){var cz=_202.charAt(0);if(cz=="\""||cz=="'"){_202=_202.slice(1,-1);}return function(elem){return (elem.innerHTML.indexOf(_202)>=0);};},"not":function(name,_203){var p=_1cf(_203)[0];var _204={el:1};if(p.tag!="*"){_204.tag=1;}if(!p.classes.length){_204.classes=1;}var ntf=_205(p,_204);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_206){var pi=parseInt;if(_206=="odd"){return _1fb;}else{if(_206=="even"){return _1fa;}}if(_206.indexOf("n")!=-1){var _207=_206.split("n",2);var pred=_207[0]?((_207[0]=="-")?-1:pi(_207[0])):1;var idx=_207[1]?pi(_207[1]):0;var lb=0,ub=-1;if(pred>0){if(idx<0){idx=(idx%pred)&&(pred+(idx%pred));}else{if(idx>0){if(idx>=pred){lb=idx-idx%pred;}idx=idx%pred;}}}else{if(pred<0){pred*=-1;if(idx>0){ub=idx;idx=idx%pred;}}}if(pred>0){return function(elem){var i=_1f9(elem);return (i>=lb)&&(ub<0||i<=ub)&&((i%pred)==idx);};}else{_206=idx;}}var _208=pi(_206);return function(elem){return (_1f9(elem)==_208);};}};var _209=(has("ie")<9||has("ie")==9&&has("quirks"))?function(cond){var clc=cond.toLowerCase();if(clc=="class"){cond="className";}return function(elem){return (_1cd?elem.getAttribute(cond):elem[cond]||elem[clc]);};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _205=function(_20a,_20b){if(!_20a){return _1ce;}_20b=_20b||{};var ff=null;if(!("el" in _20b)){ff=_1e2(ff,_1e6);}if(!("tag" in _20b)){if(_20a.tag!="*"){ff=_1e2(ff,function(elem){return (elem&&((_1cd?elem.tagName:elem.tagName.toUpperCase())==_20a.getTag()));});}}if(!("classes" in _20b)){each(_20a.classes,function(_20c,idx,arr){var re=new RegExp("(?:^|\\s)"+_20c+"(?:\\s|$)");ff=_1e2(ff,function(elem){return re.test(elem.className);});ff.count=idx;});}if(!("pseudos" in _20b)){each(_20a.pseudos,function(_20d){var pn=_20d.name;if(_1fc[pn]){ff=_1e2(ff,_1fc[pn](pn,_20d.value));}});}if(!("attrs" in _20b)){each(_20a.attrs,function(attr){var _20e;var a=attr.attr;if(attr.type&&_1e9[attr.type]){_20e=_1e9[attr.type](a,attr.matchFor);}else{if(a.length){_20e=_209(a);}}if(_20e){ff=_1e2(ff,_20e);}});}if(!("id" in _20b)){if(_20a.id){ff=_1e2(ff,function(elem){return (!!elem&&(elem.id==_20a.id));});}}if(!ff){if(!("default" in _20b)){ff=_1ce;}}return ff;};var _20f=function(_210){return function(node,ret,bag){while(node=node[_1f4]){if(_1f3&&(!_1e6(node))){continue;}if((!bag||_211(node,bag))&&_210(node)){ret.push(node);}break;}return ret;};};var _212=function(_213){return function(root,ret,bag){var te=root[_1f4];while(te){if(_1f6(te)){if(bag&&!_211(te,bag)){break;}if(_213(te)){ret.push(te);}}te=te[_1f4];}return ret;};};var _214=function(_215,_216){var _217=function(_218){var _219=[];try{_219=Array.prototype.slice.call(_218);}catch(e){for(var i=0,len=_218.length;i<len;i++){_219.push(_218[i]);}}return _219;};_215=_215||_1ce;return function(root,ret,bag){var te,x=0,tret=[];tret=_217(root.children||root.childNodes);if(_216){_1c9.forEach(tret,function(node){if(node.nodeType===1){tret=tret.concat(_217(node.getElementsByTagName("*")));}});}while(te=tret[x++]){if(_1f6(te)&&(!bag||_211(te,bag))&&(_215(te,x))){ret.push(te);}}return ret;};};var _21a=function(node,root){var pn=node.parentNode;while(pn){if(pn==root){break;}pn=pn.parentNode;}return !!pn;};var _21b={};var _21c=function(_21d){var _21e=_21b[_21d.query];if(_21e){return _21e;}var io=_21d.infixOper;var oper=(io?io.oper:"");var _21f=_205(_21d,{el:1});var qt=_21d.tag;var _220=("*"==qt);var ecs=_1ca()["getElementsByClassName"];if(!oper){if(_21d.id){_21f=(!_21d.loops&&_220)?_1ce:_205(_21d,{el:1,id:1});_21e=function(root,arr){var te=dom.byId(_21d.id,(root.ownerDocument||root));if(root.ownerDocument&&!_21a(root,root.ownerDocument)){var _221=root.nodeType===11?root.childNodes:[root];_1c9.some(_221,function(_222){var _223=_214(function(node){return node.id===_21d.id;},true)(_222,[]);if(_223.length){te=_223[0];return false;}});}if(!te||!_21f(te)){return;}if(9==root.nodeType){return _1e5(te,arr);}else{if(_21a(te,root)){return _1e5(te,arr);}}};}else{if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_21d.classes.length&&!_1cb){_21f=_205(_21d,{el:1,classes:1,id:1});var _224=_21d.classes.join(" ");_21e=function(root,arr,bag){var ret=_1e5(0,arr),te,x=0;var tret=root.getElementsByClassName(_224);while((te=tret[x++])){if(_21f(te,root)&&_211(te,bag)){ret.push(te);}}return ret;};}else{if(!_220&&!_21d.loops){_21e=function(root,arr,bag){var ret=_1e5(0,arr),te,x=0;var tag=_21d.getTag(),tret=tag?root.getElementsByTagName(tag):[];while((te=tret[x++])){if(_211(te,bag)){ret.push(te);}}return ret;};}else{_21f=_205(_21d,{el:1,tag:1,id:1});_21e=function(root,arr,bag){var ret=_1e5(0,arr),te,x=0;var tag=_21d.getTag(),tret=tag?root.getElementsByTagName(tag):[];while((te=tret[x++])){if(_21f(te,root)&&_211(te,bag)){ret.push(te);}}return ret;};}}}}else{var _225={el:1};if(_220){_225.tag=1;}_21f=_205(_21d,_225);if("+"==oper){_21e=_20f(_21f);}else{if("~"==oper){_21e=_212(_21f);}else{if(">"==oper){_21e=_214(_21f);}}}}return _21b[_21d.query]=_21e;};var _226=function(root,_227){var _228=_1e5(root),qp,x,te,qpl=_227.length,bag,ret;for(var i=0;i<qpl;i++){ret=[];qp=_227[i];x=_228.length-1;if(x>0){bag={};ret.nozip=true;}var gef=_21c(qp);for(var j=0;(te=_228[j]);j++){gef(te,ret,bag);}if(!ret.length){break;}_228=ret;}return ret;};var _229={},_22a={};var _22b=function(_22c){var _22d=_1cf(trim(_22c));if(_22d.length==1){var tef=_21c(_22d[0]);return function(root){var r=tef(root,[]);if(r){r.nozip=true;}return r;};}return function(root){return _226(root,_22d);};};var _22e=has("ie")?"commentStrip":"nozip";var qsa="querySelectorAll";var _22f=!!_1ca()[qsa];var _230=/\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g;var _231=function(_232,pre,ch,post){return ch?(pre?pre+" ":"")+ch+(post?" "+post:""):_232;};var _233=/([^[]*)([^\]]*])?/g;var _234=function(_235,_236,att){return _236.replace(_230,_231)+(att||"");};var _237=function(_238,_239){_238=_238.replace(_233,_234);if(_22f){var _23a=_22a[_238];if(_23a&&!_239){return _23a;}}var _23b=_229[_238];if(_23b){return _23b;}var qcz=_238.charAt(0);var _23c=(-1==_238.indexOf(" "));if((_238.indexOf("#")>=0)&&(_23c)){_239=true;}var _23d=(_22f&&(!_239)&&(_1cc.indexOf(qcz)==-1)&&(!has("ie")||(_238.indexOf(":")==-1))&&(!(_1cb&&(_238.indexOf(".")>=0)))&&(_238.indexOf(":contains")==-1)&&(_238.indexOf(":checked")==-1)&&(_238.indexOf("|=")==-1));if(_23d){var tq=(_1cc.indexOf(_238.charAt(_238.length-1))>=0)?(_238+" *"):_238;return _22a[_238]=function(root){if(9==root.nodeType||_23c){try{var r=root[qsa](tq);r[_22e]=true;return r;}catch(e){}}return _237(_238,true)(root);};}else{var _23e=_238.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g);return _229[_238]=((_23e.length<2)?_22b(_238):function(root){var _23f=0,ret=[],tp;while((tp=_23e[_23f++])){ret=ret.concat(_22b(tp)(root));}return ret;});}};var _240=0;var _241=has("ie")?function(node){if(_1cd){return (node.getAttribute("_uid")||node.setAttribute("_uid",++_240)||_240);}else{return node.uniqueID;}}:function(node){return (node._uid||(node._uid=++_240));};var _211=function(node,bag){if(!bag){return 1;}var id=_241(node);if(!bag[id]){return bag[id]=1;}return 0;};var _242="_zipIdx";var _243=function(arr){if(arr&&arr.nozip){return arr;}if(!arr||!arr.length){return [];}if(arr.length<2){return [arr[0]];}var ret=[];_240++;var x,te;if(has("ie")&&_1cd){var _244=_240+"";for(x=0;x<arr.length;x++){if((te=arr[x])&&te.getAttribute(_242)!=_244){ret.push(te);te.setAttribute(_242,_244);}}}else{if(has("ie")&&arr.commentStrip){try{for(x=0;x<arr.length;x++){if((te=arr[x])&&_1e6(te)){ret.push(te);}}}catch(e){}}else{for(x=0;x<arr.length;x++){if((te=arr[x])&&te[_242]!=_240){ret.push(te);te[_242]=_240;}}}}return ret;};var _245=function(_246,root){root=root||_1ca();var od=root.ownerDocument||root;_1cd=(od.createElement("div").tagName==="div");var r=_237(_246)(root);if(r&&r.nozip){return r;}return _243(r);};_245.filter=function(_247,_248,root){var _249=[],_24a=_1cf(_248),_24b=(_24a.length==1&&!/[^\w#\.]/.test(_248))?_205(_24a[0]):function(node){return _1c9.indexOf(_245(_248,dom.byId(root)),node)!=-1;};for(var x=0,te;te=_247[x];x++){if(_24b(te)){_249.push(te);}}return _249;};return _245;});},"dojo/selector/lite":function(){define(["../has","../_base/kernel"],function(has,dojo){"use strict";var _24c=document.createElement("div");var _24d=_24c.matches||_24c.webkitMatchesSelector||_24c.mozMatchesSelector||_24c.msMatchesSelector||_24c.oMatchesSelector;var _24e=_24c.querySelectorAll;var _24f=/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g;has.add("dom-matches-selector",!!_24d);has.add("dom-qsa",!!_24e);var _250=function(_251,root){if(_252&&_251.indexOf(",")>-1){return _252(_251,root);}var doc=root?root.ownerDocument||root:dojo.doc||document,_253=(_24e?/^([\w]*)#([\w\-]+$)|^(\.)([\w\-\*]+$)|^(\w+$)/:/^([\w]*)#([\w\-]+)(?:\s+(.*))?$|(?:^|(>|.+\s+))([\w\-\*]+)(\S*$)/).exec(_251);root=root||doc;if(_253){var _254=has("ie")===8&&has("quirks")?root.nodeType===doc.nodeType:root.parentNode!==null&&root.nodeType!==9&&root.parentNode===doc;if(_253[2]&&_254){var _255=dojo.byId?dojo.byId(_253[2],doc):doc.getElementById(_253[2]);if(!_255||(_253[1]&&_253[1]!=_255.tagName.toLowerCase())){return [];}if(root!=doc){var _256=_255;while(_256!=root){_256=_256.parentNode;if(!_256){return [];}}}return _253[3]?_250(_253[3],_255):[_255];}if(_253[3]&&root.getElementsByClassName){return root.getElementsByClassName(_253[4]);}var _255;if(_253[5]){_255=root.getElementsByTagName(_253[5]);if(_253[4]||_253[6]){_251=(_253[4]||"")+_253[6];}else{return _255;}}}if(_24e){if(root.nodeType===1&&root.nodeName.toLowerCase()!=="object"){return _257(root,_251,root.querySelectorAll);}else{return root.querySelectorAll(_251);}}else{if(!_255){_255=root.getElementsByTagName("*");}}var _258=[];for(var i=0,l=_255.length;i<l;i++){var node=_255[i];if(node.nodeType==1&&_259(node,_251,root)){_258.push(node);}}return _258;};var _257=function(_25a,_25b,_25c){var _25d=_25a,old=_25a.getAttribute("id"),nid=old||"__dojo__",_25e=_25a.parentNode,_25f=/^\s*[+~]/.test(_25b);if(_25f&&!_25e){return [];}if(!old){_25a.setAttribute("id",nid);}else{nid=nid.replace(/'/g,"\\$&");}if(_25f&&_25e){_25a=_25a.parentNode;}var _260=_25b.match(_24f);for(var i=0;i<_260.length;i++){_260[i]="[id='"+nid+"'] "+_260[i];}_25b=_260.join(",");try{return _25c.call(_25a,_25b);}finally{if(!old){_25d.removeAttribute("id");}}};if(!has("dom-matches-selector")){var _259=(function(){var _261=_24c.tagName=="div"?"toLowerCase":"toUpperCase";var _262={"":function(_263){_263=_263[_261]();return function(node){return node.tagName==_263;};},".":function(_264){var _265=" "+_264+" ";return function(node){return node.className.indexOf(_264)>-1&&(" "+node.className+" ").indexOf(_265)>-1;};},"#":function(id){return function(node){return node.id==id;};}};var _266={"^=":function(_267,_268){return _267.indexOf(_268)==0;},"*=":function(_269,_26a){return _269.indexOf(_26a)>-1;},"$=":function(_26b,_26c){return _26b.substring(_26b.length-_26c.length,_26b.length)==_26c;},"~=":function(_26d,_26e){return (" "+_26d+" ").indexOf(" "+_26e+" ")>-1;},"|=":function(_26f,_270){return (_26f+"-").indexOf(_270+"-")==0;},"=":function(_271,_272){return _271==_272;},"":function(_273,_274){return true;}};function attr(name,_275,type){var _276=_275.charAt(0);if(_276=="\""||_276=="'"){_275=_275.slice(1,-1);}_275=_275.replace(/\\/g,"");var _277=_266[type||""];return function(node){var _278=node.getAttribute(name);return _278&&_277(_278,_275);};};function _279(_27a){return function(node,root){while((node=node.parentNode)!=root){if(_27a(node,root)){return true;}}};};function _27b(_27c){return function(node,root){node=node.parentNode;return _27c?node!=root&&_27c(node,root):node==root;};};var _27d={};function and(_27e,next){return _27e?function(node,root){return next(node)&&_27e(node,root);}:next;};return function(node,_27f,root){var _280=_27d[_27f];if(!_280){if(_27f.replace(/(?:\s*([> ])\s*)|(#|\.)?((?:\\.|[\w-])+)|\[\s*([\w-]+)\s*(.?=)?\s*("(?:\\.|[^"])+"|'(?:\\.|[^'])+'|(?:\\.|[^\]])*)\s*\]/g,function(t,_281,type,_282,_283,_284,_285){if(_282){_280=and(_280,_262[type||""](_282.replace(/\\/g,"")));}else{if(_281){_280=(_281==" "?_279:_27b)(_280);}else{if(_283){_280=and(_280,attr(_283,_285,_284));}}}return "";})){throw new Error("Syntax error in query");}if(!_280){return true;}_27d[_27f]=_280;}return _280(node,root);};})();}if(!has("dom-qsa")){var _252=function(_286,root){var _287=_286.match(_24f);var _288=[];for(var i=0;i<_287.length;i++){_286=new String(_287[i].replace(/\s*$/,""));_286.indexOf=escape;var _289=_250(_286,root);for(var j=0,l=_289.length;j<l;j++){var node=_289[j];_288[node.sourceIndex]=node;}}var _28a=[];for(i in _288){_28a.push(_288[i]);}return _28a;};}_250.match=_24d?function(node,_28b,root){if(root&&root.nodeType!=9){return _257(root,_28b,function(_28c){return _24d.call(node,_28c);});}return _24d.call(node,_28b);}:_259;return _250;});},"dojo/Stateful":function(){define(["./_base/declare","./_base/lang","./_base/array","./when"],function(_28d,lang,_28e,when){return _28d("dojo.Stateful",null,{_attrPairNames:{},_getAttrNames:function(name){var apn=this._attrPairNames;if(apn[name]){return apn[name];}return (apn[name]={s:"_"+name+"Setter",g:"_"+name+"Getter"});},postscript:function(_28f){if(_28f){this.set(_28f);}},_get:function(name,_290){return typeof this[_290.g]==="function"?this[_290.g]():this[name];},get:function(name){return this._get(name,this._getAttrNames(name));},set:function(name,_291){if(typeof name==="object"){for(var x in name){if(name.hasOwnProperty(x)&&x!="_watchCallbacks"){this.set(x,name[x]);}}return this;}var _292=this._getAttrNames(name),_293=this._get(name,_292),_294=this[_292.s],_295;if(typeof _294==="function"){_295=_294.apply(this,Array.prototype.slice.call(arguments,1));}else{this[name]=_291;}if(this._watchCallbacks){var self=this;when(_295,function(){self._watchCallbacks(name,_293,_291);});}return this;},_changeAttrValue:function(name,_296){var _297=this.get(name);this[name]=_296;if(this._watchCallbacks){this._watchCallbacks(name,_297,_296);}return this;},watch:function(name,_298){var _299=this._watchCallbacks;if(!_299){var self=this;_299=this._watchCallbacks=function(name,_29a,_29b,_29c){var _29d=function(_29e){if(_29e){_29e=_29e.slice();for(var i=0,l=_29e.length;i<l;i++){_29e[i].call(self,name,_29a,_29b);}}};_29d(_299["_"+name]);if(!_29c){_29d(_299["*"]);}};}if(!_298&&typeof name==="function"){_298=name;name="*";}else{name="_"+name;}var _29f=_299[name];if(typeof _29f!=="object"){_29f=_299[name]=[];}_29f.push(_298);var _2a0={};_2a0.unwatch=_2a0.remove=function(){var _2a1=_28e.indexOf(_29f,_298);if(_2a1>-1){_29f.splice(_2a1,1);}};return _2a0;}});});},"dojo/string":function(){define(["./_base/kernel","./_base/lang"],function(_2a2,lang){var _2a3=/[&<>'"\/]/g;var _2a4={"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#x27;","/":"&#x2F;"};var _2a5={};lang.setObject("dojo.string",_2a5);_2a5.escape=function(str){if(!str){return "";}return str.replace(_2a3,function(c){return _2a4[c];});};_2a5.rep=function(str,num){if(num<=0||!str){return "";}var buf=[];for(;;){if(num&1){buf.push(str);}if(!(num>>=1)){break;}str+=str;}return buf.join("");};_2a5.pad=function(text,size,ch,end){if(!ch){ch="0";}var out=String(text),pad=_2a5.rep(ch,Math.ceil((size-out.length)/ch.length));return end?out+pad:pad+out;};_2a5.substitute=function(_2a6,map,_2a7,_2a8){_2a8=_2a8||_2a2.global;_2a7=_2a7?lang.hitch(_2a8,_2a7):function(v){return v;};return _2a6.replace(/\$\{([^\s\:\}]*)(?:\:([^\s\:\}]+))?\}/g,function(_2a9,key,_2aa){if(key==""){return "$";}var _2ab=lang.getObject(key,false,map);if(_2aa){_2ab=lang.getObject(_2aa,false,_2a8).call(_2a8,_2ab,key);}var _2ac=_2a7(_2ab,key);if(typeof _2ac==="undefined"){throw new Error("string.substitute could not find key \""+key+"\" in template");}return _2ac.toString();});};_2a5.trim=String.prototype.trim?lang.trim:function(str){str=str.replace(/^\s+/,"");for(var i=str.length-1;i>=0;i--){if(/\S/.test(str.charAt(i))){str=str.substring(0,i+1);break;}}return str;};return _2a5;});},"dojo/touch":function(){define(["./_base/kernel","./aspect","./dom","./dom-class","./_base/lang","./on","./has","./mouse","./domReady","./_base/window"],function(dojo,_2ad,dom,_2ae,lang,on,has,_2af,_2b0,win){var ios4=has("ios")<5;var _2b1=has("pointer-events")||has("MSPointer"),_2b2=(function(){var _2b3={};for(var type in {down:1,move:1,up:1,cancel:1,over:1,out:1}){_2b3[type]=has("MSPointer")?"MSPointer"+type.charAt(0).toUpperCase()+type.slice(1):"pointer"+type;}return _2b3;})();var _2b4=has("touch-events");var _2b5,_2b6,_2b7=false,_2b8,_2b9,_2ba,_2bb,_2bc,_2bd;var _2be;function _2bf(_2c0,_2c1,_2c2){if(_2b1&&_2c2){return function(node,_2c3){return on(node,_2c2,_2c3);};}else{if(_2b4){return function(node,_2c4){var _2c5=on(node,_2c1,function(evt){_2c4.call(this,evt);_2be=(new Date()).getTime();}),_2c6=on(node,_2c0,function(evt){if(!_2be||(new Date()).getTime()>_2be+1000){_2c4.call(this,evt);}});return {remove:function(){_2c5.remove();_2c6.remove();}};};}else{return function(node,_2c7){return on(node,_2c0,_2c7);};}}};function _2c8(node){do{if(node.dojoClick!==undefined){return node;}}while(node=node.parentNode);};function _2c9(e,_2ca,_2cb){if(_2af.isRight(e)){return;}var _2cc=_2c8(e.target);_2b6=!e.target.disabled&&_2cc&&_2cc.dojoClick;if(_2b6){_2b7=(_2b6=="useTarget");_2b8=(_2b7?_2cc:e.target);if(_2b7){e.preventDefault();}_2b9=e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX;_2ba=e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY;_2bb=(typeof _2b6=="object"?_2b6.x:(typeof _2b6=="number"?_2b6:0))||4;_2bc=(typeof _2b6=="object"?_2b6.y:(typeof _2b6=="number"?_2b6:0))||4;if(!_2b5){_2b5=true;function _2cd(e){if(_2b7){_2b6=dom.isDescendant(win.doc.elementFromPoint((e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX),(e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY)),_2b8);}else{_2b6=_2b6&&(e.changedTouches?e.changedTouches[0].target:e.target)==_2b8&&Math.abs((e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX)-_2b9)<=_2bb&&Math.abs((e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY)-_2ba)<=_2bc;}};win.doc.addEventListener(_2ca,function(e){if(_2af.isRight(e)){return;}_2cd(e);if(_2b7){e.preventDefault();}},true);win.doc.addEventListener(_2cb,function(e){if(_2af.isRight(e)){return;}_2cd(e);if(_2b6){_2bd=(new Date()).getTime();var _2ce=(_2b7?_2b8:e.target);if(_2ce.tagName==="LABEL"){_2ce=dom.byId(_2ce.getAttribute("for"))||_2ce;}var src=(e.changedTouches)?e.changedTouches[0]:e;function _2cf(type){var evt=document.createEvent("MouseEvents");evt._dojo_click=true;evt.initMouseEvent(type,true,true,e.view,e.detail,src.screenX,src.screenY,src.clientX,src.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,0,null);return evt;};var _2d0=_2cf("mousedown");var _2d1=_2cf("mouseup");var _2d2=_2cf("click");setTimeout(function(){on.emit(_2ce,"mousedown",_2d0);on.emit(_2ce,"mouseup",_2d1);on.emit(_2ce,"click",_2d2);_2bd=(new Date()).getTime();},0);}},true);function _2d3(type){win.doc.addEventListener(type,function(e){var _2d4=e.target;if(_2b6&&!e._dojo_click&&(new Date()).getTime()<=_2bd+1000&&!(_2d4.tagName=="INPUT"&&_2ae.contains(_2d4,"dijitOffScreen"))){e.stopPropagation();e.stopImmediatePropagation&&e.stopImmediatePropagation();if(type=="click"&&(_2d4.tagName!="INPUT"||(_2d4.type=="radio"&&(_2ae.contains(_2d4,"dijitCheckBoxInput")||_2ae.contains(_2d4,"mblRadioButton")))||(_2d4.type=="checkbox"&&(_2ae.contains(_2d4,"dijitCheckBoxInput")||_2ae.contains(_2d4,"mblCheckBox"))))&&_2d4.tagName!="TEXTAREA"&&_2d4.tagName!="AUDIO"&&_2d4.tagName!="VIDEO"){e.preventDefault();}}},true);};_2d3("click");_2d3("mousedown");_2d3("mouseup");}}};var _2d5;if(has("touch")){if(_2b1){_2b0(function(){win.doc.addEventListener(_2b2.down,function(evt){_2c9(evt,_2b2.move,_2b2.up);},true);});}else{_2b0(function(){_2d5=win.body();win.doc.addEventListener("touchstart",function(evt){_2be=(new Date()).getTime();var _2d6=_2d5;_2d5=evt.target;on.emit(_2d6,"dojotouchout",{relatedTarget:_2d5,bubbles:true});on.emit(_2d5,"dojotouchover",{relatedTarget:_2d6,bubbles:true});_2c9(evt,"touchmove","touchend");},true);function _2d7(evt){var _2d8=lang.delegate(evt,{bubbles:true});if(has("ios")>=6){_2d8.touches=evt.touches;_2d8.altKey=evt.altKey;_2d8.changedTouches=evt.changedTouches;_2d8.ctrlKey=evt.ctrlKey;_2d8.metaKey=evt.metaKey;_2d8.shiftKey=evt.shiftKey;_2d8.targetTouches=evt.targetTouches;}return _2d8;};on(win.doc,"touchmove",function(evt){_2be=(new Date()).getTime();var _2d9=win.doc.elementFromPoint(evt.pageX-(ios4?0:win.global.pageXOffset),evt.pageY-(ios4?0:win.global.pageYOffset));if(_2d9){if(_2d5!==_2d9){on.emit(_2d5,"dojotouchout",{relatedTarget:_2d9,bubbles:true});on.emit(_2d9,"dojotouchover",{relatedTarget:_2d5,bubbles:true});_2d5=_2d9;}if(!on.emit(_2d9,"dojotouchmove",_2d7(evt))){evt.preventDefault();}}});on(win.doc,"touchend",function(evt){_2be=(new Date()).getTime();var node=win.doc.elementFromPoint(evt.pageX-(ios4?0:win.global.pageXOffset),evt.pageY-(ios4?0:win.global.pageYOffset))||win.body();on.emit(node,"dojotouchend",_2d7(evt));});});}}var _2da={press:_2bf("mousedown","touchstart",_2b2.down),move:_2bf("mousemove","dojotouchmove",_2b2.move),release:_2bf("mouseup","dojotouchend",_2b2.up),cancel:_2bf(_2af.leave,"touchcancel",_2b1?_2b2.cancel:null),over:_2bf("mouseover","dojotouchover",_2b2.over),out:_2bf("mouseout","dojotouchout",_2b2.out),enter:_2af._eventHandler(_2bf("mouseover","dojotouchover",_2b2.over)),leave:_2af._eventHandler(_2bf("mouseout","dojotouchout",_2b2.out))};1&&(dojo.touch=_2da);return _2da;});},"dojo/uacss":function(){define(["./dom-geometry","./_base/lang","./domReady","./sniff","./_base/window"],function(_2db,lang,_2dc,has,_2dd){var html=_2dd.doc.documentElement,ie=has("ie"),_2de=has("trident"),_2df=has("opera"),maj=Math.floor,ff=has("ff"),_2e0=_2db.boxModel.replace(/-/,""),_2e1={"dj_quirks":has("quirks"),"dj_opera":_2df,"dj_khtml":has("khtml"),"dj_webkit":has("webkit"),"dj_safari":has("safari"),"dj_chrome":has("chrome"),"dj_edge":has("edge"),"dj_gecko":has("mozilla"),"dj_ios":has("ios"),"dj_android":has("android")};if(ie){_2e1["dj_ie"]=true;_2e1["dj_ie"+maj(ie)]=true;_2e1["dj_iequirks"]=has("quirks");}if(_2de){_2e1["dj_trident"]=true;_2e1["dj_trident"+maj(_2de)]=true;}if(ff){_2e1["dj_ff"+maj(ff)]=true;}_2e1["dj_"+_2e0]=true;var _2e2="";for(var clz in _2e1){if(_2e1[clz]){_2e2+=clz+" ";}}html.className=lang.trim(html.className+" "+_2e2);_2dc(function(){if(!_2db.isBodyLtr()){var _2e3="dj_rtl dijitRtl "+_2e2.replace(/ /g,"-rtl ");html.className=lang.trim(html.className+" "+_2e3+"dj_rtl dijitRtl "+_2e2.replace(/ /g,"-rtl "));}});return has;});},"dojo/window":function(){define(["./_base/lang","./sniff","./_base/window","./dom","./dom-geometry","./dom-style","./dom-construct"],function(lang,has,_2e4,dom,geom,_2e5,_2e6){has.add("rtl-adjust-position-for-verticalScrollBar",function(win,doc){var body=_2e4.body(doc),_2e7=_2e6.create("div",{style:{overflow:"scroll",overflowX:"visible",direction:"rtl",visibility:"hidden",position:"absolute",left:"0",top:"0",width:"64px",height:"64px"}},body,"last"),div=_2e6.create("div",{style:{overflow:"hidden",direction:"ltr"}},_2e7,"last"),ret=geom.position(div).x!=0;_2e7.removeChild(div);body.removeChild(_2e7);return ret;});has.add("position-fixed-support",function(win,doc){var body=_2e4.body(doc),_2e8=_2e6.create("span",{style:{visibility:"hidden",position:"fixed",left:"1px",top:"1px"}},body,"last"),_2e9=_2e6.create("span",{style:{position:"fixed",left:"0",top:"0"}},_2e8,"last"),ret=geom.position(_2e9).x!=geom.position(_2e8).x;_2e8.removeChild(_2e9);body.removeChild(_2e8);return ret;});var _2ea={getBox:function(doc){doc=doc||_2e4.doc;var _2eb=(doc.compatMode=="BackCompat")?_2e4.body(doc):doc.documentElement,_2ec=geom.docScroll(doc),w,h;if(has("touch")){var _2ed=_2ea.get(doc);w=_2ed.innerWidth||_2eb.clientWidth;h=_2ed.innerHeight||_2eb.clientHeight;}else{w=_2eb.clientWidth;h=_2eb.clientHeight;}return {l:_2ec.x,t:_2ec.y,w:w,h:h};},get:function(doc){if(has("ie")&&_2ea!==document.parentWindow){doc.parentWindow.execScript("document._parentWindow = window;","Javascript");var win=doc._parentWindow;doc._parentWindow=null;return win;}return doc.parentWindow||doc.defaultView;},scrollIntoView:function(node,pos){try{node=dom.byId(node);var doc=node.ownerDocument||_2e4.doc,body=_2e4.body(doc),html=doc.documentElement||body.parentNode,isIE=has("ie")||has("trident"),isWK=has("webkit");if(node==body||node==html){return;}if(!(has("mozilla")||isIE||isWK||has("opera")||has("trident")||has("edge"))&&("scrollIntoView" in node)){node.scrollIntoView(false);return;}var _2ee=doc.compatMode=="BackCompat",_2ef=Math.min(body.clientWidth||html.clientWidth,html.clientWidth||body.clientWidth),_2f0=Math.min(body.clientHeight||html.clientHeight,html.clientHeight||body.clientHeight),_2f1=(isWK||_2ee)?body:html,_2f2=pos||geom.position(node),el=node.parentNode,_2f3=function(el){return (isIE<=6||(isIE==7&&_2ee))?false:(has("position-fixed-support")&&(_2e5.get(el,"position").toLowerCase()=="fixed"));},self=this,_2f4=function(el,x,y){if(el.tagName=="BODY"||el.tagName=="HTML"){self.get(el.ownerDocument).scrollBy(x,y);}else{x&&(el.scrollLeft+=x);y&&(el.scrollTop+=y);}};if(_2f3(node)){return;}while(el){if(el==body){el=_2f1;}var _2f5=geom.position(el),_2f6=_2f3(el),rtl=_2e5.getComputedStyle(el).direction.toLowerCase()=="rtl";if(el==_2f1){_2f5.w=_2ef;_2f5.h=_2f0;if(_2f1==html&&(isIE||has("trident"))&&rtl){_2f5.x+=_2f1.offsetWidth-_2f5.w;}_2f5.x=0;_2f5.y=0;}else{var pb=geom.getPadBorderExtents(el);_2f5.w-=pb.w;_2f5.h-=pb.h;_2f5.x+=pb.l;_2f5.y+=pb.t;var _2f7=el.clientWidth,_2f8=_2f5.w-_2f7;if(_2f7>0&&_2f8>0){if(rtl&&has("rtl-adjust-position-for-verticalScrollBar")){_2f5.x+=_2f8;}_2f5.w=_2f7;}_2f7=el.clientHeight;_2f8=_2f5.h-_2f7;if(_2f7>0&&_2f8>0){_2f5.h=_2f7;}}if(_2f6){if(_2f5.y<0){_2f5.h+=_2f5.y;_2f5.y=0;}if(_2f5.x<0){_2f5.w+=_2f5.x;_2f5.x=0;}if(_2f5.y+_2f5.h>_2f0){_2f5.h=_2f0-_2f5.y;}if(_2f5.x+_2f5.w>_2ef){_2f5.w=_2ef-_2f5.x;}}var l=_2f2.x-_2f5.x,t=_2f2.y-_2f5.y,r=l+_2f2.w-_2f5.w,bot=t+_2f2.h-_2f5.h;var s,old;if(r*l>0&&(!!el.scrollLeft||el==_2f1||el.scrollWidth>el.offsetHeight)){s=Math[l<0?"max":"min"](l,r);if(rtl&&((isIE==8&&!_2ee)||has("trident")>=5)){s=-s;}old=el.scrollLeft;_2f4(el,s,0);s=el.scrollLeft-old;_2f2.x-=s;}if(bot*t>0&&(!!el.scrollTop||el==_2f1||el.scrollHeight>el.offsetHeight)){s=Math.ceil(Math[t<0?"max":"min"](t,bot));old=el.scrollTop;_2f4(el,0,s);s=el.scrollTop-old;_2f2.y-=s;}el=(el!=_2f1)&&!_2f6&&el.parentNode;}}catch(error){console.error("scrollIntoView: "+error);node.scrollIntoView(false);}}};1&&lang.setObject("dojo.window",_2ea);return _2ea;});},"dojo/NodeList-fx":function(){define(["./query","./_base/lang","./aspect","./_base/fx","./fx"],function(_2f9,lang,_2fa,_2fb,_2fc){var _2fd=_2f9.NodeList;lang.extend(_2fd,{_anim:function(obj,_2fe,args){args=args||{};var a=_2fc.combine(this.map(function(item){var _2ff={node:item};lang.mixin(_2ff,args);return obj[_2fe](_2ff);}));return args.auto?a.play()&&this:a;},wipeIn:function(args){return this._anim(_2fc,"wipeIn",args);},wipeOut:function(args){return this._anim(_2fc,"wipeOut",args);},slideTo:function(args){return this._anim(_2fc,"slideTo",args);},fadeIn:function(args){return this._anim(_2fb,"fadeIn",args);},fadeOut:function(args){return this._anim(_2fb,"fadeOut",args);},animateProperty:function(args){return this._anim(_2fb,"animateProperty",args);},anim:function(_300,_301,_302,_303,_304){var _305=_2fc.combine(this.map(function(item){return _2fb.animateProperty({node:item,properties:_300,duration:_301||350,easing:_302});}));if(_303){_2fa.after(_305,"onEnd",_303,true);}return _305.play(_304||0);}});return _2fd;});},"dojo/fx":function(){define(["./_base/lang","./Evented","./_base/kernel","./_base/array","./aspect","./_base/fx","./dom","./dom-style","./dom-geometry","./ready","require"],function(lang,_306,dojo,_307,_308,_309,dom,_30a,geom,_30b,_30c){if(!dojo.isAsync){_30b(0,function(){var _30d=["./fx/Toggler"];_30c(_30d);});}var _30e=dojo.fx={};var _30f={_fire:function(evt,args){if(this[evt]){this[evt].apply(this,args||[]);}return this;}};var _310=function(_311){this._index=-1;this._animations=_311||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;_307.forEach(this._animations,function(a){if(a){if(typeof a.duration!="undefined"){this.duration+=a.duration;}if(a.delay){this.duration+=a.delay;}}},this);};_310.prototype=new _306();lang.extend(_310,{_onAnimate:function(){this._fire("onAnimate",arguments);},_onEnd:function(){this._onAnimateCtx.remove();this._onEndCtx.remove();this._onAnimateCtx=this._onEndCtx=null;if(this._index+1==this._animations.length){this._fire("onEnd");}else{this._current=this._animations[++this._index];this._onAnimateCtx=_308.after(this._current,"onAnimate",lang.hitch(this,"_onAnimate"),true);this._onEndCtx=_308.after(this._current,"onEnd",lang.hitch(this,"_onEnd"),true);this._current.play(0,true);}},play:function(_312,_313){if(!this._current){this._current=this._animations[this._index=0];}if(!_313&&this._current.status()=="playing"){return this;}var _314=_308.after(this._current,"beforeBegin",lang.hitch(this,function(){this._fire("beforeBegin");}),true),_315=_308.after(this._current,"onBegin",lang.hitch(this,function(arg){this._fire("onBegin",arguments);}),true),_316=_308.after(this._current,"onPlay",lang.hitch(this,function(arg){this._fire("onPlay",arguments);_314.remove();_315.remove();_316.remove();}));if(this._onAnimateCtx){this._onAnimateCtx.remove();}this._onAnimateCtx=_308.after(this._current,"onAnimate",lang.hitch(this,"_onAnimate"),true);if(this._onEndCtx){this._onEndCtx.remove();}this._onEndCtx=_308.after(this._current,"onEnd",lang.hitch(this,"_onEnd"),true);this._current.play.apply(this._current,arguments);return this;},pause:function(){if(this._current){var e=_308.after(this._current,"onPause",lang.hitch(this,function(arg){this._fire("onPause",arguments);e.remove();}),true);this._current.pause();}return this;},gotoPercent:function(_317,_318){this.pause();var _319=this.duration*_317;this._current=null;_307.some(this._animations,function(a,_31a){if(_319<=a.duration){this._current=a;this._index=_31a;return true;}_319-=a.duration;return false;},this);if(this._current){this._current.gotoPercent(_319/this._current.duration);}if(_318){this.play();}return this;},stop:function(_31b){if(this._current){if(_31b){for(;this._index+1<this._animations.length;++this._index){this._animations[this._index].stop(true);}this._current=this._animations[this._index];}var e=_308.after(this._current,"onStop",lang.hitch(this,function(arg){this._fire("onStop",arguments);e.remove();}),true);this._current.stop();}return this;},status:function(){return this._current?this._current.status():"stopped";},destroy:function(){this.stop();if(this._onAnimateCtx){this._onAnimateCtx.remove();}if(this._onEndCtx){this._onEndCtx.remove();}}});lang.extend(_310,_30f);_30e.chain=function(_31c){return new _310(lang.isArray(_31c)?_31c:Array.prototype.slice.call(_31c,0));};var _31d=function(_31e){this._animations=_31e||[];this._connects=[];this._finished=0;this.duration=0;_307.forEach(_31e,function(a){var _31f=a.duration;if(a.delay){_31f+=a.delay;}if(this.duration<_31f){this.duration=_31f;}this._connects.push(_308.after(a,"onEnd",lang.hitch(this,"_onEnd"),true));},this);this._pseudoAnimation=new _309.Animation({curve:[0,1],duration:this.duration});var self=this;_307.forEach(["beforeBegin","onBegin","onPlay","onAnimate","onPause","onStop","onEnd"],function(evt){self._connects.push(_308.after(self._pseudoAnimation,evt,function(){self._fire(evt,arguments);},true));});};lang.extend(_31d,{_doAction:function(_320,args){_307.forEach(this._animations,function(a){a[_320].apply(a,args);});return this;},_onEnd:function(){if(++this._finished>this._animations.length){this._fire("onEnd");}},_call:function(_321,args){var t=this._pseudoAnimation;t[_321].apply(t,args);},play:function(_322,_323){this._finished=0;this._doAction("play",arguments);this._call("play",arguments);return this;},pause:function(){this._doAction("pause",arguments);this._call("pause",arguments);return this;},gotoPercent:function(_324,_325){var ms=this.duration*_324;_307.forEach(this._animations,function(a){a.gotoPercent(a.duration<ms?1:(ms/a.duration),_325);});this._call("gotoPercent",arguments);return this;},stop:function(_326){this._doAction("stop",arguments);this._call("stop",arguments);return this;},status:function(){return this._pseudoAnimation.status();},destroy:function(){this.stop();_307.forEach(this._connects,function(_327){_327.remove();});}});lang.extend(_31d,_30f);_30e.combine=function(_328){return new _31d(lang.isArray(_328)?_328:Array.prototype.slice.call(_328,0));};_30e.wipeIn=function(args){var node=args.node=dom.byId(args.node),s=node.style,o;var anim=_309.animateProperty(lang.mixin({properties:{height:{start:function(){o=s.overflow;s.overflow="hidden";if(s.visibility=="hidden"||s.display=="none"){s.height="1px";s.display="";s.visibility="";return 1;}else{var _329=_30a.get(node,"height");return Math.max(_329,1);}},end:function(){return node.scrollHeight;}}}},args));var fini=function(){s.height="auto";s.overflow=o;};_308.after(anim,"onStop",fini,true);_308.after(anim,"onEnd",fini,true);return anim;};_30e.wipeOut=function(args){var node=args.node=dom.byId(args.node),s=node.style,o;var anim=_309.animateProperty(lang.mixin({properties:{height:{end:1}}},args));_308.after(anim,"beforeBegin",function(){o=s.overflow;s.overflow="hidden";s.display="";},true);var fini=function(){s.overflow=o;s.height="auto";s.display="none";};_308.after(anim,"onStop",fini,true);_308.after(anim,"onEnd",fini,true);return anim;};_30e.slideTo=function(args){var node=args.node=dom.byId(args.node),top=null,left=null;var init=(function(n){return function(){var cs=_30a.getComputedStyle(n);var pos=cs.position;top=(pos=="absolute"?n.offsetTop:parseInt(cs.top)||0);left=(pos=="absolute"?n.offsetLeft:parseInt(cs.left)||0);if(pos!="absolute"&&pos!="relative"){var ret=geom.position(n,true);top=ret.y;left=ret.x;n.style.position="absolute";n.style.top=top+"px";n.style.left=left+"px";}};})(node);init();var anim=_309.animateProperty(lang.mixin({properties:{top:args.top||0,left:args.left||0}},args));_308.after(anim,"beforeBegin",init,true);return anim;};return _30e;});},"dojo/dnd/Moveable":function(){define(["../_base/array","../_base/declare","../_base/lang","../dom","../dom-class","../Evented","../has","../on","../topic","../touch","./common","./Mover","../_base/window"],function(_32a,_32b,lang,dom,_32c,_32d,has,on,_32e,_32f,dnd,_330,win){var _331;var _332=function(){};function _333(){if("touchAction" in document.body.style){_331="touchAction";}else{if("msTouchAction" in document.body.style){_331="msTouchAction";}}_332=function _332(node,_334){node.style[_331]=_334;};_332(arguments[0],arguments[1]);};if(has("touch-action")){_332=_333;}var _335=_32b("dojo.dnd.Moveable",[_32d],{handle:"",delay:0,skip:false,constructor:function(node,_336){this.node=dom.byId(node);_332(this.node,"none");if(!_336){_336={};}this.handle=_336.handle?dom.byId(_336.handle):null;if(!this.handle){this.handle=this.node;}this.delay=_336.delay>0?_336.delay:0;this.skip=_336.skip;this.mover=_336.mover?_336.mover:_330;this.events=[on(this.handle,_32f.press,lang.hitch(this,"onMouseDown")),on(this.handle,"dragstart",lang.hitch(this,"onSelectStart")),on(this.handle,"selectstart",lang.hitch(this,"onSelectStart"))];},markupFactory:function(_337,node,Ctor){return new Ctor(node,_337);},destroy:function(){_32a.forEach(this.events,function(_338){_338.remove();});_332(this.node,"");this.events=this.node=this.handle=null;},onMouseDown:function(e){if(this.skip&&dnd.isFormElement(e)){return;}if(this.delay){this.events.push(on(this.handle,_32f.move,lang.hitch(this,"onMouseMove")),on(this.handle.ownerDocument,_32f.release,lang.hitch(this,"onMouseUp")));this._lastX=e.pageX;this._lastY=e.pageY;}else{this.onDragDetected(e);}e.stopPropagation();e.preventDefault();},onMouseMove:function(e){if(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.pageY-this._lastY)>this.delay){this.onMouseUp(e);this.onDragDetected(e);}e.stopPropagation();e.preventDefault();},onMouseUp:function(e){for(var i=0;i<2;++i){this.events.pop().remove();}e.stopPropagation();e.preventDefault();},onSelectStart:function(e){if(!this.skip||!dnd.isFormElement(e)){e.stopPropagation();e.preventDefault();}},onDragDetected:function(e){new this.mover(this.node,e,this);},onMoveStart:function(_339){_32e.publish("/dnd/move/start",_339);_32c.add(win.body(),"dojoMove");_32c.add(this.node,"dojoMoveItem");},onMoveStop:function(_33a){_32e.publish("/dnd/move/stop",_33a);_32c.remove(win.body(),"dojoMove");_32c.remove(this.node,"dojoMoveItem");},onFirstMove:function(){},onMove:function(_33b,_33c){this.onMoving(_33b,_33c);var s=_33b.node.style;s.left=_33c.l+"px";s.top=_33c.t+"px";this.onMoved(_33b,_33c);},onMoving:function(){},onMoved:function(){}});return _335;});},"dojo/dnd/common":function(){define(["../sniff","../_base/kernel","../_base/lang","../dom"],function(has,_33d,lang,dom){var _33e=lang.getObject("dojo.dnd",true);_33e.getCopyKeyState=function(evt){return evt[has("mac")?"metaKey":"ctrlKey"];};_33e._uniqueId=0;_33e.getUniqueId=function(){var id;do{id=_33d._scopeName+"Unique"+(++_33e._uniqueId);}while(dom.byId(id));return id;};_33e._empty={};_33e.isFormElement=function(e){var t=e.target;if(t.nodeType==3){t=t.parentNode;}return " a button textarea input select option ".indexOf(" "+t.tagName.toLowerCase()+" ")>=0;};return _33e;});},"dojo/dnd/Mover":function(){define(["../_base/array","../_base/declare","../_base/lang","../sniff","../_base/window","../dom","../dom-geometry","../dom-style","../Evented","../on","../touch","./common","./autoscroll"],function(_33f,_340,lang,has,win,dom,_341,_342,_343,on,_344,dnd,_345){return _340("dojo.dnd.Mover",[_343],{constructor:function(node,e,host){this.node=dom.byId(node);this.marginBox={l:e.pageX,t:e.pageY};this.mouseButton=e.button;var h=(this.host=host),d=node.ownerDocument;function _346(e){e.preventDefault();e.stopPropagation();};this.events=[on(d,_344.move,lang.hitch(this,"onFirstMove")),on(d,_344.move,lang.hitch(this,"onMouseMove")),on(d,_344.release,lang.hitch(this,"onMouseUp")),on(d,"dragstart",_346),on(d.body,"selectstart",_346)];_345.autoScrollStart(d);if(h&&h.onMoveStart){h.onMoveStart(this);}},onMouseMove:function(e){_345.autoScroll(e);var m=this.marginBox;this.host.onMove(this,{l:m.l+e.pageX,t:m.t+e.pageY},e);e.preventDefault();e.stopPropagation();},onMouseUp:function(e){if(has("webkit")&&has("mac")&&this.mouseButton==2?e.button==0:this.mouseButton==e.button){this.destroy();}e.preventDefault();e.stopPropagation();},onFirstMove:function(e){var s=this.node.style,l,t,h=this.host;switch(s.position){case "relative":case "absolute":l=Math.round(parseFloat(s.left))||0;t=Math.round(parseFloat(s.top))||0;break;default:s.position="absolute";var m=_341.getMarginBox(this.node);var b=win.doc.body;var bs=_342.getComputedStyle(b);var bm=_341.getMarginBox(b,bs);var bc=_341.getContentBox(b,bs);l=m.l-(bc.l-bm.l);t=m.t-(bc.t-bm.t);break;}this.marginBox.l=l-this.marginBox.l;this.marginBox.t=t-this.marginBox.t;if(h&&h.onFirstMove){h.onFirstMove(this,e);}this.events.shift().remove();},destroy:function(){_33f.forEach(this.events,function(_347){_347.remove();});var h=this.host;if(h&&h.onMoveStop){h.onMoveStop(this);}this.events=this.node=this.host=null;}});});},"dojo/dnd/autoscroll":function(){define(["../_base/lang","../sniff","../_base/window","../dom-geometry","../dom-style","../window"],function(lang,has,win,_348,_349,_34a){var _34b={};lang.setObject("dojo.dnd.autoscroll",_34b);_34b.getViewport=_34a.getBox;_34b.V_TRIGGER_AUTOSCROLL=32;_34b.H_TRIGGER_AUTOSCROLL=32;_34b.V_AUTOSCROLL_VALUE=16;_34b.H_AUTOSCROLL_VALUE=16;var _34c,doc=win.doc,_34d=Infinity,_34e=Infinity;_34b.autoScrollStart=function(d){doc=d;_34c=_34a.getBox(doc);var html=win.body(doc).parentNode;_34d=Math.max(html.scrollHeight-_34c.h,0);_34e=Math.max(html.scrollWidth-_34c.w,0);};_34b.autoScroll=function(e){var v=_34c||_34a.getBox(doc),html=win.body(doc).parentNode,dx=0,dy=0;if(e.clientX<_34b.H_TRIGGER_AUTOSCROLL){dx=-_34b.H_AUTOSCROLL_VALUE;}else{if(e.clientX>v.w-_34b.H_TRIGGER_AUTOSCROLL){dx=Math.min(_34b.H_AUTOSCROLL_VALUE,_34e-html.scrollLeft);}}if(e.clientY<_34b.V_TRIGGER_AUTOSCROLL){dy=-_34b.V_AUTOSCROLL_VALUE;}else{if(e.clientY>v.h-_34b.V_TRIGGER_AUTOSCROLL){dy=Math.min(_34b.V_AUTOSCROLL_VALUE,_34d-html.scrollTop);}}window.scrollBy(dx,dy);};_34b._validNodes={"div":1,"p":1,"td":1};_34b._validOverflow={"auto":1,"scroll":1};_34b.autoScrollNodes=function(e){var b,t,w,h,rx,ry,dx=0,dy=0,_34f,_350;for(var n=e.target;n;){if(n.nodeType==1&&(n.tagName.toLowerCase() in _34b._validNodes)){var s=_349.getComputedStyle(n),_351=(s.overflowX.toLowerCase() in _34b._validOverflow),_352=(s.overflowY.toLowerCase() in _34b._validOverflow);if(_351||_352){b=_348.getContentBox(n,s);t=_348.position(n,true);}if(_351){w=Math.min(_34b.H_TRIGGER_AUTOSCROLL,b.w/2);rx=e.pageX-t.x;if(has("webkit")||has("opera")){rx+=win.body().scrollLeft;}dx=0;if(rx>0&&rx<b.w){if(rx<w){dx=-w;}else{if(rx>b.w-w){dx=w;}}_34f=n.scrollLeft;n.scrollLeft=n.scrollLeft+dx;}}if(_352){h=Math.min(_34b.V_TRIGGER_AUTOSCROLL,b.h/2);ry=e.pageY-t.y;if(has("webkit")||has("opera")){ry+=win.body().scrollTop;}dy=0;if(ry>0&&ry<b.h){if(ry<h){dy=-h;}else{if(ry>b.h-h){dy=h;}}_350=n.scrollTop;n.scrollTop=n.scrollTop+dy;}}if(dx||dy){return;}}try{n=n.parentNode;}catch(x){n=null;}}_34b.autoScroll(e);};return _34b;});},"dojo/dnd/move":function(){define(["../_base/declare","../dom-geometry","../dom-style","./common","./Mover","./Moveable"],function(_353,_354,_355,dnd,_356,_357){var _358=_353("dojo.dnd.move.constrainedMoveable",_357,{constraints:function(){},within:false,constructor:function(node,_359){if(!_359){_359={};}this.constraints=_359.constraints;this.within=_359.within;},onFirstMove:function(_35a){var c=this.constraintBox=this.constraints.call(this,_35a);c.r=c.l+c.w;c.b=c.t+c.h;if(this.within){var mb=_354.getMarginSize(_35a.node);c.r-=mb.w;c.b-=mb.h;}},onMove:function(_35b,_35c){var c=this.constraintBox,s=_35b.node.style;this.onMoving(_35b,_35c);_35c.l=_35c.l<c.l?c.l:c.r<_35c.l?c.r:_35c.l;_35c.t=_35c.t<c.t?c.t:c.b<_35c.t?c.b:_35c.t;s.left=_35c.l+"px";s.top=_35c.t+"px";this.onMoved(_35b,_35c);}});var _35d=_353("dojo.dnd.move.boxConstrainedMoveable",_358,{box:{},constructor:function(node,_35e){var box=_35e&&_35e.box;this.constraints=function(){return box;};}});var _35f=_353("dojo.dnd.move.parentConstrainedMoveable",_358,{area:"content",constructor:function(node,_360){var area=_360&&_360.area;this.constraints=function(){var n=this.node.parentNode,s=_355.getComputedStyle(n),mb=_354.getMarginBox(n,s);if(area=="margin"){return mb;}var t=_354.getMarginExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="border"){return mb;}t=_354.getBorderExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="padding"){return mb;}t=_354.getPadExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;return mb;};}});return {constrainedMoveable:_358,boxConstrainedMoveable:_35d,parentConstrainedMoveable:_35f};});},"dojo/dnd/TimedMoveable":function(){define(["../_base/declare","./Moveable"],function(_361,_362){var _363=_362.prototype.onMove;return _361("dojo.dnd.TimedMoveable",_362,{timeout:40,constructor:function(node,_364){if(!_364){_364={};}if(_364.timeout&&typeof _364.timeout=="number"&&_364.timeout>=0){this.timeout=_364.timeout;}},onMoveStop:function(_365){if(_365._timer){clearTimeout(_365._timer);_363.call(this,_365,_365._leftTop);}_362.prototype.onMoveStop.apply(this,arguments);},onMove:function(_366,_367){_366._leftTop=_367;if(!_366._timer){var _368=this;_366._timer=setTimeout(function(){_366._timer=null;_363.call(_368,_366,_366._leftTop);},this.timeout);}}});});},"dojo/fx/Toggler":function(){define(["../_base/lang","../_base/declare","../_base/fx","../aspect"],function(lang,_369,_36a,_36b){return _369("dojo.fx.Toggler",null,{node:null,showFunc:_36a.fadeIn,hideFunc:_36a.fadeOut,showDuration:200,hideDuration:200,constructor:function(args){var _36c=this;lang.mixin(_36c,args);_36c.node=args.node;_36c._showArgs=lang.mixin({},args);_36c._showArgs.node=_36c.node;_36c._showArgs.duration=_36c.showDuration;_36c.showAnim=_36c.showFunc(_36c._showArgs);_36c._hideArgs=lang.mixin({},args);_36c._hideArgs.node=_36c.node;_36c._hideArgs.duration=_36c.hideDuration;_36c.hideAnim=_36c.hideFunc(_36c._hideArgs);_36b.after(_36c.showAnim,"beforeBegin",lang.hitch(_36c.hideAnim,"stop",true),true);_36b.after(_36c.hideAnim,"beforeBegin",lang.hitch(_36c.showAnim,"stop",true),true);},show:function(_36d){return this.showAnim.play(_36d||0);},hide:function(_36e){return this.hideAnim.play(_36e||0);}});});},"dojo/html":function(){define(["./_base/kernel","./_base/lang","./_base/array","./_base/declare","./dom","./dom-construct","./parser"],function(_36f,lang,_370,_371,dom,_372,_373){var _374=0;var html={_secureForInnerHtml:function(cont){return cont.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"");},_emptyNode:_372.empty,_setNodeContent:function(node,cont){_372.empty(node);if(cont){if(typeof cont=="number"){cont=cont.toString();}if(typeof cont=="string"){cont=_372.toDom(cont,node.ownerDocument);}if(!cont.nodeType&&lang.isArrayLike(cont)){for(var _375=cont.length,i=0;i<cont.length;i=_375==cont.length?i+1:0){_372.place(cont[i],node,"last");}}else{_372.place(cont,node,"last");}}return node;},_ContentSetter:_371("dojo.html._ContentSetter",null,{node:"",content:"",id:"",cleanContent:false,extractContent:false,parseContent:false,parserScope:_36f._scopeName,startup:true,constructor:function(_376,node){lang.mixin(this,_376||{});node=this.node=dom.byId(this.node||node);if(!this.id){this.id=["Setter",(node)?node.id||node.tagName:"",_374++].join("_");}},set:function(cont,_377){if(undefined!==cont){this.content=cont;}if(typeof cont=="number"){cont=cont.toString();}if(_377){this._mixin(_377);}this.onBegin();this.setContent();var ret=this.onEnd();if(ret&&ret.then){return ret;}else{return this.node;}},setContent:function(){var node=this.node;if(!node){throw new Error(this.declaredClass+": setContent given no node");}try{node=html._setNodeContent(node,this.content);}catch(e){var _378=this.onContentError(e);try{node.innerHTML=_378;}catch(e){console.error("Fatal "+this.declaredClass+".setContent could not change content due to "+e.message,e);}}this.node=node;},empty:function(){if(this.parseDeferred){if(!this.parseDeferred.isResolved()){this.parseDeferred.cancel();}delete this.parseDeferred;}if(this.parseResults&&this.parseResults.length){_370.forEach(this.parseResults,function(w){if(w.destroy){w.destroy();}});delete this.parseResults;}_372.empty(this.node);},onBegin:function(){var cont=this.content;if(lang.isString(cont)){if(this.cleanContent){cont=html._secureForInnerHtml(cont);}if(this.extractContent){var _379=cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_379){cont=_379[1];}}}this.empty();this.content=cont;return this.node;},onEnd:function(){if(this.parseContent){this._parse();}return this.node;},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content;},onContentError:function(err){return "Error occurred setting content: "+err;},onExecError:function(err){return "Error occurred executing scripts: "+err;},_mixin:function(_37a){var _37b={},key;for(key in _37a){if(key in _37b){continue;}this[key]=_37a[key];}},_parse:function(){var _37c=this.node;try{var _37d={};_370.forEach(["dir","lang","textDir"],function(name){if(this[name]){_37d[name]=this[name];}},this);var self=this;this.parseDeferred=_373.parse({rootNode:_37c,noStart:!this.startup,inherited:_37d,scope:this.parserScope}).then(function(_37e){return self.parseResults=_37e;},function(e){self._onError("Content",e,"Error parsing in _ContentSetter#"+self.id);});}catch(e){this._onError("Content",e,"Error parsing in _ContentSetter#"+this.id);}},_onError:function(type,err,_37f){var _380=this["on"+type+"Error"].call(this,err);if(_37f){console.error(_37f,err);}else{if(_380){html._setNodeContent(this.node,_380,true);}}}}),set:function(node,cont,_381){if(undefined==cont){console.warn("dojo.html.set: no cont argument provided, using empty string");cont="";}if(typeof cont=="number"){cont=cont.toString();}if(!_381){return html._setNodeContent(node,cont,true);}else{var op=new html._ContentSetter(lang.mixin(_381,{content:cont,node:node}));return op.set();}}};lang.setObject("dojo.html",html);return html;});},"dojo/i18n":function(){define(["./_base/kernel","require","./has","./_base/array","./_base/config","./_base/lang","./_base/xhr","./json","module"],function(dojo,_382,has,_383,_384,lang,xhr,json,_385){has.add("dojo-preload-i18n-Api",1);1||has.add("dojo-v1x-i18n-Api",1);var _386=dojo.i18n={},_387=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,_388=function(root,_389,_38a,_38b){for(var _38c=[_38a+_38b],_38d=_389.split("-"),_38e="",i=0;i<_38d.length;i++){_38e+=(_38e?"-":"")+_38d[i];if(!root||root[_38e]){_38c.push(_38a+_38e+"/"+_38b);_38c.specificity=_38e;}}return _38c;},_38f={},_390=function(_391,_392,_393){_393=_393?_393.toLowerCase():dojo.locale;_391=_391.replace(/\./g,"/");_392=_392.replace(/\./g,"/");return (/root/i.test(_393))?(_391+"/nls/"+_392):(_391+"/nls/"+_393+"/"+_392);},_394=dojo.getL10nName=function(_395,_396,_397){return _395=_385.id+"!"+_390(_395,_396,_397);},_398=function(_399,_39a,_39b,_39c,_39d,load){_399([_39a],function(root){var _39e=lang.clone(root.root||root.ROOT),_39f=_388(!root._v1x&&root,_39d,_39b,_39c);_399(_39f,function(){for(var i=1;i<_39f.length;i++){_39e=lang.mixin(lang.clone(_39e),arguments[i]);}var _3a0=_39a+"/"+_39d;_38f[_3a0]=_39e;_39e.$locale=_39f.specificity;load();});});},_3a1=function(id,_3a2){return /^\./.test(id)?_3a2(id):id;},_3a3=function(_3a4){var list=_384.extraLocale||[];list=lang.isArray(list)?list:[list];list.push(_3a4);return list;},load=function(id,_3a5,load){var _3a6=_387.exec(id),_3a7=_3a6[1]+"/",_3a8=_3a6[5]||_3a6[4],_3a9=_3a7+_3a8,_3aa=(_3a6[5]&&_3a6[4]),_3ab=_3aa||dojo.locale||"",_3ac=_3a9+"/"+_3ab,_3ad=_3aa?[_3ab]:_3a3(_3ab),_3ae=_3ad.length,_3af=function(){if(!--_3ae){load(lang.delegate(_38f[_3ac]));}},_3b0=id.split("*"),_3b1=_3b0[1]=="preload";if(has("dojo-preload-i18n-Api")){if(_3b1){if(!_38f[id]){_38f[id]=1;_3bb(_3b0[2],json.parse(_3b0[3]),1,_3a5);}load(1);}if(_3b1||(_3d8(id,_3a5,load)&&!_38f[_3ac])){return;}}else{if(_3b1){load(1);return;}}_383.forEach(_3ad,function(_3b2){var _3b3=_3a9+"/"+_3b2;if(has("dojo-preload-i18n-Api")){_3b4(_3b3);}if(!_38f[_3b3]){_398(_3a5,_3a9,_3a7,_3a8,_3b2,_3af);}else{_3af();}});};if(has("dojo-preload-i18n-Api")||1){var _3b5=_386.normalizeLocale=function(_3b6){var _3b7=_3b6?_3b6.toLowerCase():dojo.locale;return _3b7=="root"?"ROOT":_3b7;},isXd=function(mid,_3b8){return (1&&1)?_3b8.isXdUrl(_382.toUrl(mid+".js")):true;},_3b9=0,_3ba=[],_3bb=_386._preloadLocalizations=function(_3bc,_3bd,_3be,_3bf){_3bf=_3bf||_382;function _3c0(mid,_3c1){if(isXd(mid,_3bf)||_3be){_3bf([mid],_3c1);}else{_3dd([mid],_3c1,_3bf);}};function _3c2(_3c3,func){var _3c4=_3c3.split("-");while(_3c4.length){if(func(_3c4.join("-"))){return;}_3c4.pop();}func("ROOT");};function _3c5(){_3b9++;};function _3c6(){--_3b9;while(!_3b9&&_3ba.length){load.apply(null,_3ba.shift());}};function _3c7(path,name,loc,_3c8){return _3c8.toAbsMid(path+name+"/"+loc);};function _3c9(_3ca){_3ca=_3b5(_3ca);_3c2(_3ca,function(loc){if(_383.indexOf(_3bd,loc)>=0){var mid=_3bc.replace(/\./g,"/")+"_"+loc;_3c5();_3c0(mid,function(_3cb){for(var p in _3cb){var _3cc=_3cb[p],_3cd=p.match(/(.+)\/([^\/]+)$/),_3ce,_3cf;if(!_3cd){continue;}_3ce=_3cd[2];_3cf=_3cd[1]+"/";if(!_3cc._localized){continue;}var _3d0;if(loc==="ROOT"){var root=_3d0=_3cc._localized;delete _3cc._localized;root.root=_3cc;_38f[_382.toAbsMid(p)]=root;}else{_3d0=_3cc._localized;_38f[_3c7(_3cf,_3ce,loc,_382)]=_3cc;}if(loc!==_3ca){function _3d1(_3d2,_3d3,_3d4,_3d5){var _3d6=[],_3d7=[];_3c2(_3ca,function(loc){if(_3d5[loc]){_3d6.push(_382.toAbsMid(_3d2+loc+"/"+_3d3));_3d7.push(_3c7(_3d2,_3d3,loc,_382));}});if(_3d6.length){_3c5();_3bf(_3d6,function(){for(var i=_3d6.length-1;i>=0;i--){_3d4=lang.mixin(lang.clone(_3d4),arguments[i]);_38f[_3d7[i]]=_3d4;}_38f[_3c7(_3d2,_3d3,_3ca,_382)]=lang.clone(_3d4);_3c6();});}else{_38f[_3c7(_3d2,_3d3,_3ca,_382)]=_3d4;}};_3d1(_3cf,_3ce,_3cc,_3d0);}}_3c6();});return true;}return false;});};_3c9();_383.forEach(dojo.config.extraLocale,_3c9);},_3d8=function(id,_3d9,load){if(_3b9){_3ba.push([id,_3d9,load]);}return _3b9;},_3b4=function(){};}if(1){var _3da={},_3db={},_3dc,_3dd=function(deps,_3de,_3df){var _3e0=[];_383.forEach(deps,function(mid){var url=_3df.toUrl(mid+".js");function load(text){if(!_3dc){_3dc=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},"+"\t require = function(){define.called = 1;};"+"try{"+"define.called = 0;"+"eval(__bundle);"+"if(define.called==1)"+"return __amdValue;"+"if((__checkForLegacyModules = __checkForLegacyModules(__mid)))"+"return __checkForLegacyModules;"+"}catch(e){}"+"try{"+"return eval('('+__bundle+')');"+"}catch(e){"+"return e;"+"}");}var _3e1=_3dc(text,_3b4,mid,_3da);if(_3e1===_3da){_3e0.push(_38f[url]=_3da.result);}else{if(_3e1 instanceof Error){console.error("failed to evaluate i18n bundle; url="+url,_3e1);_3e1={};}_3e0.push(_38f[url]=(/nls\/[^\/]+\/[^\/]+$/.test(url)?_3e1:{root:_3e1,_v1x:1}));}};if(_38f[url]){_3e0.push(_38f[url]);}else{var _3e2=_3df.syncLoadNls(mid);if(!_3e2){_3e2=_3b4(mid.replace(/nls\/([^\/]*)\/([^\/]*)$/,"nls/$2/$1"));}if(_3e2){_3e0.push(_3e2);}else{if(!xhr){try{_3df.getText(url,true,load);}catch(e){_3e0.push(_38f[url]={});}}else{xhr.get({url:url,sync:true,load:load,error:function(){_3e0.push(_38f[url]={});}});}}}});_3de&&_3de.apply(null,_3e0);};_3b4=function(_3e3){for(var _3e4,_3e5=_3e3.split("/"),_3e6=dojo.global[_3e5[0]],i=1;_3e6&&i<_3e5.length-1;_3e6=_3e6[_3e5[i++]]){}if(_3e6){_3e4=_3e6[_3e5[i]];if(!_3e4){_3e4=_3e6[_3e5[i].replace(/-/g,"_")];}if(_3e4){_38f[_3e3]=_3e4;}}return _3e4;};_386.getLocalization=function(_3e7,_3e8,_3e9){var _3ea,_3eb=_390(_3e7,_3e8,_3e9);if(_3db[_3eb]){return _3db[_3eb];}load(_3eb,(!isXd(_3eb,_382)?function(deps,_3ec){_3dd(deps,_3ec,_382);}:_382),function(_3ed){_3db[_3eb]=_3ed;_3ea=_3ed;});return _3ea;};}else{_386.getLocalization=function(_3ee,_3ef,_3f0){var key=_3ee.replace(/\./g,"/")+"/nls/"+_3ef+"/"+(_3f0||_384.locale);return this.cache[key];};}return lang.mixin(_386,{dynamic:true,normalize:_3a1,load:load,cache:_38f,getL10nName:_394});});},"dijit/dijit":function(){define(["./main","./_base","dojo/parser","./_Widget","./_TemplatedMixin","./_Container","./layout/_LayoutWidget","./form/_FormWidget","./form/_FormValueWidget"],function(_3f1){return _3f1;});},"dijit/main":function(){define(["dojo/_base/kernel"],function(dojo){return dojo.dijit;});},"dijit/_base":function(){define(["./main","./a11y","./WidgetSet","./_base/focus","./_base/manager","./_base/place","./_base/popup","./_base/scroll","./_base/sniff","./_base/typematic","./_base/wai","./_base/window"],function(_3f2){return _3f2._base;});},"dijit/a11y":function(){define(["dojo/_base/array","dojo/dom","dojo/dom-attr","dojo/dom-style","dojo/_base/lang","dojo/sniff","./main"],function(_3f3,dom,_3f4,_3f5,lang,has,_3f6){var _3f7;var a11y={_isElementShown:function(elem){var s=_3f5.get(elem);return (s.visibility!="hidden")&&(s.visibility!="collapsed")&&(s.display!="none")&&(_3f4.get(elem,"type")!="hidden");},hasDefaultTabStop:function(elem){switch(elem.nodeName.toLowerCase()){case "a":return _3f4.has(elem,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return true;case "iframe":var body;try{var _3f8=elem.contentDocument;if("designMode" in _3f8&&_3f8.designMode=="on"){return true;}body=_3f8.body;}catch(e1){try{body=elem.contentWindow.document.body;}catch(e2){return false;}}return body&&(body.contentEditable=="true"||(body.firstChild&&body.firstChild.contentEditable=="true"));default:return elem.contentEditable=="true";}},effectiveTabIndex:function(elem){if(_3f4.get(elem,"disabled")){return _3f7;}else{if(_3f4.has(elem,"tabIndex")){return +_3f4.get(elem,"tabIndex");}else{return a11y.hasDefaultTabStop(elem)?0:_3f7;}}},isTabNavigable:function(elem){return a11y.effectiveTabIndex(elem)>=0;},isFocusable:function(elem){return a11y.effectiveTabIndex(elem)>=-1;},_getTabNavigable:function(root){var _3f9,last,_3fa,_3fb,_3fc,_3fd,_3fe={};function _3ff(node){return node&&node.tagName.toLowerCase()=="input"&&node.type&&node.type.toLowerCase()=="radio"&&node.name&&node.name.toLowerCase();};var _400=a11y._isElementShown,_401=a11y.effectiveTabIndex;var _402=function(_403){for(var _404=_403.firstChild;_404;_404=_404.nextSibling){if(_404.nodeType!=1||(has("ie")<=9&&_404.scopeName!=="HTML")||!_400(_404)){continue;}var _405=_401(_404);if(_405>=0){if(_405==0){if(!_3f9){_3f9=_404;}last=_404;}else{if(_405>0){if(!_3fa||_405<_3fb){_3fb=_405;_3fa=_404;}if(!_3fc||_405>=_3fd){_3fd=_405;_3fc=_404;}}}var rn=_3ff(_404);if(_3f4.get(_404,"checked")&&rn){_3fe[rn]=_404;}}if(_404.nodeName.toUpperCase()!="SELECT"){_402(_404);}}};if(_400(root)){_402(root);}function rs(node){return _3fe[_3ff(node)]||node;};return {first:rs(_3f9),last:rs(last),lowest:rs(_3fa),highest:rs(_3fc)};},getFirstInTabbingOrder:function(root,doc){var _406=a11y._getTabNavigable(dom.byId(root,doc));return _406.lowest?_406.lowest:_406.first;},getLastInTabbingOrder:function(root,doc){var _407=a11y._getTabNavigable(dom.byId(root,doc));return _407.last?_407.last:_407.highest;}};1&&lang.mixin(_3f6,a11y);return a11y;});},"dijit/WidgetSet":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","./registry"],function(_408,_409,_40a,_40b){var _40c=_409("dijit.WidgetSet",null,{constructor:function(){this._hash={};this.length=0;},add:function(_40d){if(this._hash[_40d.id]){throw new Error("Tried to register widget with id=="+_40d.id+" but that id is already registered");}this._hash[_40d.id]=_40d;this.length++;},remove:function(id){if(this._hash[id]){delete this._hash[id];this.length--;}},forEach:function(func,_40e){_40e=_40e||_40a.global;var i=0,id;for(id in this._hash){func.call(_40e,this._hash[id],i++,this._hash);}return this;},filter:function(_40f,_410){_410=_410||_40a.global;var res=new _40c(),i=0,id;for(id in this._hash){var w=this._hash[id];if(_40f.call(_410,w,i++,this._hash)){res.add(w);}}return res;},byId:function(id){return this._hash[id];},byClass:function(cls){var res=new _40c(),id,_411;for(id in this._hash){_411=this._hash[id];if(_411.declaredClass==cls){res.add(_411);}}return res;},toArray:function(){var ar=[];for(var id in this._hash){ar.push(this._hash[id]);}return ar;},map:function(func,_412){return _408.map(this.toArray(),func,_412);},every:function(func,_413){_413=_413||_40a.global;var x=0,i;for(i in this._hash){if(!func.call(_413,this._hash[i],x++,this._hash)){return false;}}return true;},some:function(func,_414){_414=_414||_40a.global;var x=0,i;for(i in this._hash){if(func.call(_414,this._hash[i],x++,this._hash)){return true;}}return false;}});_408.forEach(["forEach","filter","byClass","map","every","some"],function(func){_40b[func]=_40c.prototype[func];});return _40c;});},"dijit/registry":function(){define(["dojo/_base/array","dojo/_base/window","./main"],function(_415,win,_416){var _417={},hash={};var _418={length:0,add:function(_419){if(hash[_419.id]){throw new Error("Tried to register widget with id=="+_419.id+" but that id is already registered");}hash[_419.id]=_419;this.length++;},remove:function(id){if(hash[id]){delete hash[id];this.length--;}},byId:function(id){return typeof id=="string"?hash[id]:id;},byNode:function(node){return hash[node.getAttribute("widgetId")];},toArray:function(){var ar=[];for(var id in hash){ar.push(hash[id]);}return ar;},getUniqueId:function(_41a){var id;do{id=_41a+"_"+(_41a in _417?++_417[_41a]:_417[_41a]=0);}while(hash[id]);return _416._scopeName=="dijit"?id:_416._scopeName+"_"+id;},findWidgets:function(root,_41b){var _41c=[];function _41d(root){for(var node=root.firstChild;node;node=node.nextSibling){if(node.nodeType==1){var _41e=node.getAttribute("widgetId");if(_41e){var _41f=hash[_41e];if(_41f){_41c.push(_41f);}}else{if(node!==_41b){_41d(node);}}}}};_41d(root);return _41c;},_destroyAll:function(){_416._curFocus=null;_416._prevFocus=null;_416._activeStack=[];_415.forEach(_418.findWidgets(win.body()),function(_420){if(!_420._destroyed){if(_420.destroyRecursive){_420.destroyRecursive();}else{if(_420.destroy){_420.destroy();}}}});},getEnclosingWidget:function(node){while(node){var id=node.nodeType==1&&node.getAttribute("widgetId");if(id){return hash[id];}node=node.parentNode;}return null;},_hash:hash};_416.registry=_418;return _418;});},"dijit/_base/focus":function(){define(["dojo/_base/array","dojo/dom","dojo/_base/lang","dojo/topic","dojo/_base/window","../focus","../selection","../main"],function(_421,dom,lang,_422,win,_423,_424,_425){var _426={_curFocus:null,_prevFocus:null,isCollapsed:function(){return _425.getBookmark().isCollapsed;},getBookmark:function(){var sel=win.global==window?_424:new _424.SelectionManager(win.global);return sel.getBookmark();},moveToBookmark:function(_427){var sel=win.global==window?_424:new _424.SelectionManager(win.global);return sel.moveToBookmark(_427);},getFocus:function(menu,_428){var node=!_423.curNode||(menu&&dom.isDescendant(_423.curNode,menu.domNode))?_425._prevFocus:_423.curNode;return {node:node,bookmark:node&&(node==_423.curNode)&&win.withGlobal(_428||win.global,_425.getBookmark),openedForWindow:_428};},_activeStack:[],registerIframe:function(_429){return _423.registerIframe(_429);},unregisterIframe:function(_42a){_42a&&_42a.remove();},registerWin:function(_42b,_42c){return _423.registerWin(_42b,_42c);},unregisterWin:function(_42d){_42d&&_42d.remove();}};_423.focus=function(_42e){if(!_42e){return;}var node="node" in _42e?_42e.node:_42e,_42f=_42e.bookmark,_430=_42e.openedForWindow,_431=_42f?_42f.isCollapsed:false;if(node){var _432=(node.tagName.toLowerCase()=="iframe")?node.contentWindow:node;if(_432&&_432.focus){try{_432.focus();}catch(e){}}_423._onFocusNode(node);}if(_42f&&win.withGlobal(_430||win.global,_425.isCollapsed)&&!_431){if(_430){_430.focus();}try{win.withGlobal(_430||win.global,_425.moveToBookmark,null,[_42f]);}catch(e2){}}};_423.watch("curNode",function(name,_433,_434){_425._curFocus=_434;_425._prevFocus=_433;if(_434){_422.publish("focusNode",_434);}});_423.watch("activeStack",function(name,_435,_436){_425._activeStack=_436;});_423.on("widget-blur",function(_437,by){_422.publish("widgetBlur",_437,by);});_423.on("widget-focus",function(_438,by){_422.publish("widgetFocus",_438,by);});lang.mixin(_425,_426);return _425;});},"dijit/focus":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/Evented","dojo/_base/lang","dojo/on","dojo/domReady","dojo/sniff","dojo/Stateful","dojo/_base/window","dojo/window","./a11y","./registry","./main"],function(_439,_43a,dom,_43b,_43c,_43d,_43e,lang,on,_43f,has,_440,win,_441,a11y,_442,_443){var _444;var _445;var _446=_43a([_440,_43e],{curNode:null,activeStack:[],constructor:function(){var _447=lang.hitch(this,function(node){if(dom.isDescendant(this.curNode,node)){this.set("curNode",null);}if(dom.isDescendant(this.prevNode,node)){this.set("prevNode",null);}});_439.before(_43d,"empty",_447);_439.before(_43d,"destroy",_447);},registerIframe:function(_448){return this.registerWin(_448.contentWindow,_448);},registerWin:function(_449,_44a){var _44b=this,body=_449.document&&_449.document.body;if(body){var _44c=has("pointer-events")?"pointerdown":has("MSPointer")?"MSPointerDown":has("touch-events")?"mousedown, touchstart":"mousedown";var mdh=on(_449.document,_44c,function(evt){if(evt&&evt.target&&evt.target.parentNode==null){return;}_44b._onTouchNode(_44a||evt.target,"mouse");});var fih=on(body,"focusin",function(evt){if(!evt.target.tagName){return;}var tag=evt.target.tagName.toLowerCase();if(tag=="#document"||tag=="body"){return;}if(a11y.isFocusable(evt.target)){_44b._onFocusNode(_44a||evt.target);}else{_44b._onTouchNode(_44a||evt.target);}});var foh=on(body,"focusout",function(evt){_44b._onBlurNode(_44a||evt.target);});return {remove:function(){mdh.remove();fih.remove();foh.remove();mdh=fih=foh=null;body=null;}};}},_onBlurNode:function(node){var now=(new Date()).getTime();if(now<_444+100){return;}if(this._clearFocusTimer){clearTimeout(this._clearFocusTimer);}this._clearFocusTimer=setTimeout(lang.hitch(this,function(){this.set("prevNode",this.curNode);this.set("curNode",null);}),0);if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);}if(now<_445+100){return;}this._clearActiveWidgetsTimer=setTimeout(lang.hitch(this,function(){delete this._clearActiveWidgetsTimer;this._setStack([]);}),0);},_onTouchNode:function(node,by){_445=(new Date()).getTime();if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);delete this._clearActiveWidgetsTimer;}if(_43c.contains(node,"dijitPopup")){node=node.firstChild;}var _44d=[];try{while(node){var _44e=_43b.get(node,"dijitPopupParent");if(_44e){node=_442.byId(_44e).domNode;}else{if(node.tagName&&node.tagName.toLowerCase()=="body"){if(node===win.body()){break;}node=_441.get(node.ownerDocument).frameElement;}else{var id=node.getAttribute&&node.getAttribute("widgetId"),_44f=id&&_442.byId(id);if(_44f&&!(by=="mouse"&&_44f.get("disabled"))){_44d.unshift(id);}node=node.parentNode;}}}}catch(e){}this._setStack(_44d,by);},_onFocusNode:function(node){if(!node){return;}if(node.nodeType==9){return;}_444=(new Date()).getTime();if(this._clearFocusTimer){clearTimeout(this._clearFocusTimer);delete this._clearFocusTimer;}this._onTouchNode(node);if(node==this.curNode){return;}this.set("prevNode",this.curNode);this.set("curNode",node);},_setStack:function(_450,by){var _451=this.activeStack,_452=_451.length-1,_453=_450.length-1;if(_450[_453]==_451[_452]){return;}this.set("activeStack",_450);var _454,i;for(i=_452;i>=0&&_451[i]!=_450[i];i--){_454=_442.byId(_451[i]);if(_454){_454._hasBeenBlurred=true;_454.set("focused",false);if(_454._focusManager==this){_454._onBlur(by);}this.emit("widget-blur",_454,by);}}for(i++;i<=_453;i++){_454=_442.byId(_450[i]);if(_454){_454.set("focused",true);if(_454._focusManager==this){_454._onFocus(by);}this.emit("widget-focus",_454,by);}}},focus:function(node){if(node){try{node.focus();}catch(e){}}}});var _455=new _446();_43f(function(){var _456=_455.registerWin(_441.get(document));if(has("ie")){on(window,"unload",function(){if(_456){_456.remove();_456=null;}});}});_443.focus=function(node){_455.focus(node);};for(var attr in _455){if(!/^_/.test(attr)){_443.focus[attr]=typeof _455[attr]=="function"?lang.hitch(_455,attr):_455[attr];}}_455.watch(function(attr,_457,_458){_443.focus[attr]=_458;});return _455;});},"dijit/selection":function(){define(["dojo/_base/array","dojo/dom","dojo/_base/lang","dojo/sniff","dojo/_base/window","dijit/focus"],function(_459,dom,lang,has,_45a,_45b){var _45c=function(win){var doc=win.document;this.getType=function(){if(doc.getSelection){var _45d="text";var oSel;try{oSel=win.getSelection();}catch(e){}if(oSel&&oSel.rangeCount==1){var _45e=oSel.getRangeAt(0);if((_45e.startContainer==_45e.endContainer)&&((_45e.endOffset-_45e.startOffset)==1)&&(_45e.startContainer.nodeType!=3)){_45d="control";}}return _45d;}else{return doc.selection.type.toLowerCase();}};this.getSelectedText=function(){if(doc.getSelection){var _45f=win.getSelection();return _45f?_45f.toString():"";}else{if(this.getType()=="control"){return null;}return doc.selection.createRange().text;}};this.getSelectedHtml=function(){if(doc.getSelection){var _460=win.getSelection();if(_460&&_460.rangeCount){var i;var html="";for(i=0;i<_460.rangeCount;i++){var frag=_460.getRangeAt(i).cloneContents();var div=doc.createElement("div");div.appendChild(frag);html+=div.innerHTML;}return html;}return null;}else{if(this.getType()=="control"){return null;}return doc.selection.createRange().htmlText;}};this.getSelectedElement=function(){if(this.getType()=="control"){if(doc.getSelection){var _461=win.getSelection();return _461.anchorNode.childNodes[_461.anchorOffset];}else{var _462=doc.selection.createRange();if(_462&&_462.item){return doc.selection.createRange().item(0);}}}return null;};this.getParentElement=function(){if(this.getType()=="control"){var p=this.getSelectedElement();if(p){return p.parentNode;}}else{if(doc.getSelection){var _463=doc.getSelection();if(_463){var node=_463.anchorNode;while(node&&(node.nodeType!=1)){node=node.parentNode;}return node;}}else{var r=doc.selection.createRange();r.collapse(true);return r.parentElement();}}return null;};this.hasAncestorElement=function(_464){return this.getAncestorElement.apply(this,arguments)!=null;};this.getAncestorElement=function(_465){var node=this.getSelectedElement()||this.getParentElement();return this.getParentOfType(node,arguments);};this.isTag=function(node,tags){if(node&&node.tagName){var _466=node.tagName.toLowerCase();for(var i=0;i<tags.length;i++){var _467=String(tags[i]).toLowerCase();if(_466==_467){return _467;}}}return "";};this.getParentOfType=function(node,tags){while(node){if(this.isTag(node,tags).length){return node;}node=node.parentNode;}return null;};this.collapse=function(_468){if(doc.getSelection){var _469=win.getSelection();if(_469.removeAllRanges){if(_468){_469.collapseToStart();}else{_469.collapseToEnd();}}else{_469.collapse(_468);}}else{var _46a=doc.selection.createRange();_46a.collapse(_468);_46a.select();}};this.remove=function(){var sel=doc.selection;if(doc.getSelection){sel=win.getSelection();sel.deleteFromDocument();return sel;}else{if(sel.type.toLowerCase()!="none"){sel.clear();}return sel;}};this.selectElementChildren=function(_46b,_46c){var _46d;_46b=dom.byId(_46b);if(doc.getSelection){var _46e=win.getSelection();if(has("opera")){if(_46e.rangeCount){_46d=_46e.getRangeAt(0);}else{_46d=doc.createRange();}_46d.setStart(_46b,0);_46d.setEnd(_46b,(_46b.nodeType==3)?_46b.length:_46b.childNodes.length);_46e.addRange(_46d);}else{_46e.selectAllChildren(_46b);}}else{_46d=_46b.ownerDocument.body.createTextRange();_46d.moveToElementText(_46b);if(!_46c){try{_46d.select();}catch(e){}}}};this.selectElement=function(_46f,_470){var _471;_46f=dom.byId(_46f);if(doc.getSelection){var _472=doc.getSelection();_471=doc.createRange();if(_472.removeAllRanges){if(has("opera")){if(_472.getRangeAt(0)){_471=_472.getRangeAt(0);}}_471.selectNode(_46f);_472.removeAllRanges();_472.addRange(_471);}}else{try{var tg=_46f.tagName?_46f.tagName.toLowerCase():"";if(tg==="img"||tg==="table"){_471=_45a.body(doc).createControlRange();}else{_471=_45a.body(doc).createRange();}_471.addElement(_46f);if(!_470){_471.select();}}catch(e){this.selectElementChildren(_46f,_470);}}};this.inSelection=function(node){if(node){var _473;var _474;if(doc.getSelection){var sel=win.getSelection();if(sel&&sel.rangeCount>0){_474=sel.getRangeAt(0);}if(_474&&_474.compareBoundaryPoints&&doc.createRange){try{_473=doc.createRange();_473.setStart(node,0);if(_474.compareBoundaryPoints(_474.START_TO_END,_473)===1){return true;}}catch(e){}}}else{_474=doc.selection.createRange();try{_473=node.ownerDocument.body.createTextRange();_473.moveToElementText(node);}catch(e2){}if(_474&&_473){if(_474.compareEndPoints("EndToStart",_473)===1){return true;}}}}return false;};this.getBookmark=function(){var bm,rg,tg,sel=doc.selection,cf=_45b.curNode;if(doc.getSelection){sel=win.getSelection();if(sel){if(sel.isCollapsed){tg=cf?cf.tagName:"";if(tg){tg=tg.toLowerCase();if(tg=="textarea"||(tg=="input"&&(!cf.type||cf.type.toLowerCase()=="text"))){sel={start:cf.selectionStart,end:cf.selectionEnd,node:cf,pRange:true};return {isCollapsed:(sel.end<=sel.start),mark:sel};}}bm={isCollapsed:true};if(sel.rangeCount){bm.mark=sel.getRangeAt(0).cloneRange();}}else{rg=sel.getRangeAt(0);bm={isCollapsed:false,mark:rg.cloneRange()};}}}else{if(sel){tg=cf?cf.tagName:"";tg=tg.toLowerCase();if(cf&&tg&&(tg=="button"||tg=="textarea"||tg=="input")){if(sel.type&&sel.type.toLowerCase()=="none"){return {isCollapsed:true,mark:null};}else{rg=sel.createRange();return {isCollapsed:rg.text&&rg.text.length?false:true,mark:{range:rg,pRange:true}};}}bm={};try{rg=sel.createRange();bm.isCollapsed=!(sel.type=="Text"?rg.htmlText.length:rg.length);}catch(e){bm.isCollapsed=true;return bm;}if(sel.type.toUpperCase()=="CONTROL"){if(rg.length){bm.mark=[];var i=0,len=rg.length;while(i<len){bm.mark.push(rg.item(i++));}}else{bm.isCollapsed=true;bm.mark=null;}}else{bm.mark=rg.getBookmark();}}else{console.warn("No idea how to store the current selection for this browser!");}}return bm;};this.moveToBookmark=function(_475){var mark=_475.mark;if(mark){if(doc.getSelection){var sel=win.getSelection();if(sel&&sel.removeAllRanges){if(mark.pRange){var n=mark.node;n.selectionStart=mark.start;n.selectionEnd=mark.end;}else{sel.removeAllRanges();sel.addRange(mark);}}else{console.warn("No idea how to restore selection for this browser!");}}else{if(doc.selection&&mark){var rg;if(mark.pRange){rg=mark.range;}else{if(lang.isArray(mark)){rg=doc.body.createControlRange();_459.forEach(mark,function(n){rg.addElement(n);});}else{rg=doc.body.createTextRange();rg.moveToBookmark(mark);}}rg.select();}}}};this.isCollapsed=function(){return this.getBookmark().isCollapsed;};};var _476=new _45c(window);_476.SelectionManager=_45c;return _476;});},"dijit/_base/manager":function(){define(["dojo/_base/array","dojo/_base/config","dojo/_base/lang","../registry","../main"],function(_477,_478,lang,_479,_47a){var _47b={};_477.forEach(["byId","getUniqueId","findWidgets","_destroyAll","byNode","getEnclosingWidget"],function(name){_47b[name]=_479[name];});lang.mixin(_47b,{defaultDuration:_478["defaultDuration"]||200});lang.mixin(_47a,_47b);return _47a;});},"dijit/_base/place":function(){define(["dojo/_base/array","dojo/_base/lang","dojo/window","../place","../main"],function(_47c,lang,_47d,_47e,_47f){var _480={};_480.getViewport=function(){return _47d.getBox();};_480.placeOnScreen=_47e.at;_480.placeOnScreenAroundElement=function(node,_481,_482,_483){var _484;if(lang.isArray(_482)){_484=_482;}else{_484=[];for(var key in _482){_484.push({aroundCorner:key,corner:_482[key]});}}return _47e.around(node,_481,_484,true,_483);};_480.placeOnScreenAroundNode=_480.placeOnScreenAroundElement;_480.placeOnScreenAroundRectangle=_480.placeOnScreenAroundElement;_480.getPopupAroundAlignment=function(_485,_486){var _487={};_47c.forEach(_485,function(pos){var ltr=_486;switch(pos){case "after":_487[_486?"BR":"BL"]=_486?"BL":"BR";break;case "before":_487[_486?"BL":"BR"]=_486?"BR":"BL";break;case "below-alt":ltr=!ltr;case "below":_487[ltr?"BL":"BR"]=ltr?"TL":"TR";_487[ltr?"BR":"BL"]=ltr?"TR":"TL";break;case "above-alt":ltr=!ltr;case "above":default:_487[ltr?"TL":"TR"]=ltr?"BL":"BR";_487[ltr?"TR":"TL"]=ltr?"BR":"BL";break;}});return _487;};lang.mixin(_47f,_480);return _47f;});},"dijit/place":function(){define(["dojo/_base/array","dojo/dom-geometry","dojo/dom-style","dojo/_base/kernel","dojo/_base/window","./Viewport","./main"],function(_488,_489,_48a,_48b,win,_48c,_48d){function _48e(node,_48f,_490,_491){var view=_48c.getEffectiveBox(node.ownerDocument);if(!node.parentNode||String(node.parentNode.tagName).toLowerCase()!="body"){win.body(node.ownerDocument).appendChild(node);}var best=null;_488.some(_48f,function(_492){var _493=_492.corner;var pos=_492.pos;var _494=0;var _495={w:{"L":view.l+view.w-pos.x,"R":pos.x-view.l,"M":view.w}[_493.charAt(1)],h:{"T":view.t+view.h-pos.y,"B":pos.y-view.t,"M":view.h}[_493.charAt(0)]};var s=node.style;s.left=s.right="auto";if(_490){var res=_490(node,_492.aroundCorner,_493,_495,_491);_494=typeof res=="undefined"?0:res;}var _496=node.style;var _497=_496.display;var _498=_496.visibility;if(_496.display=="none"){_496.visibility="hidden";_496.display="";}var bb=_489.position(node);_496.display=_497;_496.visibility=_498;var _499={"L":pos.x,"R":pos.x-bb.w,"M":Math.max(view.l,Math.min(view.l+view.w,pos.x+(bb.w>>1))-bb.w)}[_493.charAt(1)],_49a={"T":pos.y,"B":pos.y-bb.h,"M":Math.max(view.t,Math.min(view.t+view.h,pos.y+(bb.h>>1))-bb.h)}[_493.charAt(0)],_49b=Math.max(view.l,_499),_49c=Math.max(view.t,_49a),endX=Math.min(view.l+view.w,_499+bb.w),endY=Math.min(view.t+view.h,_49a+bb.h),_49d=endX-_49b,_49e=endY-_49c;_494+=(bb.w-_49d)+(bb.h-_49e);if(best==null||_494<best.overflow){best={corner:_493,aroundCorner:_492.aroundCorner,x:_49b,y:_49c,w:_49d,h:_49e,overflow:_494,spaceAvailable:_495};}return !_494;});if(best.overflow&&_490){_490(node,best.aroundCorner,best.corner,best.spaceAvailable,_491);}var top=best.y,side=best.x,body=win.body(node.ownerDocument);if(/relative|absolute/.test(_48a.get(body,"position"))){top-=_48a.get(body,"marginTop");side-=_48a.get(body,"marginLeft");}var s=node.style;s.top=top+"px";s.left=side+"px";s.right="auto";return best;};var _49f={"TL":"BR","TR":"BL","BL":"TR","BR":"TL"};var _4a0={at:function(node,pos,_4a1,_4a2,_4a3){var _4a4=_488.map(_4a1,function(_4a5){var c={corner:_4a5,aroundCorner:_49f[_4a5],pos:{x:pos.x,y:pos.y}};if(_4a2){c.pos.x+=_4a5.charAt(1)=="L"?_4a2.x:-_4a2.x;c.pos.y+=_4a5.charAt(0)=="T"?_4a2.y:-_4a2.y;}return c;});return _48e(node,_4a4,_4a3);},around:function(node,_4a6,_4a7,_4a8,_4a9){var _4aa;if(typeof _4a6=="string"||"offsetWidth" in _4a6||"ownerSVGElement" in _4a6){_4aa=_489.position(_4a6,true);if(/^(above|below)/.test(_4a7[0])){var _4ab=_489.getBorderExtents(_4a6),_4ac=_4a6.firstChild?_489.getBorderExtents(_4a6.firstChild):{t:0,l:0,b:0,r:0},_4ad=_489.getBorderExtents(node),_4ae=node.firstChild?_489.getBorderExtents(node.firstChild):{t:0,l:0,b:0,r:0};_4aa.y+=Math.min(_4ab.t+_4ac.t,_4ad.t+_4ae.t);_4aa.h-=Math.min(_4ab.t+_4ac.t,_4ad.t+_4ae.t)+Math.min(_4ab.b+_4ac.b,_4ad.b+_4ae.b);}}else{_4aa=_4a6;}if(_4a6.parentNode){var _4af=_48a.getComputedStyle(_4a6).position=="absolute";var _4b0=_4a6.parentNode;while(_4b0&&_4b0.nodeType==1&&_4b0.nodeName!="BODY"){var _4b1=_489.position(_4b0,true),pcs=_48a.getComputedStyle(_4b0);if(/relative|absolute/.test(pcs.position)){_4af=false;}if(!_4af&&/hidden|auto|scroll/.test(pcs.overflow)){var _4b2=Math.min(_4aa.y+_4aa.h,_4b1.y+_4b1.h);var _4b3=Math.min(_4aa.x+_4aa.w,_4b1.x+_4b1.w);_4aa.x=Math.max(_4aa.x,_4b1.x);_4aa.y=Math.max(_4aa.y,_4b1.y);_4aa.h=_4b2-_4aa.y;_4aa.w=_4b3-_4aa.x;}if(pcs.position=="absolute"){_4af=true;}_4b0=_4b0.parentNode;}}var x=_4aa.x,y=_4aa.y,_4b4="w" in _4aa?_4aa.w:(_4aa.w=_4aa.width),_4b5="h" in _4aa?_4aa.h:(_48b.deprecated("place.around: dijit/place.__Rectangle: { x:"+x+", y:"+y+", height:"+_4aa.height+", width:"+_4b4+" } has been deprecated. Please use { x:"+x+", y:"+y+", h:"+_4aa.height+", w:"+_4b4+" }","","2.0"),_4aa.h=_4aa.height);var _4b6=[];function push(_4b7,_4b8){_4b6.push({aroundCorner:_4b7,corner:_4b8,pos:{x:{"L":x,"R":x+_4b4,"M":x+(_4b4>>1)}[_4b7.charAt(1)],y:{"T":y,"B":y+_4b5,"M":y+(_4b5>>1)}[_4b7.charAt(0)]}});};_488.forEach(_4a7,function(pos){var ltr=_4a8;switch(pos){case "above-centered":push("TM","BM");break;case "below-centered":push("BM","TM");break;case "after-centered":ltr=!ltr;case "before-centered":push(ltr?"ML":"MR",ltr?"MR":"ML");break;case "after":ltr=!ltr;case "before":push(ltr?"TL":"TR",ltr?"TR":"TL");push(ltr?"BL":"BR",ltr?"BR":"BL");break;case "below-alt":ltr=!ltr;case "below":push(ltr?"BL":"BR",ltr?"TL":"TR");push(ltr?"BR":"BL",ltr?"TR":"TL");break;case "above-alt":ltr=!ltr;case "above":push(ltr?"TL":"TR",ltr?"BL":"BR");push(ltr?"TR":"TL",ltr?"BR":"BL");break;default:push(pos.aroundCorner,pos.corner);}});var _4b9=_48e(node,_4b6,_4a9,{w:_4b4,h:_4b5});_4b9.aroundNodePos=_4aa;return _4b9;}};return _48d.place=_4a0;});},"dijit/Viewport":function(){define(["dojo/Evented","dojo/on","dojo/domReady","dojo/sniff","dojo/window"],function(_4ba,on,_4bb,has,_4bc){var _4bd=new _4ba();var _4be;_4bb(function(){var _4bf=_4bc.getBox();_4bd._rlh=on(window,"resize",function(){var _4c0=_4bc.getBox();if(_4bf.h==_4c0.h&&_4bf.w==_4c0.w){return;}_4bf=_4c0;_4bd.emit("resize");});if(has("ie")==8){var _4c1=screen.deviceXDPI;setInterval(function(){if(screen.deviceXDPI!=_4c1){_4c1=screen.deviceXDPI;_4bd.emit("resize");}},500);}if(has("ios")){on(document,"focusin",function(evt){_4be=evt.target;});on(document,"focusout",function(evt){_4be=null;});}});_4bd.getEffectiveBox=function(doc){var box=_4bc.getBox(doc);var tag=_4be&&_4be.tagName&&_4be.tagName.toLowerCase();if(has("ios")&&_4be&&!_4be.readOnly&&(tag=="textarea"||(tag=="input"&&/^(color|email|number|password|search|tel|text|url)$/.test(_4be.type)))){box.h*=(orientation==0||orientation==180?0.66:0.4);var rect=_4be.getBoundingClientRect();box.h=Math.max(box.h,rect.top+rect.height);}return box;};return _4bd;});},"dijit/_base/popup":function(){define(["dojo/dom-class","dojo/_base/window","../popup","../BackgroundIframe"],function(_4c2,win,_4c3){var _4c4=_4c3._createWrapper;_4c3._createWrapper=function(_4c5){if(!_4c5.declaredClass){_4c5={_popupWrapper:(_4c5.parentNode&&_4c2.contains(_4c5.parentNode,"dijitPopup"))?_4c5.parentNode:null,domNode:_4c5,destroy:function(){},ownerDocument:_4c5.ownerDocument,ownerDocumentBody:win.body(_4c5.ownerDocument)};}return _4c4.call(this,_4c5);};var _4c6=_4c3.open;_4c3.open=function(args){if(args.orient&&typeof args.orient!="string"&&!("length" in args.orient)){var ary=[];for(var key in args.orient){ary.push({aroundCorner:key,corner:args.orient[key]});}args.orient=ary;}return _4c6.call(this,args);};return _4c3;});},"dijit/popup":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","./place","./BackgroundIframe","./Viewport","./main","dojo/touch"],function(_4c7,_4c8,_4c9,dom,_4ca,_4cb,_4cc,_4cd,has,keys,lang,on,_4ce,_4cf,_4d0,_4d1){function _4d2(){if(this._popupWrapper){_4cb.destroy(this._popupWrapper);delete this._popupWrapper;}};var _4d3=_4c9(null,{_stack:[],_beginZIndex:1000,_idGen:1,_repositionAll:function(){if(this._firstAroundNode){var _4d4=this._firstAroundPosition,_4d5=_4cc.position(this._firstAroundNode,true),dx=_4d5.x-_4d4.x,dy=_4d5.y-_4d4.y;if(dx||dy){this._firstAroundPosition=_4d5;for(var i=0;i<this._stack.length;i++){var _4d6=this._stack[i].wrapper.style;_4d6.top=(parseFloat(_4d6.top)+dy)+"px";if(_4d6.right=="auto"){_4d6.left=(parseFloat(_4d6.left)+dx)+"px";}else{_4d6.right=(parseFloat(_4d6.right)-dx)+"px";}}}this._aroundMoveListener=setTimeout(lang.hitch(this,"_repositionAll"),dx||dy?10:50);}},_createWrapper:function(_4d7){var _4d8=_4d7._popupWrapper,node=_4d7.domNode;if(!_4d8){_4d8=_4cb.create("div",{"class":"dijitPopup",style:{display:"none"},role:"region","aria-label":_4d7["aria-label"]||_4d7.label||_4d7.name||_4d7.id},_4d7.ownerDocumentBody);_4d8.appendChild(node);var s=node.style;s.display="";s.visibility="";s.position="";s.top="0px";_4d7._popupWrapper=_4d8;_4c8.after(_4d7,"destroy",_4d2,true);if("ontouchend" in document){on(_4d8,"touchend",function(evt){if(!/^(input|button|textarea)$/i.test(evt.target.tagName)){evt.preventDefault();}});}_4d8.dojoClick=true;}return _4d8;},moveOffScreen:function(_4d9){var _4da=this._createWrapper(_4d9);var ltr=_4cc.isBodyLtr(_4d9.ownerDocument),_4db={visibility:"hidden",top:"-9999px",display:""};_4db[ltr?"left":"right"]="-9999px";_4db[ltr?"right":"left"]="auto";_4cd.set(_4da,_4db);return _4da;},hide:function(_4dc){var _4dd=this._createWrapper(_4dc);_4cd.set(_4dd,{display:"none",height:"auto",overflowY:"visible",border:""});var node=_4dc.domNode;if("_originalStyle" in node){node.style.cssText=node._originalStyle;}},getTopPopup:function(){var _4de=this._stack;for(var pi=_4de.length-1;pi>0&&_4de[pi].parent===_4de[pi-1].widget;pi--){}return _4de[pi];},open:function(args){var _4df=this._stack,_4e0=args.popup,node=_4e0.domNode,_4e1=args.orient||["below","below-alt","above","above-alt"],ltr=args.parent?args.parent.isLeftToRight():_4cc.isBodyLtr(_4e0.ownerDocument),_4e2=args.around,id=(args.around&&args.around.id)?(args.around.id+"_dropdown"):("popup_"+this._idGen++);while(_4df.length&&(!args.parent||!dom.isDescendant(args.parent.domNode,_4df[_4df.length-1].widget.domNode))){this.close(_4df[_4df.length-1].widget);}var _4e3=this.moveOffScreen(_4e0);if(_4e0.startup&&!_4e0._started){_4e0.startup();}var _4e4,_4e5=_4cc.position(node);if("maxHeight" in args&&args.maxHeight!=-1){_4e4=args.maxHeight||Infinity;}else{var _4e6=_4d0.getEffectiveBox(this.ownerDocument),_4e7=_4e2?_4cc.position(_4e2,false):{y:args.y-(args.padding||0),h:(args.padding||0)*2};_4e4=Math.floor(Math.max(_4e7.y,_4e6.h-(_4e7.y+_4e7.h)));}if(_4e5.h>_4e4){var cs=_4cd.getComputedStyle(node),_4e8=cs.borderLeftWidth+" "+cs.borderLeftStyle+" "+cs.borderLeftColor;_4cd.set(_4e3,{overflowY:"scroll",height:_4e4+"px",border:_4e8});node._originalStyle=node.style.cssText;node.style.border="none";}_4ca.set(_4e3,{id:id,style:{zIndex:this._beginZIndex+_4df.length},"class":"dijitPopup "+(_4e0.baseClass||_4e0["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:args.parent?args.parent.id:""});if(_4df.length==0&&_4e2){this._firstAroundNode=_4e2;this._firstAroundPosition=_4cc.position(_4e2,true);this._aroundMoveListener=setTimeout(lang.hitch(this,"_repositionAll"),50);}if(has("config-bgIframe")&&!_4e0.bgIframe){_4e0.bgIframe=new _4cf(_4e3);}var _4e9=_4e0.orient?lang.hitch(_4e0,"orient"):null,best=_4e2?_4ce.around(_4e3,_4e2,_4e1,ltr,_4e9):_4ce.at(_4e3,args,_4e1=="R"?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],args.padding,_4e9);_4e3.style.visibility="visible";node.style.visibility="visible";var _4ea=[];_4ea.push(on(_4e3,"keydown",lang.hitch(this,function(evt){if(evt.keyCode==keys.ESCAPE&&args.onCancel){evt.stopPropagation();evt.preventDefault();args.onCancel();}else{if(evt.keyCode==keys.TAB){evt.stopPropagation();evt.preventDefault();var _4eb=this.getTopPopup();if(_4eb&&_4eb.onCancel){_4eb.onCancel();}}}})));if(_4e0.onCancel&&args.onCancel){_4ea.push(_4e0.on("cancel",args.onCancel));}_4ea.push(_4e0.on(_4e0.onExecute?"execute":"change",lang.hitch(this,function(){var _4ec=this.getTopPopup();if(_4ec&&_4ec.onExecute){_4ec.onExecute();}})));_4df.push({widget:_4e0,wrapper:_4e3,parent:args.parent,onExecute:args.onExecute,onCancel:args.onCancel,onClose:args.onClose,handlers:_4ea});if(_4e0.onOpen){_4e0.onOpen(best);}return best;},close:function(_4ed){var _4ee=this._stack;while((_4ed&&_4c7.some(_4ee,function(elem){return elem.widget==_4ed;}))||(!_4ed&&_4ee.length)){var top=_4ee.pop(),_4ef=top.widget,_4f0=top.onClose;if(_4ef.bgIframe){_4ef.bgIframe.destroy();delete _4ef.bgIframe;}if(_4ef.onClose){_4ef.onClose();}var h;while(h=top.handlers.pop()){h.remove();}if(_4ef&&_4ef.domNode){this.hide(_4ef);}if(_4f0){_4f0();}}if(_4ee.length==0&&this._aroundMoveListener){clearTimeout(this._aroundMoveListener);this._firstAroundNode=this._firstAroundPosition=this._aroundMoveListener=null;}}});return (_4d1.popup=new _4d3());});},"dijit/BackgroundIframe":function(){define(["require","./main","dojo/_base/config","dojo/dom-construct","dojo/dom-style","dojo/_base/lang","dojo/on","dojo/sniff"],function(_4f1,_4f2,_4f3,_4f4,_4f5,lang,on,has){has.add("config-bgIframe",(has("ie")||has("trident"))&&!/IEMobile\/10\.0/.test(navigator.userAgent));var _4f6=new function(){var _4f7=[];this.pop=function(){var _4f8;if(_4f7.length){_4f8=_4f7.pop();_4f8.style.display="";}else{if(has("ie")<9){var burl=_4f3["dojoBlankHtmlUrl"]||_4f1.toUrl("dojo/resources/blank.html")||"javascript:\"\"";var html="<iframe src='"+burl+"' role='presentation'"+" style='position: absolute; left: 0px; top: 0px;"+"z-index: -1; filter:Alpha(Opacity=\"0\");'>";_4f8=document.createElement(html);}else{_4f8=_4f4.create("iframe");_4f8.src="javascript:\"\"";_4f8.className="dijitBackgroundIframe";_4f8.setAttribute("role","presentation");_4f5.set(_4f8,"opacity",0.1);}_4f8.tabIndex=-1;}return _4f8;};this.push=function(_4f9){_4f9.style.display="none";_4f7.push(_4f9);};}();_4f2.BackgroundIframe=function(node){if(!node.id){throw new Error("no id");}if(has("config-bgIframe")){var _4fa=(this.iframe=_4f6.pop());node.appendChild(_4fa);if(has("ie")<7||has("quirks")){this.resize(node);this._conn=on(node,"resize",lang.hitch(this,"resize",node));}else{_4f5.set(_4fa,{width:"100%",height:"100%"});}}};lang.extend(_4f2.BackgroundIframe,{resize:function(node){if(this.iframe){_4f5.set(this.iframe,{width:node.offsetWidth+"px",height:node.offsetHeight+"px"});}},destroy:function(){if(this._conn){this._conn.remove();this._conn=null;}if(this.iframe){this.iframe.parentNode.removeChild(this.iframe);_4f6.push(this.iframe);delete this.iframe;}}});return _4f2.BackgroundIframe;});},"dijit/_base/scroll":function(){define(["dojo/window","../main"],function(_4fb,_4fc){_4fc.scrollIntoView=function(node,pos){_4fb.scrollIntoView(node,pos);};});},"dijit/_base/sniff":function(){define(["dojo/uacss"],function(){});},"dijit/_base/typematic":function(){define(["../typematic"],function(){});},"dijit/typematic":function(){define(["dojo/_base/array","dojo/_base/connect","dojo/_base/lang","dojo/on","dojo/sniff","./main"],function(_4fd,_4fe,lang,on,has,_4ff){var _500=(_4ff.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=Math.max(this._currentTimeout<0?this._initialDelay:(this._subsequentDelay>1?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay)),this._minDelay);this._timer=setTimeout(lang.hitch(this,"_fireEventAndReload"),this._currentTimeout);},trigger:function(evt,_501,node,_502,obj,_503,_504,_505){if(obj!=this._obj){this.stop();this._initialDelay=_504||500;this._subsequentDelay=_503||0.9;this._minDelay=_505||10;this._obj=obj;this._node=node;this._currentTimeout=-1;this._count=-1;this._callback=lang.hitch(_501,_502);this._evt={faux:true};for(var attr in evt){if(attr!="layerX"&&attr!="layerY"){var v=evt[attr];if(typeof v!="function"&&typeof v!="undefined"){this._evt[attr]=v;}}}this._fireEventAndReload();}},stop:function(){if(this._timer){clearTimeout(this._timer);this._timer=null;}if(this._obj){this._callback(-1,this._node,this._evt);this._obj=null;}},addKeyListener:function(node,_506,_507,_508,_509,_50a,_50b){var type="keyCode" in _506?"keydown":"charCode" in _506?"keypress":_4fe._keypress,attr="keyCode" in _506?"keyCode":"charCode" in _506?"charCode":"charOrCode";var _50c=[on(node,type,lang.hitch(this,function(evt){if(evt[attr]==_506[attr]&&(_506.ctrlKey===undefined||_506.ctrlKey==evt.ctrlKey)&&(_506.altKey===undefined||_506.altKey==evt.altKey)&&(_506.metaKey===undefined||_506.metaKey==(evt.metaKey||false))&&(_506.shiftKey===undefined||_506.shiftKey==evt.shiftKey)){evt.stopPropagation();evt.preventDefault();_500.trigger(evt,_507,node,_508,_506,_509,_50a,_50b);}else{if(_500._obj==_506){_500.stop();}}})),on(node,"keyup",lang.hitch(this,function(){if(_500._obj==_506){_500.stop();}}))];return {remove:function(){_4fd.forEach(_50c,function(h){h.remove();});}};},addMouseListener:function(node,_50d,_50e,_50f,_510,_511){var _512=[on(node,"mousedown",lang.hitch(this,function(evt){evt.preventDefault();_500.trigger(evt,_50d,node,_50e,node,_50f,_510,_511);})),on(node,"mouseup",lang.hitch(this,function(evt){if(this._obj){evt.preventDefault();}_500.stop();})),on(node,"mouseout",lang.hitch(this,function(evt){if(this._obj){evt.preventDefault();}_500.stop();})),on(node,"dblclick",lang.hitch(this,function(evt){evt.preventDefault();if(has("ie")<9){_500.trigger(evt,_50d,node,_50e,node,_50f,_510,_511);setTimeout(lang.hitch(this,_500.stop),50);}}))];return {remove:function(){_4fd.forEach(_512,function(h){h.remove();});}};},addListener:function(_513,_514,_515,_516,_517,_518,_519,_51a){var _51b=[this.addKeyListener(_514,_515,_516,_517,_518,_519,_51a),this.addMouseListener(_513,_516,_517,_518,_519,_51a)];return {remove:function(){_4fd.forEach(_51b,function(h){h.remove();});}};}});return _500;});},"dijit/_base/wai":function(){define(["dojo/dom-attr","dojo/_base/lang","../main","../hccss"],function(_51c,lang,_51d){var _51e={hasWaiRole:function(elem,role){var _51f=this.getWaiRole(elem);return role?(_51f.indexOf(role)>-1):(_51f.length>0);},getWaiRole:function(elem){return lang.trim((_51c.get(elem,"role")||"").replace("wairole:",""));},setWaiRole:function(elem,role){_51c.set(elem,"role",role);},removeWaiRole:function(elem,role){var _520=_51c.get(elem,"role");if(!_520){return;}if(role){var t=lang.trim((" "+_520+" ").replace(" "+role+" "," "));_51c.set(elem,"role",t);}else{elem.removeAttribute("role");}},hasWaiState:function(elem,_521){return elem.hasAttribute?elem.hasAttribute("aria-"+_521):!!elem.getAttribute("aria-"+_521);},getWaiState:function(elem,_522){return elem.getAttribute("aria-"+_522)||"";},setWaiState:function(elem,_523,_524){elem.setAttribute("aria-"+_523,_524);},removeWaiState:function(elem,_525){elem.removeAttribute("aria-"+_525);}};lang.mixin(_51d,_51e);return _51d;});},"dijit/hccss":function(){define(["dojo/dom-class","dojo/hccss","dojo/domReady","dojo/_base/window"],function(_526,has,_527,win){_527(function(){if(has("highcontrast")){_526.add(win.body(),"dijit_a11y");}});return has;});},"dojo/hccss":function(){define(["require","./_base/config","./dom-class","./dom-style","./has","./domReady","./_base/window"],function(_528,_529,_52a,_52b,has,_52c,win){has.add("highcontrast",function(){var div=win.doc.createElement("div");try{div.style.cssText="border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;"+"background-image: url(\""+(_529.blankGif||_528.toUrl("./resources/blank.gif"))+"\");";win.body().appendChild(div);var cs=_52b.getComputedStyle(div),_52d=cs.backgroundImage;return cs.borderTopColor==cs.borderRightColor||(_52d&&(_52d=="none"||_52d=="url(invalid-url:)"));}catch(e){console.warn("hccss: exception detecting high-contrast mode, document is likely hidden: "+e.toString());return false;}finally{if(has("ie")<=8){div.outerHTML="";}else{win.body().removeChild(div);}}});_52c(function(){if(has("highcontrast")){_52a.add(win.body(),"dj_a11y");}});return has;});},"dijit/_base/window":function(){define(["dojo/window","../main"],function(_52e,_52f){_52f.getDocumentWindow=function(doc){return _52e.get(doc);};});},"dijit/_Widget":function(){define(["dojo/aspect","dojo/_base/config","dojo/_base/connect","dojo/_base/declare","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/ready","./registry","./_WidgetBase","./_OnDijitClickMixin","./_FocusMixin","dojo/uacss","./hccss"],function(_530,_531,_532,_533,has,_534,lang,_535,_536,_537,_538,_539,_53a){function _53b(){};function _53c(_53d){return function(obj,_53e,_53f,_540){if(obj&&typeof _53e=="string"&&obj[_53e]==_53b){return obj.on(_53e.substring(2).toLowerCase(),lang.hitch(_53f,_540));}return _53d.apply(_532,arguments);};};_530.around(_532,"connect",_53c);if(_534.connect){_530.around(_534,"connect",_53c);}var _541=_533("dijit._Widget",[_538,_539,_53a],{onClick:_53b,onDblClick:_53b,onKeyDown:_53b,onKeyPress:_53b,onKeyUp:_53b,onMouseDown:_53b,onMouseMove:_53b,onMouseOut:_53b,onMouseOver:_53b,onMouseLeave:_53b,onMouseEnter:_53b,onMouseUp:_53b,constructor:function(_542){this._toConnect={};for(var name in _542){if(this[name]===_53b){this._toConnect[name.replace(/^on/,"").toLowerCase()]=_542[name];delete _542[name];}}},postCreate:function(){this.inherited(arguments);for(var name in this._toConnect){this.on(name,this._toConnect[name]);}delete this._toConnect;},on:function(type,func){if(this[this._onMap(type)]===_53b){return _532.connect(this.domNode,type.toLowerCase(),this,func);}return this.inherited(arguments);},_setFocusedAttr:function(val){this._focused=val;this._set("focused",val);},setAttribute:function(attr,_543){_534.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(attr,_543);},attr:function(name,_544){var args=arguments.length;if(args>=2||typeof name==="object"){return this.set.apply(this,arguments);}else{return this.get(name);}},getDescendants:function(){_534.deprecated(this.declaredClass+"::getDescendants() is deprecated. Use getChildren() instead.","","2.0");return this.containerNode?_535("[widgetId]",this.containerNode).map(_537.byNode):[];},_onShow:function(){this.onShow();},onShow:function(){},onHide:function(){},onClose:function(){return true;}});if(has("dijit-legacy-requires")){_536(0,function(){var _545=["dijit/_base"];require(_545);});}return _541;});},"dijit/_WidgetBase":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/config","dojo/_base/connect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/ready","dojo/Stateful","dojo/topic","dojo/_base/window","./Destroyable","dojo/has!dojo-bidi?./_BidiMixin","./registry"],function(_546,_547,_548,_549,_54a,_54b,dom,_54c,_54d,_54e,_54f,_550,has,_551,lang,on,_552,_553,_554,win,_555,_556,_557){has.add("dijit-legacy-requires",!_551.isAsync);has.add("dojo-bidi",false);if(has("dijit-legacy-requires")){_552(0,function(){var _558=["dijit/_base/manager"];_546(_558);});}var _559={};function _55a(obj){var ret={};for(var attr in obj){ret[attr.toLowerCase()]=true;}return ret;};function _55b(attr){return function(val){_54c[val?"set":"remove"](this.domNode,attr,val);this._set(attr,val);};};function _55c(a,b){return a===b||(a!==a&&b!==b);};var _55d=_54b("dijit._WidgetBase",[_553,_555],{id:"",_setIdAttr:"domNode",lang:"",_setLangAttr:_55b("lang"),dir:"",_setDirAttr:_55b("dir"),"class":"",_setClassAttr:{node:"domNode",type:"class"},_setTypeAttr:null,style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,ownerDocument:null,_setOwnerDocumentAttr:function(val){this._set("ownerDocument",val);},attributeMap:{},_blankGif:_549.blankGif||_546.toUrl("dojo/resources/blank.gif"),textDir:"",_introspect:function(){var ctor=this.constructor;if(!ctor._setterAttrs){var _55e=ctor.prototype,_55f=ctor._setterAttrs=[],_560=(ctor._onMap={});for(var name in _55e.attributeMap){_55f.push(name);}for(name in _55e){if(/^on/.test(name)){_560[name.substring(2).toLowerCase()]=name;}if(/^_set[A-Z](.*)Attr$/.test(name)){name=name.charAt(4).toLowerCase()+name.substr(5,name.length-9);if(!_55e.attributeMap||!(name in _55e.attributeMap)){_55f.push(name);}}}}},postscript:function(_561,_562){this.create(_561,_562);},create:function(_563,_564){this._introspect();this.srcNodeRef=dom.byId(_564);this._connects=[];this._supportingWidgets=[];if(this.srcNodeRef&&this.srcNodeRef.id&&(typeof this.srcNodeRef.id=="string")){this.id=this.srcNodeRef.id;}if(_563){this.params=_563;lang.mixin(this,_563);}this.postMixInProperties();if(!this.id){this.id=_557.getUniqueId(this.declaredClass.replace(/\./g,"_"));if(this.params){delete this.params.id;}}this.ownerDocument=this.ownerDocument||(this.srcNodeRef?this.srcNodeRef.ownerDocument:document);this.ownerDocumentBody=win.body(this.ownerDocument);_557.add(this);this.buildRendering();var _565;if(this.domNode){this._applyAttributes();var _566=this.srcNodeRef;if(_566&&_566.parentNode&&this.domNode!==_566){_566.parentNode.replaceChild(this.domNode,_566);_565=true;}this.domNode.setAttribute("widgetId",this.id);}this.postCreate();if(_565){delete this.srcNodeRef;}this._created=true;},_applyAttributes:function(){var _567={};for(var key in this.params||{}){_567[key]=this._get(key);}_547.forEach(this.constructor._setterAttrs,function(key){if(!(key in _567)){var val=this._get(key);if(val){this.set(key,val);}}},this);for(key in _567){this.set(key,_567[key]);}},postMixInProperties:function(){},buildRendering:function(){if(!this.domNode){this.domNode=this.srcNodeRef||this.ownerDocument.createElement("div");}if(this.baseClass){var _568=this.baseClass.split(" ");if(!this.isLeftToRight()){_568=_568.concat(_547.map(_568,function(name){return name+"Rtl";}));}_54d.add(this.domNode,_568);}},postCreate:function(){},startup:function(){if(this._started){return;}this._started=true;_547.forEach(this.getChildren(),function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}});},destroyRecursive:function(_569){this._beingDestroyed=true;this.destroyDescendants(_569);this.destroy(_569);},destroy:function(_56a){this._beingDestroyed=true;this.uninitialize();function _56b(w){if(w.destroyRecursive){w.destroyRecursive(_56a);}else{if(w.destroy){w.destroy(_56a);}}};_547.forEach(this._connects,lang.hitch(this,"disconnect"));_547.forEach(this._supportingWidgets,_56b);if(this.domNode){_547.forEach(_557.findWidgets(this.domNode,this.containerNode),_56b);}this.destroyRendering(_56a);_557.remove(this.id);this._destroyed=true;},destroyRendering:function(_56c){if(this.bgIframe){this.bgIframe.destroy(_56c);delete this.bgIframe;}if(this.domNode){if(_56c){_54c.remove(this.domNode,"widgetId");}else{_54e.destroy(this.domNode);}delete this.domNode;}if(this.srcNodeRef){if(!_56c){_54e.destroy(this.srcNodeRef);}delete this.srcNodeRef;}},destroyDescendants:function(_56d){_547.forEach(this.getChildren(),function(_56e){if(_56e.destroyRecursive){_56e.destroyRecursive(_56d);}});},uninitialize:function(){return false;},_setStyleAttr:function(_56f){var _570=this.domNode;if(lang.isObject(_56f)){_550.set(_570,_56f);}else{if(_570.style.cssText){_570.style.cssText+="; "+_56f;}else{_570.style.cssText=_56f;}}this._set("style",_56f);},_attrToDom:function(attr,_571,_572){_572=arguments.length>=3?_572:this.attributeMap[attr];_547.forEach(lang.isArray(_572)?_572:[_572],function(_573){var _574=this[_573.node||_573||"domNode"];var type=_573.type||"attribute";switch(type){case "attribute":if(lang.isFunction(_571)){_571=lang.hitch(this,_571);}var _575=_573.attribute?_573.attribute:(/^on[A-Z][a-zA-Z]*$/.test(attr)?attr.toLowerCase():attr);if(_574.tagName){_54c.set(_574,_575,_571);}else{_574.set(_575,_571);}break;case "innerText":_574.innerHTML="";_574.appendChild(this.ownerDocument.createTextNode(_571));break;case "textContent":_574.textContent=_571;break;case "innerHTML":_574.innerHTML=_571;break;case "class":_54d.replace(_574,_571,this[attr]);break;case "toggleClass":_54d.toggle(_574,_573.className||attr,_571);break;}},this);},get:function(name){var _576=this._getAttrNames(name);return this[_576.g]?this[_576.g]():this._get(name);},set:function(name,_577){if(typeof name==="object"){for(var x in name){this.set(x,name[x]);}return this;}var _578=this._getAttrNames(name),_579=this[_578.s];if(lang.isFunction(_579)){var _57a=_579.apply(this,Array.prototype.slice.call(arguments,1));}else{var _57b=this.focusNode&&!lang.isFunction(this.focusNode)?"focusNode":"domNode",tag=this[_57b]&&this[_57b].tagName,_57c=tag&&(_559[tag]||(_559[tag]=_55a(this[_57b]))),map=name in this.attributeMap?this.attributeMap[name]:_578.s in this?this[_578.s]:((_57c&&_578.l in _57c&&typeof _577!="function")||/^aria-|^data-|^role$/.test(name))?_57b:null;if(map!=null){this._attrToDom(name,_577,map);}this._set(name,_577);}return _57a||this;},_attrPairNames:{},_getAttrNames:function(name){var apn=this._attrPairNames;if(apn[name]){return apn[name];}var uc=name.replace(/^[a-z]|-[a-zA-Z]/g,function(c){return c.charAt(c.length-1).toUpperCase();});return (apn[name]={n:name+"Node",s:"_set"+uc+"Attr",g:"_get"+uc+"Attr",l:uc.toLowerCase()});},_set:function(name,_57d){var _57e=this[name];this[name]=_57d;if(this._created&&!_55c(_57e,_57d)){if(this._watchCallbacks){this._watchCallbacks(name,_57e,_57d);}this.emit("attrmodified-"+name,{detail:{prevValue:_57e,newValue:_57d}});}},_get:function(name){return this[name];},emit:function(type,_57f,_580){_57f=_57f||{};if(_57f.bubbles===undefined){_57f.bubbles=true;}if(_57f.cancelable===undefined){_57f.cancelable=true;}if(!_57f.detail){_57f.detail={};}_57f.detail.widget=this;var ret,_581=this["on"+type];if(_581){ret=_581.apply(this,_580?_580:[_57f]);}if(this._started&&!this._beingDestroyed){on.emit(this.domNode,type.toLowerCase(),_57f);}return ret;},on:function(type,func){var _582=this._onMap(type);if(_582){return _548.after(this,_582,func,true);}return this.own(on(this.domNode,type,func))[0];},_onMap:function(type){var ctor=this.constructor,map=ctor._onMap;if(!map){map=(ctor._onMap={});for(var attr in ctor.prototype){if(/^on/.test(attr)){map[attr.replace(/^on/,"").toLowerCase()]=attr;}}}return map[typeof type=="string"&&type.toLowerCase()];},toString:function(){return "[Widget "+this.declaredClass+", "+(this.id||"NO ID")+"]";},getChildren:function(){return this.containerNode?_557.findWidgets(this.containerNode):[];},getParent:function(){return _557.getEnclosingWidget(this.domNode.parentNode);},connect:function(obj,_583,_584){return this.own(_54a.connect(obj,_583,this,_584))[0];},disconnect:function(_585){_585.remove();},subscribe:function(t,_586){return this.own(_554.subscribe(t,lang.hitch(this,_586)))[0];},unsubscribe:function(_587){_587.remove();},isLeftToRight:function(){return this.dir?(this.dir.toLowerCase()=="ltr"):_54f.isBodyLtr(this.ownerDocument);},isFocusable:function(){return this.focus&&(_550.get(this.domNode,"display")!="none");},placeAt:function(_588,_589){var _58a=!_588.tagName&&_557.byId(_588);if(_58a&&_58a.addChild&&(!_589||typeof _589==="number")){_58a.addChild(this,_589);}else{var ref=_58a&&("domNode" in _58a)?(_58a.containerNode&&!/after|before|replace/.test(_589||"")?_58a.containerNode:_58a.domNode):dom.byId(_588,this.ownerDocument);_54e.place(this.domNode,ref,_589);if(!this._started&&(this.getParent()||{})._started){this.startup();}}return this;},defer:function(fcn,_58b){var _58c=setTimeout(lang.hitch(this,function(){if(!_58c){return;}_58c=null;if(!this._destroyed){lang.hitch(this,fcn)();}}),_58b||0);return {remove:function(){if(_58c){clearTimeout(_58c);_58c=null;}return null;}};}});if(has("dojo-bidi")){_55d.extend(_556);}return _55d;});},"dijit/Destroyable":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare"],function(_58d,_58e,_58f){return _58f("dijit.Destroyable",null,{destroy:function(_590){this._destroyed=true;},own:function(){var _591=["destroyRecursive","destroy","remove"];_58d.forEach(arguments,function(_592){var _593;var odh=_58e.before(this,"destroy",function(_594){_592[_593](_594);});var hdhs=[];function _595(){odh.remove();_58d.forEach(hdhs,function(hdh){hdh.remove();});};if(_592.then){_593="cancel";_592.then(_595,_595);}else{_58d.forEach(_591,function(_596){if(typeof _592[_596]==="function"){if(!_593){_593=_596;}hdhs.push(_58e.after(_592,_596,_595,true));}});}},this);return arguments;}});});},"dijit/_OnDijitClickMixin":function(){define(["dojo/on","dojo/_base/array","dojo/keys","dojo/_base/declare","dojo/has","./a11yclick"],function(on,_597,keys,_598,has,_599){var ret=_598("dijit._OnDijitClickMixin",null,{connect:function(obj,_59a,_59b){return this.inherited(arguments,[obj,_59a=="ondijitclick"?_599:_59a,_59b]);}});ret.a11yclick=_599;return ret;});},"dijit/a11yclick":function(){define(["dojo/keys","dojo/mouse","dojo/on","dojo/touch"],function(keys,_59c,on,_59d){function _59e(e){if((e.keyCode===keys.ENTER||e.keyCode===keys.SPACE)&&!/input|button|textarea/i.test(e.target.nodeName)){for(var node=e.target;node;node=node.parentNode){if(node.dojoClick){return true;}}}};var _59f;on(document,"keydown",function(e){if(_59e(e)){_59f=e.target;e.preventDefault();}else{_59f=null;}});on(document,"keyup",function(e){if(_59e(e)&&e.target==_59f){_59f=null;on.emit(e.target,"click",{cancelable:true,bubbles:true,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,altKey:e.altKey,_origType:e.type});}});var _5a0=function(node,_5a1){node.dojoClick=true;return on(node,"click",_5a1);};_5a0.click=_5a0;_5a0.press=function(node,_5a2){var _5a3=on(node,_59d.press,function(evt){if(evt.type=="mousedown"&&!_59c.isLeft(evt)){return;}_5a2(evt);}),_5a4=on(node,"keydown",function(evt){if(evt.keyCode===keys.ENTER||evt.keyCode===keys.SPACE){_5a2(evt);}});return {remove:function(){_5a3.remove();_5a4.remove();}};};_5a0.release=function(node,_5a5){var _5a6=on(node,_59d.release,function(evt){if(evt.type=="mouseup"&&!_59c.isLeft(evt)){return;}_5a5(evt);}),_5a7=on(node,"keyup",function(evt){if(evt.keyCode===keys.ENTER||evt.keyCode===keys.SPACE){_5a5(evt);}});return {remove:function(){_5a6.remove();_5a7.remove();}};};_5a0.move=_59d.move;return _5a0;});},"dijit/_FocusMixin":function(){define(["./focus","./_WidgetBase","dojo/_base/declare","dojo/_base/lang"],function(_5a8,_5a9,_5aa,lang){lang.extend(_5a9,{focused:false,onFocus:function(){},onBlur:function(){},_onFocus:function(){this.onFocus();},_onBlur:function(){this.onBlur();}});return _5aa("dijit._FocusMixin",null,{_focusManager:_5a8});});},"dijit/_TemplatedMixin":function(){define(["dojo/cache","dojo/_base/declare","dojo/dom-construct","dojo/_base/lang","dojo/on","dojo/sniff","dojo/string","./_AttachMixin"],function(_5ab,_5ac,_5ad,lang,on,has,_5ae,_5af){var _5b0=_5ac("dijit._TemplatedMixin",_5af,{templateString:null,templatePath:null,_skipNodeCache:false,searchContainerNode:true,_stringRepl:function(tmpl){var _5b1=this.declaredClass,_5b2=this;return _5ae.substitute(tmpl,this,function(_5b3,key){if(key.charAt(0)=="!"){_5b3=lang.getObject(key.substr(1),false,_5b2);}if(typeof _5b3=="undefined"){throw new Error(_5b1+" template:"+key);}if(_5b3==null){return "";}return key.charAt(0)=="!"?_5b3:this._escapeValue(""+_5b3);},this);},_escapeValue:function(val){return val.replace(/["'<>&]/g,function(val){return {"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#x27;"}[val];});},buildRendering:function(){if(!this._rendered){if(!this.templateString){this.templateString=_5ab(this.templatePath,{sanitize:true});}var _5b4=_5b0.getCachedTemplate(this.templateString,this._skipNodeCache,this.ownerDocument);var node;if(lang.isString(_5b4)){node=_5ad.toDom(this._stringRepl(_5b4),this.ownerDocument);if(node.nodeType!=1){throw new Error("Invalid template: "+_5b4);}}else{node=_5b4.cloneNode(true);}this.domNode=node;}this.inherited(arguments);if(!this._rendered){this._fillContent(this.srcNodeRef);}this._rendered=true;},_fillContent:function(_5b5){var dest=this.containerNode;if(_5b5&&dest){while(_5b5.hasChildNodes()){dest.appendChild(_5b5.firstChild);}}}});_5b0._templateCache={};_5b0.getCachedTemplate=function(_5b6,_5b7,doc){var _5b8=_5b0._templateCache;var key=_5b6;var _5b9=_5b8[key];if(_5b9){try{if(!_5b9.ownerDocument||_5b9.ownerDocument==(doc||document)){return _5b9;}}catch(e){}_5ad.destroy(_5b9);}_5b6=_5ae.trim(_5b6);if(_5b7||_5b6.match(/\$\{([^\}]+)\}/g)){return (_5b8[key]=_5b6);}else{var node=_5ad.toDom(_5b6,doc);if(node.nodeType!=1){throw new Error("Invalid template: "+_5b6);}return (_5b8[key]=node);}};if(has("ie")){on(window,"unload",function(){var _5ba=_5b0._templateCache;for(var key in _5ba){var _5bb=_5ba[key];if(typeof _5bb=="object"){_5ad.destroy(_5bb);}delete _5ba[key];}});}return _5b0;});},"dijit/_AttachMixin":function(){define(["require","dojo/_base/array","dojo/_base/connect","dojo/_base/declare","dojo/_base/lang","dojo/mouse","dojo/on","dojo/touch","./_WidgetBase"],function(_5bc,_5bd,_5be,_5bf,lang,_5c0,on,_5c1,_5c2){var _5c3=lang.delegate(_5c1,{"mouseenter":_5c0.enter,"mouseleave":_5c0.leave,"keypress":_5be._keypress});var _5c4;var _5c5=_5bf("dijit._AttachMixin",null,{constructor:function(){this._attachPoints=[];this._attachEvents=[];},buildRendering:function(){this.inherited(arguments);this._attachTemplateNodes(this.domNode);this._beforeFillContent();},_beforeFillContent:function(){},_attachTemplateNodes:function(_5c6){var node=_5c6;while(true){if(node.nodeType==1&&(this._processTemplateNode(node,function(n,p){return n.getAttribute(p);},this._attach)||this.searchContainerNode)&&node.firstChild){node=node.firstChild;}else{if(node==_5c6){return;}while(!node.nextSibling){node=node.parentNode;if(node==_5c6){return;}}node=node.nextSibling;}}},_processTemplateNode:function(_5c7,_5c8,_5c9){var ret=true;var _5ca=this.attachScope||this,_5cb=_5c8(_5c7,"dojoAttachPoint")||_5c8(_5c7,"data-dojo-attach-point");if(_5cb){var _5cc,_5cd=_5cb.split(/\s*,\s*/);while((_5cc=_5cd.shift())){if(lang.isArray(_5ca[_5cc])){_5ca[_5cc].push(_5c7);}else{_5ca[_5cc]=_5c7;}ret=(_5cc!="containerNode");this._attachPoints.push(_5cc);}}var _5ce=_5c8(_5c7,"dojoAttachEvent")||_5c8(_5c7,"data-dojo-attach-event");if(_5ce){var _5cf,_5d0=_5ce.split(/\s*,\s*/);var trim=lang.trim;while((_5cf=_5d0.shift())){if(_5cf){var _5d1=null;if(_5cf.indexOf(":")!=-1){var _5d2=_5cf.split(":");_5cf=trim(_5d2[0]);_5d1=trim(_5d2[1]);}else{_5cf=trim(_5cf);}if(!_5d1){_5d1=_5cf;}this._attachEvents.push(_5c9(_5c7,_5cf,lang.hitch(_5ca,_5d1)));}}}return ret;},_attach:function(node,type,func){type=type.replace(/^on/,"").toLowerCase();if(type=="dijitclick"){type=_5c4||(_5c4=_5bc("./a11yclick"));}else{type=_5c3[type]||type;}return on(node,type,func);},_detachTemplateNodes:function(){var _5d3=this.attachScope||this;_5bd.forEach(this._attachPoints,function(_5d4){delete _5d3[_5d4];});this._attachPoints=[];_5bd.forEach(this._attachEvents,function(_5d5){_5d5.remove();});this._attachEvents=[];},destroyRendering:function(){this._detachTemplateNodes();this.inherited(arguments);}});lang.extend(_5c2,{dojoAttachEvent:"",dojoAttachPoint:""});return _5c5;});},"dijit/_Container":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-construct","dojo/_base/kernel"],function(_5d6,_5d7,_5d8,_5d9){return _5d7("dijit._Container",null,{buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}},addChild:function(_5da,_5db){var _5dc=this.containerNode;if(_5db>0){_5dc=_5dc.firstChild;while(_5db>0){if(_5dc.nodeType==1){_5db--;}_5dc=_5dc.nextSibling;}if(_5dc){_5db="before";}else{_5dc=this.containerNode;_5db="last";}}_5d8.place(_5da.domNode,_5dc,_5db);if(this._started&&!_5da._started){_5da.startup();}},removeChild:function(_5dd){if(typeof _5dd=="number"){_5dd=this.getChildren()[_5dd];}if(_5dd){var node=_5dd.domNode;if(node&&node.parentNode){node.parentNode.removeChild(node);}}},hasChildren:function(){return this.getChildren().length>0;},_getSiblingOfChild:function(_5de,dir){var _5df=this.getChildren(),idx=_5d6.indexOf(_5df,_5de);return _5df[idx+dir];},getIndexOfChild:function(_5e0){return _5d6.indexOf(this.getChildren(),_5e0);}});});},"dijit/layout/_LayoutWidget":function(){define(["dojo/_base/lang","../_Widget","../_Container","../_Contained","../Viewport","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style"],function(lang,_5e1,_5e2,_5e3,_5e4,_5e5,_5e6,_5e7,_5e8){return _5e5("dijit.layout._LayoutWidget",[_5e1,_5e2,_5e3],{baseClass:"dijitLayoutContainer",isLayoutContainer:true,_setTitleAttr:null,buildRendering:function(){this.inherited(arguments);_5e6.add(this.domNode,"dijitContainer");},startup:function(){if(this._started){return;}this.inherited(arguments);var _5e9=this.getParent&&this.getParent();if(!(_5e9&&_5e9.isLayoutContainer)){this.resize();this.own(_5e4.on("resize",lang.hitch(this,"resize")));}},resize:function(_5ea,_5eb){var node=this.domNode;if(_5ea){_5e7.setMarginBox(node,_5ea);}var mb=_5eb||{};lang.mixin(mb,_5ea||{});if(!("h" in mb)||!("w" in mb)){mb=lang.mixin(_5e7.getMarginBox(node),mb);}var cs=_5e8.getComputedStyle(node);var me=_5e7.getMarginExtents(node,cs);var be=_5e7.getBorderExtents(node,cs);var bb=(this._borderBox={w:mb.w-(me.w+be.w),h:mb.h-(me.h+be.h)});var pe=_5e7.getPadExtents(node,cs);this._contentBox={l:_5e8.toPixelValue(node,cs.paddingLeft),t:_5e8.toPixelValue(node,cs.paddingTop),w:bb.w-pe.w,h:bb.h-pe.h};this.layout();},layout:function(){},_setupChild:function(_5ec){var cls=this.baseClass+"-child "+(_5ec.baseClass?this.baseClass+"-"+_5ec.baseClass:"");_5e6.add(_5ec.domNode,cls);},addChild:function(_5ed,_5ee){this.inherited(arguments);if(this._started){this._setupChild(_5ed);}},removeChild:function(_5ef){var cls=this.baseClass+"-child"+(_5ef.baseClass?" "+this.baseClass+"-"+_5ef.baseClass:"");_5e6.remove(_5ef.domNode,cls);this.inherited(arguments);}});});},"dijit/_Contained":function(){define(["dojo/_base/declare","./registry"],function(_5f0,_5f1){return _5f0("dijit._Contained",null,{_getSibling:function(_5f2){var p=this.getParent();return (p&&p._getSiblingOfChild&&p._getSiblingOfChild(this,_5f2=="previous"?-1:1))||null;},getPreviousSibling:function(){return this._getSibling("previous");},getNextSibling:function(){return this._getSibling("next");},getIndexInParent:function(){var p=this.getParent();if(!p||!p.getIndexOfChild){return -1;}return p.getIndexOfChild(this);}});});},"dijit/form/_FormWidget":function(){define(["dojo/_base/declare","dojo/sniff","dojo/_base/kernel","dojo/ready","../_Widget","../_CssStateMixin","../_TemplatedMixin","./_FormWidgetMixin"],function(_5f3,has,_5f4,_5f5,_5f6,_5f7,_5f8,_5f9){if(has("dijit-legacy-requires")){_5f5(0,function(){var _5fa=["dijit/form/_FormValueWidget"];require(_5fa);});}return _5f3("dijit.form._FormWidget",[_5f6,_5f8,_5f7,_5f9],{setDisabled:function(_5fb){_5f4.deprecated("setDisabled("+_5fb+") is deprecated. Use set('disabled',"+_5fb+") instead.","","2.0");this.set("disabled",_5fb);},setValue:function(_5fc){_5f4.deprecated("dijit.form._FormWidget:setValue("+_5fc+") is deprecated. Use set('value',"+_5fc+") instead.","","2.0");this.set("value",_5fc);},getValue:function(){_5f4.deprecated(this.declaredClass+"::getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},postMixInProperties:function(){this.nameAttrSetting=(this.name&&!has("msapp"))?("name=\""+this.name.replace(/"/g,"&quot;")+"\""):"";this.inherited(arguments);}});});},"dijit/_CssStateMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/has","dojo/_base/lang","dojo/on","dojo/domReady","dojo/touch","dojo/_base/window","./a11yclick","./registry"],function(_5fd,_5fe,dom,_5ff,has,lang,on,_600,_601,win,_602,_603){var _604=_5fe("dijit._CssStateMixin",[],{hovering:false,active:false,_applyAttributes:function(){this.inherited(arguments);_5fd.forEach(["disabled","readOnly","checked","selected","focused","state","hovering","active","_opened"],function(attr){this.watch(attr,lang.hitch(this,"_setStateClass"));},this);for(var ap in this.cssStateNodes||{}){this._trackMouseState(this[ap],this.cssStateNodes[ap]);}this._trackMouseState(this.domNode,this.baseClass);this._setStateClass();},_cssMouseEvent:function(_605){if(!this.disabled){switch(_605.type){case "mouseover":case "MSPointerOver":case "pointerover":this._set("hovering",true);this._set("active",this._mouseDown);break;case "mouseout":case "MSPointerOut":case "pointerout":this._set("hovering",false);this._set("active",false);break;case "mousedown":case "touchstart":case "MSPointerDown":case "pointerdown":case "keydown":this._set("active",true);break;case "mouseup":case "dojotouchend":case "MSPointerUp":case "pointerup":case "keyup":this._set("active",false);break;}}},_setStateClass:function(){var _606=this.baseClass.split(" ");function _607(_608){_606=_606.concat(_5fd.map(_606,function(c){return c+_608;}),"dijit"+_608);};if(!this.isLeftToRight()){_607("Rtl");}var _609=this.checked=="mixed"?"Mixed":(this.checked?"Checked":"");if(this.checked){_607(_609);}if(this.state){_607(this.state);}if(this.selected){_607("Selected");}if(this._opened){_607("Opened");}if(this.disabled){_607("Disabled");}else{if(this.readOnly){_607("ReadOnly");}else{if(this.active){_607("Active");}else{if(this.hovering){_607("Hover");}}}}if(this.focused){_607("Focused");}var tn=this.stateNode||this.domNode,_60a={};_5fd.forEach(tn.className.split(" "),function(c){_60a[c]=true;});if("_stateClasses" in this){_5fd.forEach(this._stateClasses,function(c){delete _60a[c];});}_5fd.forEach(_606,function(c){_60a[c]=true;});var _60b=[];for(var c in _60a){_60b.push(c);}tn.className=_60b.join(" ");this._stateClasses=_606;},_subnodeCssMouseEvent:function(node,_60c,evt){if(this.disabled||this.readOnly){return;}function _60d(_60e){_5ff.toggle(node,_60c+"Hover",_60e);};function _60f(_610){_5ff.toggle(node,_60c+"Active",_610);};function _611(_612){_5ff.toggle(node,_60c+"Focused",_612);};switch(evt.type){case "mouseover":case "MSPointerOver":case "pointerover":_60d(true);break;case "mouseout":case "MSPointerOut":case "pointerout":_60d(false);_60f(false);break;case "mousedown":case "touchstart":case "MSPointerDown":case "pointerdown":case "keydown":_60f(true);break;case "mouseup":case "MSPointerUp":case "pointerup":case "dojotouchend":case "keyup":_60f(false);break;case "focus":case "focusin":_611(true);break;case "blur":case "focusout":_611(false);break;}},_trackMouseState:function(node,_613){node._cssState=_613;}});_600(function(){function _614(evt,_615,_616){if(_616&&dom.isDescendant(_616,_615)){return;}for(var node=_615;node&&node!=_616;node=node.parentNode){if(node._cssState){var _617=_603.getEnclosingWidget(node);if(_617){if(node==_617.domNode){_617._cssMouseEvent(evt);}else{_617._subnodeCssMouseEvent(node,node._cssState,evt);}}}}};var body=win.body(),_618;on(body,_601.over,function(evt){_614(evt,evt.target,evt.relatedTarget);});on(body,_601.out,function(evt){_614(evt,evt.target,evt.relatedTarget);});on(body,_602.press,function(evt){_618=evt.target;_614(evt,_618);});on(body,_602.release,function(evt){_614(evt,_618);_618=null;});on(body,"focusin, focusout",function(evt){var node=evt.target;if(node._cssState&&!node.getAttribute("widgetId")){var _619=_603.getEnclosingWidget(node);if(_619){_619._subnodeCssMouseEvent(node,node._cssState,evt);}}});});return _604;});},"dijit/form/_FormWidgetMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/dom-style","dojo/_base/lang","dojo/mouse","dojo/on","dojo/sniff","dojo/window","../a11y"],function(_61a,_61b,_61c,_61d,lang,_61e,on,has,_61f,a11y){return _61b("dijit.form._FormWidgetMixin",null,{name:"",alt:"",value:"",type:"text","aria-label":"focusNode",tabIndex:"0",_setTabIndexAttr:"focusNode",disabled:false,intermediateChanges:false,scrollOnFocus:true,_setIdAttr:"focusNode",_setDisabledAttr:function(_620){this._set("disabled",_620);if(/^(button|input|select|textarea|optgroup|option|fieldset)$/i.test(this.focusNode.tagName)){_61c.set(this.focusNode,"disabled",_620);if(has("trident")&&"readOnly" in this){_61c.set(this.focusNode,"readonly",_620||this.readOnly);}}else{this.focusNode.setAttribute("aria-disabled",_620?"true":"false");}if(this.valueNode){_61c.set(this.valueNode,"disabled",_620);}if(_620){this._set("hovering",false);this._set("active",false);var _621="tabIndex" in this.attributeMap?this.attributeMap.tabIndex:("_setTabIndexAttr" in this)?this._setTabIndexAttr:"focusNode";_61a.forEach(lang.isArray(_621)?_621:[_621],function(_622){var node=this[_622];if(has("webkit")||a11y.hasDefaultTabStop(node)){node.setAttribute("tabIndex","-1");}else{node.removeAttribute("tabIndex");}},this);}else{if(this.tabIndex!=""){this.set("tabIndex",this.tabIndex);}}},_onFocus:function(by){if(by=="mouse"&&this.isFocusable()){var _623=this.own(on(this.focusNode,"focus",function(){_624.remove();_623.remove();}))[0];var _625=has("pointer-events")?"pointerup":has("MSPointer")?"MSPointerUp":has("touch-events")?"touchend, mouseup":"mouseup";var _624=this.own(on(this.ownerDocumentBody,_625,lang.hitch(this,function(evt){_624.remove();_623.remove();if(this.focused){if(evt.type=="touchend"){this.defer("focus");}else{this.focus();}}})))[0];}if(this.scrollOnFocus){this.defer(function(){_61f.scrollIntoView(this.domNode);});}this.inherited(arguments);},isFocusable:function(){return !this.disabled&&this.focusNode&&(_61d.get(this.domNode,"display")!="none");},focus:function(){if(!this.disabled&&this.focusNode.focus){try{this.focusNode.focus();}catch(e){}}},compare:function(val1,val2){if(typeof val1=="number"&&typeof val2=="number"){return (isNaN(val1)&&isNaN(val2))?0:val1-val2;}else{if(val1>val2){return 1;}else{if(val1<val2){return -1;}else{return 0;}}}},onChange:function(){},_onChangeActive:false,_handleOnChange:function(_626,_627){if(this._lastValueReported==undefined&&(_627===null||!this._onChangeActive)){this._resetValue=this._lastValueReported=_626;}this._pendingOnChange=this._pendingOnChange||(typeof _626!=typeof this._lastValueReported)||(this.compare(_626,this._lastValueReported)!=0);if((this.intermediateChanges||_627||_627===undefined)&&this._pendingOnChange){this._lastValueReported=_626;this._pendingOnChange=false;if(this._onChangeActive){if(this._onChangeHandle){this._onChangeHandle.remove();}this._onChangeHandle=this.defer(function(){this._onChangeHandle=null;this.onChange(_626);});}}},create:function(){this.inherited(arguments);this._onChangeActive=true;},destroy:function(){if(this._onChangeHandle){this._onChangeHandle.remove();this.onChange(this._lastValueReported);}this.inherited(arguments);}});});},"dijit/form/_FormValueWidget":function(){define(["dojo/_base/declare","dojo/sniff","./_FormWidget","./_FormValueMixin"],function(_628,has,_629,_62a){return _628("dijit.form._FormValueWidget",[_629,_62a],{_layoutHackIE7:function(){if(has("ie")==7){var _62b=this.domNode;var _62c=_62b.parentNode;var _62d=_62b.firstChild||_62b;var _62e=_62d.style.filter;var _62f=this;while(_62c&&_62c.clientHeight==0){(function ping(){var _630=_62f.connect(_62c,"onscroll",function(){_62f.disconnect(_630);_62d.style.filter=(new Date()).getMilliseconds();_62f.defer(function(){_62d.style.filter=_62e;});});})();_62c=_62c.parentNode;}}}});});},"dijit/form/_FormValueMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","./_FormWidgetMixin"],function(_631,_632,keys,lang,on,has,_633){return _631("dijit.form._FormValueMixin",_633,{readOnly:false,_setReadOnlyAttr:function(_634){if(has("trident")&&"disabled" in this){_632.set(this.focusNode,"readOnly",_634||this.disabled);}else{_632.set(this.focusNode,"readOnly",_634);}this._set("readOnly",_634);},postCreate:function(){this.inherited(arguments);if(this._resetValue===undefined){this._lastValueReported=this._resetValue=this.value;}},_setValueAttr:function(_635,_636){this._handleOnChange(_635,_636);},_handleOnChange:function(_637,_638){this._set("value",_637);this.inherited(arguments);},undo:function(){this._setValueAttr(this._lastValueReported,false);},reset:function(){this._hasBeenBlurred=false;this._setValueAttr(this._resetValue,true);}});});},"dijit/ColorPalette":function(){define(["require","dojo/text!./templates/ColorPalette.html","./_Widget","./_TemplatedMixin","./_PaletteMixin","./hccss","dojo/i18n","dojo/_base/Color","dojo/_base/declare","dojo/dom-construct","dojo/string","dojo/i18n!dojo/nls/colors","dojo/colors"],function(_639,_63a,_63b,_63c,_63d,has,i18n,_63e,_63f,_640,_641){var _642=_63f("dijit.ColorPalette",[_63b,_63c,_63d],{palette:"7x10",_palettes:{"7x10":[["white","seashell","cornsilk","lemonchiffon","lightyellow","palegreen","paleturquoise","lightcyan","lavender","plum"],["lightgray","pink","bisque","moccasin","khaki","lightgreen","lightseagreen","lightskyblue","cornflowerblue","violet"],["silver","lightcoral","sandybrown","orange","palegoldenrod","chartreuse","mediumturquoise","skyblue","mediumslateblue","orchid"],["gray","red","orangered","darkorange","yellow","limegreen","darkseagreen","royalblue","slateblue","mediumorchid"],["dimgray","crimson","chocolate","coral","gold","forestgreen","seagreen","blue","blueviolet","darkorchid"],["darkslategray","firebrick","saddlebrown","sienna","olive","green","darkcyan","mediumblue","darkslateblue","darkmagenta"],["black","darkred","maroon","brown","darkolivegreen","darkgreen","midnightblue","navy","indigo","purple"]],"3x4":[["white","lime","green","blue"],["silver","yellow","fuchsia","navy"],["gray","red","purple","black"]]},templateString:_63a,baseClass:"dijitColorPalette",_dyeFactory:function(_643,row,col,_644){return new this._dyeClass(_643,row,col,_644);},buildRendering:function(){this.inherited(arguments);this._dyeClass=_63f(_642._Color,{palette:this.palette});this._preparePalette(this._palettes[this.palette],i18n.getLocalization("dojo","colors",this.lang));}});_642._Color=_63f("dijit._Color",_63e,{template:"<span class='dijitInline dijitPaletteImg'>"+"<img src='${blankGif}' alt='${alt}' title='${title}' class='dijitColorPaletteSwatch' style='background-color: ${color}'/>"+"</span>",hcTemplate:"<span class='dijitInline dijitPaletteImg' style='position: relative; overflow: hidden; height: 12px; width: 14px;'>"+"<img src='${image}' alt='${alt}' title='${title}' style='position: absolute; left: ${left}px; top: ${top}px; ${size}'/>"+"</span>",_imagePaths:{"7x10":_639.toUrl("./themes/a11y/colors7x10.png"),"3x4":_639.toUrl("./themes/a11y/colors3x4.png")},constructor:function(_645,row,col,_646){this._title=_646;this._row=row;this._col=col;this.setColor(_63e.named[_645]);},getValue:function(){return this.toHex();},fillCell:function(cell,_647){var html=_641.substitute(has("highcontrast")?this.hcTemplate:this.template,{color:this.toHex(),blankGif:_647,alt:this._title,title:this._title,image:this._imagePaths[this.palette].toString(),left:this._col*-20-5,top:this._row*-20-5,size:this.palette=="7x10"?"height: 145px; width: 206px":"height: 64px; width: 86px"});_640.place(html,cell);}});return _642;});},"dijit/_PaletteMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/keys","dojo/_base/lang","dojo/on","./_CssStateMixin","./a11yclick","./focus","./typematic"],function(_648,_649,_64a,_64b,keys,lang,on,_64c,_64d,_64e,_64f){var _650=_648("dijit._PaletteMixin",_64c,{defaultTimeout:500,timeoutChangeRate:0.9,value:"",_selectedCell:-1,tabIndex:"0",cellClass:"dijitPaletteCell",dyeClass:null,_dyeFactory:function(_651){var _652=typeof this.dyeClass=="string"?lang.getObject(this.dyeClass):this.dyeClass;return new _652(_651);},_preparePalette:function(_653,_654){this._cells=[];var url=this._blankGif;this.own(on(this.gridNode,_64d,lang.hitch(this,"_onCellClick")));for(var row=0;row<_653.length;row++){var _655=_64b.create("tr",{tabIndex:"-1",role:"row"},this.gridNode);for(var col=0;col<_653[row].length;col++){var _656=_653[row][col];if(_656){var _657=this._dyeFactory(_656,row,col,_654[_656]);var _658=_64b.create("td",{"class":this.cellClass,tabIndex:"-1",title:_654[_656],role:"gridcell"},_655);_657.fillCell(_658,url);_658.idx=this._cells.length;this._cells.push({node:_658,dye:_657});}}}this._xDim=_653[0].length;this._yDim=_653.length;var _659={UP_ARROW:-this._xDim,DOWN_ARROW:this._xDim,RIGHT_ARROW:this.isLeftToRight()?1:-1,LEFT_ARROW:this.isLeftToRight()?-1:1};for(var key in _659){this.own(_64f.addKeyListener(this.domNode,{keyCode:keys[key],ctrlKey:false,altKey:false,shiftKey:false},this,function(){var _65a=_659[key];return function(_65b){this._navigateByKey(_65a,_65b);};}(),this.timeoutChangeRate,this.defaultTimeout));}},postCreate:function(){this.inherited(arguments);this._setCurrent(this._cells[0].node);},focus:function(){_64e.focus(this._currentFocus);},_onCellClick:function(evt){var _65c=evt.target;while(_65c.tagName!="TD"){if(!_65c.parentNode||_65c==this.gridNode){return;}_65c=_65c.parentNode;}var _65d=this._getDye(_65c).getValue();this._setCurrent(_65c);_64e.focus(_65c);this._setValueAttr(_65d,true);evt.stopPropagation();evt.preventDefault();},_setCurrent:function(node){if("_currentFocus" in this){_649.set(this._currentFocus,"tabIndex","-1");}this._currentFocus=node;if(node){_649.set(node,"tabIndex",this.tabIndex);}},_setValueAttr:function(_65e,_65f){if(this._selectedCell>=0){_64a.remove(this._cells[this._selectedCell].node,this.cellClass+"Selected");}this._selectedCell=-1;if(_65e){for(var i=0;i<this._cells.length;i++){if(_65e==this._cells[i].dye.getValue()){this._selectedCell=i;_64a.add(this._cells[i].node,this.cellClass+"Selected");break;}}}this._set("value",this._selectedCell>=0?_65e:null);if(_65f||_65f===undefined){this.onChange(_65e);}},onChange:function(){},_navigateByKey:function(_660,_661){if(_661==-1){return;}var _662=this._currentFocus.idx+_660;if(_662<this._cells.length&&_662>-1){var _663=this._cells[_662].node;this._setCurrent(_663);this.defer(lang.hitch(_64e,"focus",_663));}},_getDye:function(cell){return this._cells[cell.idx].dye;}});return _650;});},"dojo/colors":function(){define(["./_base/kernel","./_base/lang","./_base/Color","./_base/array"],function(dojo,lang,_664,_665){var _666={};lang.setObject("dojo.colors",_666);var _667=function(m1,m2,h){if(h<0){++h;}if(h>1){--h;}var h6=6*h;if(h6<1){return m1+(m2-m1)*h6;}if(2*h<1){return m2;}if(3*h<2){return m1+(m2-m1)*(2/3-h)*6;}return m1;};dojo.colorFromRgb=_664.fromRgb=function(_668,obj){var m=_668.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(m){var c=m[2].split(/\s*,\s*/),l=c.length,t=m[1],a;if((t=="rgb"&&l==3)||(t=="rgba"&&l==4)){var r=c[0];if(r.charAt(r.length-1)=="%"){a=_665.map(c,function(x){return parseFloat(x)*2.56;});if(l==4){a[3]=c[3];}return _664.fromArray(a,obj);}return _664.fromArray(c,obj);}if((t=="hsl"&&l==3)||(t=="hsla"&&l==4)){var H=((parseFloat(c[0])%360)+360)%360/360,S=parseFloat(c[1])/100,L=parseFloat(c[2])/100,m2=L<=0.5?L*(S+1):L+S-L*S,m1=2*L-m2;a=[_667(m1,m2,H+1/3)*256,_667(m1,m2,H)*256,_667(m1,m2,H-1/3)*256,1];if(l==4){a[3]=c[3];}return _664.fromArray(a,obj);}}return null;};var _669=function(c,low,high){c=Number(c);return isNaN(c)?high:c<low?low:c>high?high:c;};_664.prototype.sanitize=function(){var t=this;t.r=Math.round(_669(t.r,0,255));t.g=Math.round(_669(t.g,0,255));t.b=Math.round(_669(t.b,0,255));t.a=_669(t.a,0,1);return this;};_666.makeGrey=_664.makeGrey=function(g,a){return _664.fromArray([g,g,g,a]);};lang.mixin(_664.named,{"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"blanchedalmond":[255,235,205],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[220,20,60],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"oldlace":[253,245,230],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"whitesmoke":[245,245,245],"yellowgreen":[154,205,50]});return _664;});},"dijit/Dialog":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/Deferred","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/fx","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/ready","dojo/sniff","dojo/touch","dojo/window","dojo/dnd/Moveable","dojo/dnd/TimedMoveable","./focus","./_base/manager","./_Widget","./_TemplatedMixin","./_CssStateMixin","./form/_FormMixin","./_DialogMixin","./DialogUnderlay","./layout/ContentPane","./layout/utils","dojo/text!./templates/Dialog.html","./a11yclick","dojo/i18n!./nls/common"],function(_66a,_66b,_66c,_66d,_66e,dom,_66f,_670,_671,fx,i18n,keys,lang,on,_672,has,_673,_674,_675,_676,_677,_678,_679,_67a,_67b,_67c,_67d,_67e,_67f,_680,_681){var _682=new _66e();_682.resolve(true);function nop(){};var _683=_66d("dijit._DialogBase"+(has("dojo-bidi")?"_NoBidi":""),[_67a,_67c,_67d,_67b],{templateString:_681,baseClass:"dijitDialog",cssStateNodes:{closeButtonNode:"dijitDialogCloseIcon"},_setTitleAttr:{node:"titleNode",type:"innerHTML"},open:false,duration:_678.defaultDuration,refocus:true,autofocus:true,_firstFocusItem:null,_lastFocusItem:null,draggable:true,_setDraggableAttr:function(val){this._set("draggable",val);},maxRatio:0.9,closable:true,_setClosableAttr:function(val){this.closeButtonNode.style.display=val?"":"none";this._set("closable",val);},postMixInProperties:function(){var _684=i18n.getLocalization("dijit","common");lang.mixin(this,_684);this.inherited(arguments);},postCreate:function(){_671.set(this.domNode,{display:"none",position:"absolute"});this.ownerDocumentBody.appendChild(this.domNode);this.inherited(arguments);_66c.after(this,"onExecute",lang.hitch(this,"hide"),true);_66c.after(this,"onCancel",lang.hitch(this,"hide"),true);on(this.closeButtonNode,_673.press,function(e){e.stopPropagation();});this._modalconnects=[];},onLoad:function(){this.resize();this._position();if(this.autofocus&&_685.isTop(this)){this._getFocusItems();_677.focus(this._firstFocusItem);}this.inherited(arguments);},focus:function(){this._getFocusItems();_677.focus(this._firstFocusItem);},_endDrag:function(){var _686=_670.position(this.domNode),_687=_674.getBox(this.ownerDocument);_686.y=Math.min(Math.max(_686.y,0),(_687.h-_686.h));_686.x=Math.min(Math.max(_686.x,0),(_687.w-_686.w));this._relativePosition=_686;this._position();},_setup:function(){var node=this.domNode;if(this.titleBar&&this.draggable){this._moveable=new ((has("ie")==6)?_676:_675)(node,{handle:this.titleBar});_66c.after(this._moveable,"onMoveStop",lang.hitch(this,"_endDrag"),true);}else{_66f.add(node,"dijitDialogFixed");}this.underlayAttrs={dialogId:this.id,"class":_66b.map(this["class"].split(/\s/),function(s){return s+"_underlay";}).join(" "),_onKeyDown:lang.hitch(this,"_onKey"),ownerDocument:this.ownerDocument};},_size:function(){this.resize();},_position:function(){if(!_66f.contains(this.ownerDocumentBody,"dojoMove")){var node=this.domNode,_688=_674.getBox(this.ownerDocument),p=this._relativePosition,bb=_670.position(node),l=Math.floor(_688.l+(p?Math.min(p.x,_688.w-bb.w):(_688.w-bb.w)/2)),t=Math.floor(_688.t+(p?Math.min(p.y,_688.h-bb.h):(_688.h-bb.h)/2));_671.set(node,{left:l+"px",top:t+"px"});}},_onKey:function(evt){if(evt.keyCode==keys.TAB){this._getFocusItems();var node=evt.target;if(this._firstFocusItem==this._lastFocusItem){evt.stopPropagation();evt.preventDefault();}else{if(node==this._firstFocusItem&&evt.shiftKey){_677.focus(this._lastFocusItem);evt.stopPropagation();evt.preventDefault();}else{if(node==this._lastFocusItem&&!evt.shiftKey){_677.focus(this._firstFocusItem);evt.stopPropagation();evt.preventDefault();}}}}else{if(this.closable&&evt.keyCode==keys.ESCAPE){this.onCancel();evt.stopPropagation();evt.preventDefault();}}},show:function(){if(this.open){return _682.promise;}if(!this._started){this.startup();}if(!this._alreadyInitialized){this._setup();this._alreadyInitialized=true;}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();_685.hide(this);}var win=_674.get(this.ownerDocument);this._modalconnects.push(on(win,"scroll",lang.hitch(this,"resize",null)));this._modalconnects.push(on(this.domNode,"keydown",lang.hitch(this,"_onKey")));_671.set(this.domNode,{opacity:0,display:""});this._set("open",true);this._onShow();this.resize();this._position();var _689;this._fadeInDeferred=new _66e(lang.hitch(this,function(){_689.stop();delete this._fadeInDeferred;}));this._fadeInDeferred.then(undefined,nop);var _68a=this._fadeInDeferred.promise;_689=fx.fadeIn({node:this.domNode,duration:this.duration,beforeBegin:lang.hitch(this,function(){_685.show(this,this.underlayAttrs);}),onEnd:lang.hitch(this,function(){if(this.autofocus&&_685.isTop(this)){this._getFocusItems();_677.focus(this._firstFocusItem);}this._fadeInDeferred.resolve(true);delete this._fadeInDeferred;})}).play();return _68a;},hide:function(){if(!this._alreadyInitialized||!this.open){return _682.promise;}if(this._fadeInDeferred){this._fadeInDeferred.cancel();}var _68b;this._fadeOutDeferred=new _66e(lang.hitch(this,function(){_68b.stop();delete this._fadeOutDeferred;}));this._fadeOutDeferred.then(undefined,nop);this._fadeOutDeferred.then(lang.hitch(this,"onHide"));var _68c=this._fadeOutDeferred.promise;_68b=fx.fadeOut({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,function(){this.domNode.style.display="none";_685.hide(this);this._fadeOutDeferred.resolve(true);delete this._fadeOutDeferred;})}).play();if(this._scrollConnected){this._scrollConnected=false;}var h;while(h=this._modalconnects.pop()){h.remove();}if(this._relativePosition){delete this._relativePosition;}this._set("open",false);return _68c;},resize:function(dim){if(this.domNode.style.display!="none"){this._checkIfSingleChild();if(!dim){if(this._shrunk){if(this._singleChild){if(typeof this._singleChildOriginalStyle!="undefined"){this._singleChild.domNode.style.cssText=this._singleChildOriginalStyle;delete this._singleChildOriginalStyle;}}_66b.forEach([this.domNode,this.containerNode,this.titleBar,this.actionBarNode],function(node){if(node){_671.set(node,{position:"static",width:"auto",height:"auto"});}});this.domNode.style.position="absolute";}var _68d=_674.getBox(this.ownerDocument);_68d.w*=this.maxRatio;_68d.h*=this.maxRatio;var bb=_670.position(this.domNode);this._shrunk=false;if(bb.w>=_68d.w){dim={w:_68d.w};_670.setMarginBox(this.domNode,dim);bb=_670.position(this.domNode);this._shrunk=true;}if(bb.h>=_68d.h){if(!dim){dim={w:bb.w};}dim.h=_68d.h;this._shrunk=true;}if(dim){if(!dim.w){dim.w=bb.w;}if(!dim.h){dim.h=bb.h;}}}if(dim){_670.setMarginBox(this.domNode,dim);var _68e=[];if(this.titleBar){_68e.push({domNode:this.titleBar,region:"top"});}if(this.actionBarNode){_68e.push({domNode:this.actionBarNode,region:"bottom"});}var _68f={domNode:this.containerNode,region:"center"};_68e.push(_68f);var _690=_680.marginBox2contentBox(this.domNode,dim);_680.layoutChildren(this.domNode,_690,_68e);if(this._singleChild){var cb=_680.marginBox2contentBox(this.containerNode,_68f);this._singleChild.resize({w:cb.w,h:cb.h});}else{this.containerNode.style.overflow="auto";this._layoutChildren();}}else{this._layoutChildren();}if(!has("touch")&&!dim){this._position();}}},_layoutChildren:function(){_66b.forEach(this.getChildren(),function(_691){if(_691.resize){_691.resize();}});},destroy:function(){if(this._fadeInDeferred){this._fadeInDeferred.cancel();}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();}if(this._moveable){this._moveable.destroy();}var h;while(h=this._modalconnects.pop()){h.remove();}_685.hide(this);this.inherited(arguments);}});if(has("dojo-bidi")){_683=_66d("dijit._DialogBase",_683,{_setTitleAttr:function(_692){this._set("title",_692);this.titleNode.innerHTML=_692;this.applyTextDir(this.titleNode);},_setTextDirAttr:function(_693){if(this._created&&this.textDir!=_693){this._set("textDir",_693);this.set("title",this.title);}}});}var _694=_66d("dijit.Dialog",[_67f,_683],{});_694._DialogBase=_683;var _685=_694._DialogLevelManager={_beginZIndex:950,show:function(_695,_696){ds[ds.length-1].focus=_677.curNode;var _697=ds[ds.length-1].dialog?ds[ds.length-1].zIndex+2:_694._DialogLevelManager._beginZIndex;_671.set(_695.domNode,"zIndex",_697);_67e.show(_696,_697-1);ds.push({dialog:_695,underlayAttrs:_696,zIndex:_697});},hide:function(_698){if(ds[ds.length-1].dialog==_698){ds.pop();var pd=ds[ds.length-1];if(ds.length==1){_67e.hide();}else{_67e.show(pd.underlayAttrs,pd.zIndex-1);}if(_698.refocus){var _699=pd.focus;if(pd.dialog&&(!_699||!dom.isDescendant(_699,pd.dialog.domNode))){pd.dialog._getFocusItems();_699=pd.dialog._firstFocusItem;}if(_699){try{_699.focus();}catch(e){}}}}else{var idx=_66b.indexOf(_66b.map(ds,function(elem){return elem.dialog;}),_698);if(idx!=-1){ds.splice(idx,1);}}},isTop:function(_69a){return ds[ds.length-1].dialog==_69a;}};var ds=_694._dialogStack=[{dialog:null,focus:null,underlayAttrs:null}];_677.watch("curNode",function(attr,_69b,node){var _69c=ds[ds.length-1].dialog;if(node&&_69c&&!_69c._fadeOutDeferred&&node.ownerDocument==_69c.ownerDocument){do{if(node==_69c.domNode||_66f.contains(node,"dijitPopup")){return;}}while(node=node.parentNode);_69c.focus();}});if(has("dijit-legacy-requires")){_672(0,function(){var _69d=["dijit/TooltipDialog"];_66a(_69d);});}return _694;});},"dijit/form/_FormMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/window"],function(_69e,_69f,_6a0,lang,on,_6a1){return _69f("dijit.form._FormMixin",null,{state:"",_getDescendantFormWidgets:function(_6a2){var res=[];_69e.forEach(_6a2||this.getChildren(),function(_6a3){if("value" in _6a3){res.push(_6a3);}else{res=res.concat(this._getDescendantFormWidgets(_6a3.getChildren()));}},this);return res;},reset:function(){_69e.forEach(this._getDescendantFormWidgets(),function(_6a4){if(_6a4.reset){_6a4.reset();}});},validate:function(){var _6a5=false;return _69e.every(_69e.map(this._getDescendantFormWidgets(),function(_6a6){_6a6._hasBeenBlurred=true;var _6a7=_6a6.disabled||!_6a6.validate||_6a6.validate();if(!_6a7&&!_6a5){_6a1.scrollIntoView(_6a6.containerNode||_6a6.domNode);_6a6.focus();_6a5=true;}return _6a7;}),function(item){return item;});},setValues:function(val){_6a0.deprecated(this.declaredClass+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(obj){var map={};_69e.forEach(this._getDescendantFormWidgets(),function(_6a8){if(!_6a8.name){return;}var _6a9=map[_6a8.name]||(map[_6a8.name]=[]);_6a9.push(_6a8);});for(var name in map){if(!map.hasOwnProperty(name)){continue;}var _6aa=map[name],_6ab=lang.getObject(name,false,obj);if(_6ab===undefined){continue;}_6ab=[].concat(_6ab);if(typeof _6aa[0].checked=="boolean"){_69e.forEach(_6aa,function(w){w.set("value",_69e.indexOf(_6ab,w._get("value"))!=-1);});}else{if(_6aa[0].multiple){_6aa[0].set("value",_6ab);}else{_69e.forEach(_6aa,function(w,i){w.set("value",_6ab[i]);});}}}},getValues:function(){_6a0.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},_getValueAttr:function(){var obj={};_69e.forEach(this._getDescendantFormWidgets(),function(_6ac){var name=_6ac.name;if(!name||_6ac.disabled){return;}var _6ad=_6ac.get("value");if(typeof _6ac.checked=="boolean"){if(/Radio/.test(_6ac.declaredClass)){if(_6ad!==false){lang.setObject(name,_6ad,obj);}else{_6ad=lang.getObject(name,false,obj);if(_6ad===undefined){lang.setObject(name,null,obj);}}}else{var ary=lang.getObject(name,false,obj);if(!ary){ary=[];lang.setObject(name,ary,obj);}if(_6ad!==false){ary.push(_6ad);}}}else{var prev=lang.getObject(name,false,obj);if(typeof prev!="undefined"){if(lang.isArray(prev)){prev.push(_6ad);}else{lang.setObject(name,[prev,_6ad],obj);}}else{lang.setObject(name,_6ad,obj);}}});return obj;},isValid:function(){return this.state=="";},onValidStateChange:function(){},_getState:function(){var _6ae=_69e.map(this._descendants,function(w){return w.get("state")||"";});return _69e.indexOf(_6ae,"Error")>=0?"Error":_69e.indexOf(_6ae,"Incomplete")>=0?"Incomplete":"";},disconnectChildren:function(){},connectChildren:function(_6af){this._descendants=this._getDescendantFormWidgets();_69e.forEach(this._descendants,function(_6b0){if(!_6b0._started){_6b0.startup();}});if(!_6af){this._onChildChange();}},_onChildChange:function(attr){if(!attr||attr=="state"||attr=="disabled"){this._set("state",this._getState());}if(!attr||attr=="value"||attr=="disabled"||attr=="checked"){if(this._onChangeDelayTimer){this._onChangeDelayTimer.remove();}this._onChangeDelayTimer=this.defer(function(){delete this._onChangeDelayTimer;this._set("value",this.get("value"));},10);}},startup:function(){this.inherited(arguments);this._descendants=this._getDescendantFormWidgets();this.value=this.get("value");this.state=this._getState();var self=this;this.own(on(this.containerNode,"attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked",function(evt){if(evt.target==self.domNode){return;}self._onChildChange(evt.type.replace("attrmodified-",""));}));this.watch("state",function(attr,_6b1,_6b2){this.onValidStateChange(_6b2=="");});},destroy:function(){this.inherited(arguments);}});});},"dijit/_DialogMixin":function(){define(["dojo/_base/declare","./a11y"],function(_6b3,a11y){return _6b3("dijit._DialogMixin",null,{actionBarTemplate:"",execute:function(){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();this.execute(this.get("value"));},_getFocusItems:function(){var _6b4=a11y._getTabNavigable(this.domNode);this._firstFocusItem=_6b4.lowest||_6b4.first||this.closeButtonNode||this.domNode;this._lastFocusItem=_6b4.last||_6b4.highest||this._firstFocusItem;}});});},"dijit/DialogUnderlay":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/aspect","dojo/dom-attr","dojo/dom-style","dojo/on","dojo/window","./_Widget","./_TemplatedMixin","./BackgroundIframe","./Viewport","./main"],function(_6b5,lang,_6b6,_6b7,_6b8,on,_6b9,_6ba,_6bb,_6bc,_6bd,_6be){var _6bf=_6b5("dijit.DialogUnderlay",[_6ba,_6bb],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' tabIndex='-1' data-dojo-attach-point='node'></div></div>",dialogId:"","class":"",_modalConnects:[],_setDialogIdAttr:function(id){_6b7.set(this.node,"id",id+"_underlay");this._set("dialogId",id);},_setClassAttr:function(_6c0){this.node.className="dijitDialogUnderlay "+_6c0;this._set("class",_6c0);},postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKeyDown")));this.inherited(arguments);},layout:function(){var is=this.node.style,os=this.domNode.style;os.display="none";var _6c1=_6b9.getBox(this.ownerDocument);os.top=_6c1.t+"px";os.left=_6c1.l+"px";is.width=_6c1.w+"px";is.height=_6c1.h+"px";os.display="block";},show:function(){this.domNode.style.display="block";this.open=true;this.layout();this.bgIframe=new _6bc(this.domNode);var win=_6b9.get(this.ownerDocument);this._modalConnects=[_6bd.on("resize",lang.hitch(this,"layout")),on(win,"scroll",lang.hitch(this,"layout"))];},hide:function(){this.bgIframe.destroy();delete this.bgIframe;this.domNode.style.display="none";while(this._modalConnects.length){(this._modalConnects.pop()).remove();}this.open=false;},destroy:function(){while(this._modalConnects.length){(this._modalConnects.pop()).remove();}this.inherited(arguments);},_onKeyDown:function(){}});_6bf.show=function(_6c2,_6c3){var _6c4=_6bf._singleton;if(!_6c4||_6c4._destroyed){_6c4=_6be._underlay=_6bf._singleton=new _6bf(_6c2);}else{if(_6c2){_6c4.set(_6c2);}}_6b8.set(_6c4.domNode,"zIndex",_6c3);if(!_6c4.open){_6c4.show();}};_6bf.hide=function(){var _6c5=_6bf._singleton;if(_6c5&&!_6c5._destroyed){_6c5.hide();}};return _6bf;});},"dijit/layout/ContentPane":function(){define(["dojo/_base/kernel","dojo/_base/lang","../_Widget","../_Container","./_ContentPaneResizeMixin","dojo/string","dojo/html","dojo/_base/array","dojo/_base/declare","dojo/_base/Deferred","dojo/dom","dojo/dom-attr","dojo/dom-construct","dojo/_base/xhr","dojo/i18n","dojo/when","dojo/i18n!../nls/loading"],function(_6c6,lang,_6c7,_6c8,_6c9,_6ca,html,_6cb,_6cc,_6cd,dom,_6ce,_6cf,xhr,i18n,when){return _6cc("dijit.layout.ContentPane",[_6c7,_6c8,_6c9],{href:"",content:"",extractContent:false,parseOnLoad:true,parserScope:_6c6._scopeName,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>",isLoaded:false,baseClass:"dijitContentPane",ioArgs:{},onLoadDeferred:null,_setTitleAttr:null,stopParser:true,template:false,markupFactory:function(_6d0,node,ctor){var self=new ctor(_6d0,node);return !self.href&&self._contentSetter&&self._contentSetter.parseDeferred&&!self._contentSetter.parseDeferred.isFulfilled()?self._contentSetter.parseDeferred.then(function(){return self;}):self;},create:function(_6d1,_6d2){if((!_6d1||!_6d1.template)&&_6d2&&!("href" in _6d1)&&!("content" in _6d1)){_6d2=dom.byId(_6d2);var df=_6d2.ownerDocument.createDocumentFragment();while(_6d2.firstChild){df.appendChild(_6d2.firstChild);}_6d1=lang.delegate(_6d1,{content:df});}this.inherited(arguments,[_6d1,_6d2]);},postMixInProperties:function(){this.inherited(arguments);var _6d3=i18n.getLocalization("dijit","loading",this.lang);this.loadingMessage=_6ca.substitute(this.loadingMessage,_6d3);this.errorMessage=_6ca.substitute(this.errorMessage,_6d3);},buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}this.domNode.removeAttribute("title");},startup:function(){this.inherited(arguments);if(this._contentSetter){_6cb.forEach(this._contentSetter.parseResults,function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}},this);}},_startChildren:function(){_6cb.forEach(this.getChildren(),function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}});if(this._contentSetter){_6cb.forEach(this._contentSetter.parseResults,function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}},this);}},setHref:function(href){_6c6.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",href);},_setHrefAttr:function(href){this.cancel();this.onLoadDeferred=new _6cd(lang.hitch(this,"cancel"));this.onLoadDeferred.then(lang.hitch(this,"onLoad"));this._set("href",href);if(this.preload||(this._created&&this._isShown())){this._load();}else{this._hrefChanged=true;}return this.onLoadDeferred;},setContent:function(data){_6c6.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.","","2.0");this.set("content",data);},_setContentAttr:function(data){this._set("href","");this.cancel();this.onLoadDeferred=new _6cd(lang.hitch(this,"cancel"));if(this._created){this.onLoadDeferred.then(lang.hitch(this,"onLoad"));}this._setContent(data||"");this._isDownloaded=false;return this.onLoadDeferred;},_getContentAttr:function(){return this.containerNode.innerHTML;},cancel:function(){if(this._xhrDfd&&(this._xhrDfd.fired==-1)){this._xhrDfd.cancel();}delete this._xhrDfd;this.onLoadDeferred=null;},destroy:function(){this.cancel();this.inherited(arguments);},destroyRecursive:function(_6d4){if(this._beingDestroyed){return;}this.inherited(arguments);},_onShow:function(){this.inherited(arguments);if(this.href){if(!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow)){return this.refresh();}}},refresh:function(){this.cancel();this.onLoadDeferred=new _6cd(lang.hitch(this,"cancel"));this.onLoadDeferred.then(lang.hitch(this,"onLoad"));this._load();return this.onLoadDeferred;},_load:function(){this._setContent(this.onDownloadStart(),true);var self=this;var _6d5={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};if(lang.isObject(this.ioArgs)){lang.mixin(_6d5,this.ioArgs);}var hand=(this._xhrDfd=(this.ioMethod||xhr.get)(_6d5)),_6d6;hand.then(function(html){_6d6=html;try{self._isDownloaded=true;return self._setContent(html,false);}catch(err){self._onError("Content",err);}},function(err){if(!hand.canceled){self._onError("Download",err);}delete self._xhrDfd;return err;}).then(function(){self.onDownloadEnd();delete self._xhrDfd;return _6d6;});delete this._hrefChanged;},_onLoadHandler:function(data){this._set("isLoaded",true);try{this.onLoadDeferred.resolve(data);}catch(e){console.error("Error "+(this.widgetId||this.id)+" running custom onLoad code: "+e.message);}},_onUnloadHandler:function(){this._set("isLoaded",false);try{this.onUnload();}catch(e){console.error("Error "+this.widgetId+" running custom onUnload code: "+e.message);}},destroyDescendants:function(_6d7){if(this.isLoaded){this._onUnloadHandler();}var _6d8=this._contentSetter;_6cb.forEach(this.getChildren(),function(_6d9){if(_6d9.destroyRecursive){_6d9.destroyRecursive(_6d7);}else{if(_6d9.destroy){_6d9.destroy(_6d7);}}_6d9._destroyed=true;});if(_6d8){_6cb.forEach(_6d8.parseResults,function(_6da){if(!_6da._destroyed){if(_6da.destroyRecursive){_6da.destroyRecursive(_6d7);}else{if(_6da.destroy){_6da.destroy(_6d7);}}_6da._destroyed=true;}});delete _6d8.parseResults;}if(!_6d7){_6cf.empty(this.containerNode);}delete this._singleChild;},_setContent:function(cont,_6db){cont=this.preprocessContent(cont);this.destroyDescendants();var _6dc=this._contentSetter;if(!(_6dc&&_6dc instanceof html._ContentSetter)){_6dc=this._contentSetter=new html._ContentSetter({node:this.containerNode,_onError:lang.hitch(this,this._onError),onContentError:lang.hitch(this,function(e){var _6dd=this.onContentError(e);try{this.containerNode.innerHTML=_6dd;}catch(e){console.error("Fatal "+this.id+" could not change content due to "+e.message,e);}})});}var _6de=lang.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:!cont.domNode&&this.parseOnLoad,parserScope:this.parserScope,startup:false,dir:this.dir,lang:this.lang,textDir:this.textDir},this._contentSetterParams||{});var p=_6dc.set((lang.isObject(cont)&&cont.domNode)?cont.domNode:cont,_6de);var self=this;return when(p&&p.then?p:_6dc.parseDeferred,function(){delete self._contentSetterParams;if(!_6db){if(self._started){self._startChildren();self._scheduleLayout();}self._onLoadHandler(cont);}});},preprocessContent:function(_6df){return _6df;},_onError:function(type,err,_6e0){this.onLoadDeferred.reject(err);var _6e1=this["on"+type+"Error"].call(this,err);if(_6e0){console.error(_6e0,err);}else{if(_6e1){this._setContent(_6e1,true);}}},onLoad:function(){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage;},onContentError:function(){},onDownloadError:function(){return this.errorMessage;},onDownloadEnd:function(){}});});},"dijit/layout/_ContentPaneResizeMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang","dojo/query","../registry","../Viewport","./utils"],function(_6e2,_6e3,_6e4,_6e5,_6e6,lang,_6e7,_6e8,_6e9,_6ea){return _6e3("dijit.layout._ContentPaneResizeMixin",null,{doLayout:true,isLayoutContainer:true,startup:function(){if(this._started){return;}var _6eb=this.getParent();this._childOfLayoutWidget=_6eb&&_6eb.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;this.inherited(arguments);if(this._isShown()){this._onShow();}if(!this._childOfLayoutWidget){this.own(_6e9.on("resize",lang.hitch(this,"resize")));}},_checkIfSingleChild:function(){if(!this.doLayout){return;}var _6ec=[],_6ed=false;_6e7("> *",this.containerNode).some(function(node){var _6ee=_6e8.byNode(node);if(_6ee&&_6ee.resize){_6ec.push(_6ee);}else{if(!/script|link|style/i.test(node.nodeName)&&node.offsetHeight){_6ed=true;}}});this._singleChild=_6ec.length==1&&!_6ed?_6ec[0]:null;_6e4.toggle(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild);},resize:function(_6ef,_6f0){this._resizeCalled=true;this._scheduleLayout(_6ef,_6f0);},_scheduleLayout:function(_6f1,_6f2){if(this._isShown()){this._layout(_6f1,_6f2);}else{this._needLayout=true;this._changeSize=_6f1;this._resultSize=_6f2;}},_layout:function(_6f3,_6f4){delete this._needLayout;if(!this._wasShown&&this.open!==false){this._onShow();}if(_6f3){_6e5.setMarginBox(this.domNode,_6f3);}var cn=this.containerNode;if(cn===this.domNode){var mb=_6f4||{};lang.mixin(mb,_6f3||{});if(!("h" in mb)||!("w" in mb)){mb=lang.mixin(_6e5.getMarginBox(cn),mb);}this._contentBox=_6ea.marginBox2contentBox(cn,mb);}else{this._contentBox=_6e5.getContentBox(cn);}this._layoutChildren();},_layoutChildren:function(){this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){var cb=this._contentBox||_6e5.getContentBox(this.containerNode);this._singleChild.resize({w:cb.w,h:cb.h});}else{var _6f5=this.getChildren(),_6f6,i=0;while(_6f6=_6f5[i++]){if(_6f6.resize){_6f6.resize();}}}},_isShown:function(){if(this._childOfLayoutWidget){if(this._resizeCalled&&"open" in this){return this.open;}return this._resizeCalled;}else{if("open" in this){return this.open;}else{var node=this.domNode,_6f7=this.domNode.parentNode;return (node.style.display!="none")&&(node.style.visibility!="hidden")&&!_6e4.contains(node,"dijitHidden")&&_6f7&&_6f7.style&&(_6f7.style.display!="none");}}},_onShow:function(){this._wasShown=true;if(this._needLayout){this._layout(this._changeSize,this._resultSize);}this.inherited(arguments);}});});},"dijit/layout/utils":function(){define(["dojo/_base/array","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang"],function(_6f8,_6f9,_6fa,_6fb,lang){function _6fc(word){return word.substring(0,1).toUpperCase()+word.substring(1);};function size(_6fd,dim){var _6fe=_6fd.resize?_6fd.resize(dim):_6fa.setMarginBox(_6fd.domNode,dim);if(_6fe){lang.mixin(_6fd,_6fe);}else{lang.mixin(_6fd,_6fa.getMarginBox(_6fd.domNode));lang.mixin(_6fd,dim);}};var _6ff={marginBox2contentBox:function(node,mb){var cs=_6fb.getComputedStyle(node);var me=_6fa.getMarginExtents(node,cs);var pb=_6fa.getPadBorderExtents(node,cs);return {l:_6fb.toPixelValue(node,cs.paddingLeft),t:_6fb.toPixelValue(node,cs.paddingTop),w:mb.w-(me.w+pb.w),h:mb.h-(me.h+pb.h)};},layoutChildren:function(_700,dim,_701,_702,_703){dim=lang.mixin({},dim);_6f9.add(_700,"dijitLayoutContainer");_701=_6f8.filter(_701,function(item){return item.region!="center"&&item.layoutAlign!="client";}).concat(_6f8.filter(_701,function(item){return item.region=="center"||item.layoutAlign=="client";}));_6f8.forEach(_701,function(_704){var elm=_704.domNode,pos=(_704.region||_704.layoutAlign);if(!pos){throw new Error("No region setting for "+_704.id);}var _705=elm.style;_705.left=dim.l+"px";_705.top=dim.t+"px";_705.position="absolute";_6f9.add(elm,"dijitAlign"+_6fc(pos));var _706={};if(_702&&_702==_704.id){_706[_704.region=="top"||_704.region=="bottom"?"h":"w"]=_703;}if(pos=="leading"){pos=_704.isLeftToRight()?"left":"right";}if(pos=="trailing"){pos=_704.isLeftToRight()?"right":"left";}if(pos=="top"||pos=="bottom"){_706.w=dim.w;size(_704,_706);dim.h-=_704.h;if(pos=="top"){dim.t+=_704.h;}else{_705.top=dim.t+dim.h+"px";}}else{if(pos=="left"||pos=="right"){_706.h=dim.h;size(_704,_706);dim.w-=_704.w;if(pos=="left"){dim.l+=_704.w;}else{_705.left=dim.l+dim.w+"px";}}else{if(pos=="client"||pos=="center"){size(_704,dim);}}}});}};lang.setObject("dijit.layout.utils",_6ff);return _6ff;});},"dijit/form/Button":function(){define(["require","dojo/_base/declare","dojo/dom-class","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/ready","./_FormWidget","./_ButtonMixin","dojo/text!./templates/Button.html","../a11yclick"],function(_707,_708,_709,has,_70a,lang,_70b,_70c,_70d,_70e){if(has("dijit-legacy-requires")){_70b(0,function(){var _70f=["dijit/form/DropDownButton","dijit/form/ComboButton","dijit/form/ToggleButton"];_707(_70f);});}var _710=_708("dijit.form.Button"+(has("dojo-bidi")?"_NoBidi":""),[_70c,_70d],{showLabel:true,iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitButton",templateString:_70e,_setValueAttr:"valueNode",_setNameAttr:function(name){if(this.valueNode){this.valueNode.setAttribute("name",name);}},postCreate:function(){this.inherited(arguments);this._setLabelFromContainer();},_setLabelFromContainer:function(){if(this.containerNode&&!this.label){this.label=lang.trim(this.containerNode.innerHTML);this.onLabelSet();}},_setShowLabelAttr:function(val){if(this.containerNode){_709.toggle(this.containerNode,"dijitDisplayNone",!val);}this._set("showLabel",val);},setLabel:function(_711){_70a.deprecated("dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",_711);},onLabelSet:function(){this.inherited(arguments);if(!this.showLabel&&!("title" in this.params)){this.titleNode.title=lang.trim(this.containerNode.innerText||this.containerNode.textContent||"");}}});if(has("dojo-bidi")){_710=_708("dijit.form.Button",_710,{onLabelSet:function(){this.inherited(arguments);if(this.titleNode.title){this.applyTextDir(this.titleNode,this.titleNode.title);}},_setTextDirAttr:function(_712){if(this._created&&this.textDir!=_712){this._set("textDir",_712);this._setLabelAttr(this.label);}}});}return _710;});},"dijit/form/_ButtonMixin":function(){define(["dojo/_base/declare","dojo/dom","dojo/has","../registry"],function(_713,dom,has,_714){var _715=_713("dijit.form._ButtonMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{label:"",type:"button",__onClick:function(e){e.stopPropagation();e.preventDefault();if(!this.disabled){this.valueNode.click(e);}return false;},_onClick:function(e){if(this.disabled){e.stopPropagation();e.preventDefault();return false;}if(this.onClick(e)===false){e.preventDefault();}var _716=e.defaultPrevented;if(!_716&&this.type=="submit"&&!(this.valueNode||this.focusNode).form){for(var node=this.domNode;node.parentNode;node=node.parentNode){var _717=_714.byNode(node);if(_717&&typeof _717._onSubmit=="function"){_717._onSubmit(e);e.preventDefault();_716=true;break;}}}return !_716;},postCreate:function(){this.inherited(arguments);dom.setSelectable(this.focusNode,false);},onClick:function(){return true;},_setLabelAttr:function(_718){this._set("label",_718);var _719=this.containerNode||this.focusNode;_719.innerHTML=_718;this.onLabelSet();},onLabelSet:function(){}});if(has("dojo-bidi")){_715=_713("dijit.form._ButtonMixin",_715,{onLabelSet:function(){this.inherited(arguments);var _71a=this.containerNode||this.focusNode;this.applyTextDir(_71a);}});}return _715;});},"dijit/form/CheckBox":function(){define(["require","dojo/_base/declare","dojo/dom-attr","dojo/has","dojo/query","dojo/ready","./ToggleButton","./_CheckBoxMixin","dojo/text!./templates/CheckBox.html","dojo/NodeList-dom","../a11yclick"],function(_71b,_71c,_71d,has,_71e,_71f,_720,_721,_722){if(has("dijit-legacy-requires")){_71f(0,function(){var _723=["dijit/form/RadioButton"];_71b(_723);});}return _71c("dijit.form.CheckBox",[_720,_721],{templateString:_722,baseClass:"dijitCheckBox",_setValueAttr:function(_724,_725){if(typeof _724=="string"){this.inherited(arguments);_724=true;}if(this._created){this.set("checked",_724,_725);}},_getValueAttr:function(){return this.checked&&this._get("value");},_setIconClassAttr:null,_setNameAttr:"focusNode",postMixInProperties:function(){this.inherited(arguments);this.checkedAttrSetting="";},_fillContent:function(){},_onFocus:function(){if(this.id){_71e("label[for='"+this.id+"']").addClass("dijitFocusedLabel");}this.inherited(arguments);},_onBlur:function(){if(this.id){_71e("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");}this.inherited(arguments);}});});},"dijit/form/ToggleButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","./Button","./_ToggleButtonMixin"],function(_726,_727,_728,_729){return _726("dijit.form.ToggleButton",[_728,_729],{baseClass:"dijitToggleButton",setChecked:function(_72a){_727.deprecated("setChecked("+_72a+") is deprecated. Use set('checked',"+_72a+") instead.","","2.0");this.set("checked",_72a);}});});},"dijit/form/_ToggleButtonMixin":function(){define(["dojo/_base/declare","dojo/dom-attr"],function(_72b,_72c){return _72b("dijit.form._ToggleButtonMixin",null,{checked:false,_aria_attr:"aria-pressed",_onClick:function(evt){var _72d=this.checked;this._set("checked",!_72d);var ret=this.inherited(arguments);this.set("checked",ret?this.checked:_72d);return ret;},_setCheckedAttr:function(_72e,_72f){this._set("checked",_72e);var node=this.focusNode||this.domNode;if(this._created){if(_72c.get(node,"checked")!=!!_72e){_72c.set(node,"checked",!!_72e);}}node.setAttribute(this._aria_attr,String(_72e));this._handleOnChange(_72e,_72f);},postCreate:function(){this.inherited(arguments);var node=this.focusNode||this.domNode;if(this.checked){node.setAttribute("checked","checked");}if(this._resetValue===undefined){this._lastValueReported=this._resetValue=this.checked;}},reset:function(){this._hasBeenBlurred=false;this.set("checked",this.params.checked||false);}});});},"dijit/form/_CheckBoxMixin":function(){define(["dojo/_base/declare","dojo/dom-attr"],function(_730,_731){return _730("dijit.form._CheckBoxMixin",null,{type:"checkbox",value:"on",readOnly:false,_aria_attr:"aria-checked",_setReadOnlyAttr:function(_732){this._set("readOnly",_732);_731.set(this.focusNode,"readOnly",_732);},_setLabelAttr:undefined,_getSubmitValue:function(_733){return (_733==null||_733==="")?"on":_733;},_setValueAttr:function(_734){_734=this._getSubmitValue(_734);this._set("value",_734);_731.set(this.focusNode,"value",_734);},reset:function(){this.inherited(arguments);this._set("value",this._getSubmitValue(this.params.value));_731.set(this.focusNode,"value",this.value);},_onClick:function(e){if(this.readOnly){e.stopPropagation();e.preventDefault();return false;}return this.inherited(arguments);}});});},"dijit/form/ComboButton":function(){define(["dojo/_base/declare","dojo/keys","../focus","./DropDownButton","dojo/text!./templates/ComboButton.html","../a11yclick"],function(_735,keys,_736,_737,_738){return _735("dijit.form.ComboButton",_737,{templateString:_738,_setIdAttr:"",_setTabIndexAttr:["focusNode","titleNode"],_setTitleAttr:"titleNode",optionsTitle:"",baseClass:"dijitComboButton",cssStateNodes:{"buttonNode":"dijitButtonNode","titleNode":"dijitButtonContents","_popupStateNode":"dijitDownArrowButton"},_focusedNode:null,_onButtonKeyDown:function(evt){if(evt.keyCode==keys[this.isLeftToRight()?"RIGHT_ARROW":"LEFT_ARROW"]){_736.focus(this._popupStateNode);evt.stopPropagation();evt.preventDefault();}},_onArrowKeyDown:function(evt){if(evt.keyCode==keys[this.isLeftToRight()?"LEFT_ARROW":"RIGHT_ARROW"]){_736.focus(this.titleNode);evt.stopPropagation();evt.preventDefault();}},focus:function(_739){if(!this.disabled){_736.focus(_739=="start"?this.titleNode:this._popupStateNode);}}});});},"dijit/form/DropDownButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/query","../registry","../popup","./Button","../_Container","../_HasDropDown","dojo/text!./templates/DropDownButton.html","../a11yclick"],function(_73a,_73b,lang,_73c,_73d,_73e,_73f,_740,_741,_742){return _73a("dijit.form.DropDownButton",[_73f,_740,_741],{baseClass:"dijitDropDownButton",templateString:_742,_fillContent:function(){var _743=this.srcNodeRef;var dest=this.containerNode;if(_743&&dest){while(_743.hasChildNodes()){var _744=_743.firstChild;if(_744.hasAttribute&&(_744.hasAttribute("data-dojo-type")||_744.hasAttribute("dojoType")||_744.hasAttribute("data-"+_73b._scopeName+"-type")||_744.hasAttribute(_73b._scopeName+"Type"))){this.dropDownContainer=this.ownerDocument.createElement("div");this.dropDownContainer.appendChild(_744);}else{dest.appendChild(_744);}}}},startup:function(){if(this._started){return;}if(!this.dropDown&&this.dropDownContainer){this.dropDown=_73d.byNode(this.dropDownContainer.firstChild);delete this.dropDownContainer;}if(this.dropDown){_73e.hide(this.dropDown);}this.inherited(arguments);},isLoaded:function(){var _745=this.dropDown;return (!!_745&&(!_745.href||_745.isLoaded));},loadDropDown:function(_746){var _747=this.dropDown;var _748=_747.on("load",lang.hitch(this,function(){_748.remove();_746();}));_747.refresh();},isFocusable:function(){return this.inherited(arguments)&&!this._mouseDown;}});});},"dijit/_HasDropDown":function(){define(["dojo/_base/declare","dojo/_base/Deferred","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","dojo/touch","./registry","./focus","./popup","./_FocusMixin"],function(_749,_74a,dom,_74b,_74c,_74d,_74e,has,keys,lang,on,_74f,_750,_751,_752,_753){return _749("dijit._HasDropDown",_753,{_buttonNode:null,_arrowWrapperNode:null,_popupStateNode:null,_aroundNode:null,dropDown:null,autoWidth:true,forceWidth:false,maxHeight:-1,dropDownPosition:["below","above"],_stopClickEvents:true,_onDropDownMouseDown:function(e){if(this.disabled||this.readOnly){return;}if(e.type!="MSPointerDown"){e.preventDefault();}this.own(on.once(this.ownerDocument,_74f.release,lang.hitch(this,"_onDropDownMouseUp")));this.toggleDropDown();},_onDropDownMouseUp:function(e){var _754=this.dropDown,_755=false;if(e&&this._opened){var c=_74d.position(this._buttonNode,true);if(!(e.pageX>=c.x&&e.pageX<=c.x+c.w)||!(e.pageY>=c.y&&e.pageY<=c.y+c.h)){var t=e.target;while(t&&!_755){if(_74c.contains(t,"dijitPopup")){_755=true;}else{t=t.parentNode;}}if(_755){t=e.target;if(_754.onItemClick){var _756;while(t&&!(_756=_750.byNode(t))){t=t.parentNode;}if(_756&&_756.onClick&&_756.getParent){_756.getParent().onItemClick(_756,e);}}return;}}}if(this._opened){if(_754.focus&&(_754.autoFocus!==false||(e.type=="mouseup"&&!this.hovering))){this._focusDropDownTimer=this.defer(function(){_754.focus();delete this._focusDropDownTimer;});}}else{if(this.focus){this.defer("focus");}}},_onDropDownClick:function(e){if(this._stopClickEvents){e.stopPropagation();e.preventDefault();}},buildRendering:function(){this.inherited(arguments);this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;var _757={"after":this.isLeftToRight()?"Right":"Left","before":this.isLeftToRight()?"Left":"Right","above":"Up","below":"Down","left":"Left","right":"Right"}[this.dropDownPosition[0]]||this.dropDownPosition[0]||"Down";_74c.add(this._arrowWrapperNode||this._buttonNode,"dijit"+_757+"ArrowButton");},postCreate:function(){this.inherited(arguments);var _758=this.focusNode||this.domNode;this.own(on(this._buttonNode,_74f.press,lang.hitch(this,"_onDropDownMouseDown")),on(this._buttonNode,"click",lang.hitch(this,"_onDropDownClick")),on(_758,"keydown",lang.hitch(this,"_onKey")),on(_758,"keyup",lang.hitch(this,"_onKeyUp")));},destroy:function(){if(this._opened){this.closeDropDown(true);}if(this.dropDown){if(!this.dropDown._destroyed){this.dropDown.destroyRecursive();}delete this.dropDown;}this.inherited(arguments);},_onKey:function(e){if(this.disabled||this.readOnly){return;}var d=this.dropDown,_759=e.target;if(d&&this._opened&&d.handleKey){if(d.handleKey(e)===false){e.stopPropagation();e.preventDefault();return;}}if(d&&this._opened&&e.keyCode==keys.ESCAPE){this.closeDropDown();e.stopPropagation();e.preventDefault();}else{if(!this._opened&&(e.keyCode==keys.DOWN_ARROW||((e.keyCode==keys.ENTER||(e.keyCode==keys.SPACE&&(!this._searchTimer||(e.ctrlKey||e.altKey||e.metaKey))))&&((_759.tagName||"").toLowerCase()!=="input"||(_759.type&&_759.type.toLowerCase()!=="text"))))){this._toggleOnKeyUp=true;e.stopPropagation();e.preventDefault();}}},_onKeyUp:function(){if(this._toggleOnKeyUp){delete this._toggleOnKeyUp;this.toggleDropDown();var d=this.dropDown;if(d&&d.focus){this.defer(lang.hitch(d,"focus"),1);}}},_onBlur:function(){this.closeDropDown(false);this.inherited(arguments);},isLoaded:function(){return true;},loadDropDown:function(_75a){_75a();},loadAndOpenDropDown:function(){var d=new _74a(),_75b=lang.hitch(this,function(){this.openDropDown();d.resolve(this.dropDown);});if(!this.isLoaded()){this.loadDropDown(_75b);}else{_75b();}return d;},toggleDropDown:function(){if(this.disabled||this.readOnly){return;}if(!this._opened){this.loadAndOpenDropDown();}else{this.closeDropDown(true);}},openDropDown:function(){var _75c=this.dropDown,_75d=_75c.domNode,_75e=this._aroundNode||this.domNode,self=this;var _75f=_752.open({parent:this,popup:_75c,around:_75e,orient:this.dropDownPosition,maxHeight:this.maxHeight,onExecute:function(){self.closeDropDown(true);},onCancel:function(){self.closeDropDown(true);},onClose:function(){_74b.set(self._popupStateNode,"popupActive",false);_74c.remove(self._popupStateNode,"dijitHasDropDownOpen");self._set("_opened",false);}});if(this.forceWidth||(this.autoWidth&&_75e.offsetWidth>_75c._popupWrapper.offsetWidth)){var _760=_75e.offsetWidth-_75c._popupWrapper.offsetWidth;var _761={w:_75c.domNode.offsetWidth+_760};this._origStyle=_75d.style.cssText;if(lang.isFunction(_75c.resize)){_75c.resize(_761);}else{_74d.setMarginBox(_75d,_761);}if(_75f.corner[1]=="R"){_75c._popupWrapper.style.left=(_75c._popupWrapper.style.left.replace("px","")-_760)+"px";}}_74b.set(this._popupStateNode,"popupActive","true");_74c.add(this._popupStateNode,"dijitHasDropDownOpen");this._set("_opened",true);this._popupStateNode.setAttribute("aria-expanded","true");this._popupStateNode.setAttribute("aria-owns",_75c.id);if(_75d.getAttribute("role")!=="presentation"&&!_75d.getAttribute("aria-labelledby")){_75d.setAttribute("aria-labelledby",this.id);}return _75f;},closeDropDown:function(_762){if(this._focusDropDownTimer){this._focusDropDownTimer.remove();delete this._focusDropDownTimer;}if(this._opened){this._popupStateNode.setAttribute("aria-expanded","false");if(_762&&this.focus){this.focus();}_752.close(this.dropDown);this._opened=false;}if(this._origStyle){this.dropDown.domNode.style.cssText=this._origStyle;delete this._origStyle;}}});});},"dijit/form/FilteringSelect":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/when","./MappedTextBox","./ComboBoxMixin"],function(_763,lang,when,_764,_765){return _763("dijit.form.FilteringSelect",[_764,_765],{required:true,_lastDisplayedValue:"",_isValidSubset:function(){return this._opened;},isValid:function(){return !!this.item||(!this.required&&this.get("displayedValue")=="");},_refreshState:function(){if(!this.searchTimer){this.inherited(arguments);}},_callbackSetLabel:function(_766,_767,_768,_769){if((_767&&_767[this.searchAttr]!==this._lastQuery)||(!_767&&_766.length&&this.store.getIdentity(_766[0])!=this._lastQuery)){return;}if(!_766.length){this.set("value","",_769||(_769===undefined&&!this.focused),this.textbox.value,null);}else{this.set("item",_766[0],_769);}},_openResultList:function(_76a,_76b,_76c){if(_76b[this.searchAttr]!==this._lastQuery){return;}this.inherited(arguments);if(this.item===undefined){this.validate(true);}},_getValueAttr:function(){return this.valueNode.value;},_getValueField:function(){return "value";},_setValueAttr:function(_76d,_76e,_76f,item){if(!this._onChangeActive){_76e=null;}if(item===undefined){if(_76d===null||_76d===""){_76d="";if(!lang.isString(_76f)){this._setDisplayedValueAttr(_76f||"",_76e);return;}}var self=this;this._lastQuery=_76d;when(this.store.get(_76d),function(item){self._callbackSetLabel(item?[item]:[],undefined,undefined,_76e);});}else{this.valueNode.value=_76d;this.inherited(arguments,[_76d,_76e,_76f,item]);}},_setItemAttr:function(item,_770,_771){this.inherited(arguments);this._lastDisplayedValue=this.textbox.value;},_getDisplayQueryString:function(text){return text.replace(/([\\\*\?])/g,"\\$1");},_setDisplayedValueAttr:function(_772,_773){if(_772==null){_772="";}if(!this._created){if(!("displayedValue" in this.params)){return;}_773=false;}if(this.store){this.closeDropDown();var _774=lang.clone(this.query);var qs=this._getDisplayQueryString(_772),q;if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_774[this.searchAttr]=q;this.textbox.value=_772;this._lastDisplayedValue=_772;this._set("displayedValue",_772);var _775=this;var _776={queryOptions:{ignoreCase:this.ignoreCase,deep:true}};lang.mixin(_776,this.fetchProperties);this._fetchHandle=this.store.query(_774,_776);when(this._fetchHandle,function(_777){_775._fetchHandle=null;_775._callbackSetLabel(_777||[],_774,_776,_773);},function(err){_775._fetchHandle=null;if(!_775._cancelingQuery){console.error("dijit.form.FilteringSelect: "+err.toString());}});}},undo:function(){this.set("displayedValue",this._lastDisplayedValue);}});});},"dijit/form/MappedTextBox":function(){define(["dojo/_base/declare","dojo/sniff","dojo/dom-construct","./ValidationTextBox"],function(_778,has,_779,_77a){return _778("dijit.form.MappedTextBox",_77a,{postMixInProperties:function(){this.inherited(arguments);this.nameAttrSetting="";},_setNameAttr:"valueNode",serialize:function(val){return val.toString?val.toString():"";},toString:function(){var val=this.filter(this.get("value"));return val!=null?(typeof val=="string"?val:this.serialize(val,this.constraints)):"";},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);this.valueNode=_779.place("<input type='hidden'"+((this.name&&!has("msapp"))?" name=\""+this.name.replace(/"/g,"&quot;")+"\"":"")+"/>",this.textbox,"after");},reset:function(){this.valueNode.value="";this.inherited(arguments);}});});},"dijit/form/ValidationTextBox":function(){define(["dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/i18n","./TextBox","../Tooltip","dojo/text!./templates/ValidationTextBox.html","dojo/i18n!./nls/validate"],function(_77b,_77c,lang,i18n,_77d,_77e,_77f){var _780=_77b("dijit.form.ValidationTextBox",_77d,{templateString:_77f,required:false,promptMessage:"",invalidMessage:"$_unset_$",missingMessage:"$_unset_$",message:"",constraints:{},pattern:".*",regExp:"",regExpGen:function(){},state:"",tooltipPosition:[],_deprecateRegExp:function(attr,_781){if(_781!=_780.prototype[attr]){_77c.deprecated("ValidationTextBox id="+this.id+", set('"+attr+"', ...) is deprecated. Use set('pattern', ...) instead.","","2.0");this.set("pattern",_781);}},_setRegExpGenAttr:function(_782){this._deprecateRegExp("regExpGen",_782);this._set("regExpGen",this._computeRegexp);},_setRegExpAttr:function(_783){this._deprecateRegExp("regExp",_783);},_setValueAttr:function(){this.inherited(arguments);this._refreshState();},validator:function(_784,_785){return (new RegExp("^(?:"+this._computeRegexp(_785)+")"+(this.required?"":"?")+"$")).test(_784)&&(!this.required||!this._isEmpty(_784))&&(this._isEmpty(_784)||this.parse(_784,_785)!==undefined);},_isValidSubset:function(){return this.textbox.value.search(this._partialre)==0;},isValid:function(){return this.validator(this.textbox.value,this.get("constraints"));},_isEmpty:function(_786){return (this.trim?/^\s*$/:/^$/).test(_786);},getErrorMessage:function(){var _787=this.invalidMessage=="$_unset_$"?this.messages.invalidMessage:!this.invalidMessage?this.promptMessage:this.invalidMessage;var _788=this.missingMessage=="$_unset_$"?this.messages.missingMessage:!this.missingMessage?_787:this.missingMessage;return (this.required&&this._isEmpty(this.textbox.value))?_788:_787;},getPromptMessage:function(){return this.promptMessage;},_maskValidSubsetError:true,validate:function(_789){var _78a="";var _78b=this.disabled||this.isValid(_789);if(_78b){this._maskValidSubsetError=true;}var _78c=this._isEmpty(this.textbox.value);var _78d=!_78b&&_789&&this._isValidSubset();this._set("state",_78b?"":(((((!this._hasBeenBlurred||_789)&&_78c)||_78d)&&(this._maskValidSubsetError||(_78d&&!this._hasBeenBlurred&&_789)))?"Incomplete":"Error"));this.focusNode.setAttribute("aria-invalid",this.state=="Error"?"true":"false");if(this.state=="Error"){this._maskValidSubsetError=_789&&_78d;_78a=this.getErrorMessage(_789);}else{if(this.state=="Incomplete"){_78a=this.getPromptMessage(_789);this._maskValidSubsetError=!this._hasBeenBlurred||_789;}else{if(_78c){_78a=this.getPromptMessage(_789);}}}this.set("message",_78a);return _78b;},displayMessage:function(_78e){if(_78e&&this.focused){_77e.show(_78e,this.domNode,this.tooltipPosition,!this.isLeftToRight());}else{_77e.hide(this.domNode);}},_refreshState:function(){if(this._created){this.validate(this.focused);}this.inherited(arguments);},constructor:function(_78f){this.constraints=lang.clone(this.constraints);this.baseClass+=" dijitValidationTextBox";},startup:function(){this.inherited(arguments);this._refreshState();},_setConstraintsAttr:function(_790){if(!_790.locale&&this.lang){_790.locale=this.lang;}this._set("constraints",_790);this._refreshState();},_setPatternAttr:function(_791){this._set("pattern",_791);this._refreshState();},_computeRegexp:function(_792){var p=this.pattern;if(typeof p=="function"){p=p.call(this,_792);}if(p!=this._lastRegExp){var _793="";this._lastRegExp=p;if(p!=".*"){p.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(re){switch(re.charAt(0)){case "{":case "+":case "?":case "*":case "^":case "$":case "|":case "(":_793+=re;break;case ")":_793+="|$)";break;default:_793+="(?:"+re+"|$)";break;}});}try{"".search(_793);}catch(e){_793=this.pattern;console.warn("RegExp error in "+this.declaredClass+": "+this.pattern);}this._partialre="^(?:"+_793+")$";}return p;},postMixInProperties:function(){this.inherited(arguments);this.messages=i18n.getLocalization("dijit.form","validate",this.lang);this._setConstraintsAttr(this.constraints);},_setDisabledAttr:function(_794){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_795){this._set("required",_795);this.focusNode.setAttribute("aria-required",_795);this._refreshState();},_setMessageAttr:function(_796){this._set("message",_796);this.displayMessage(_796);},reset:function(){this._maskValidSubsetError=true;this.inherited(arguments);},_onBlur:function(){this.displayMessage("");this.inherited(arguments);},destroy:function(){_77e.hide(this.domNode);this.inherited(arguments);}});return _780;});},"dijit/form/TextBox":function(){define(["dojo/_base/declare","dojo/dom-construct","dojo/dom-style","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/sniff","./_FormValueWidget","./_TextBoxMixin","dojo/text!./templates/TextBox.html","../main"],function(_797,_798,_799,_79a,lang,on,has,_79b,_79c,_79d,_79e){var _79f=_797("dijit.form.TextBox"+(has("dojo-bidi")?"_NoBidi":""),[_79b,_79c],{templateString:_79d,_singleNodeTemplate:"<input class=\"dijit dijitReset dijitLeft dijitInputField\" data-dojo-attach-point=\"textbox,focusNode\" autocomplete=\"off\" type=\"${type}\" ${!nameAttrSetting} />",_buttonInputDisabled:has("ie")?"disabled":"",baseClass:"dijitTextBox",postMixInProperties:function(){var type=this.type.toLowerCase();if(this.templateString&&this.templateString.toLowerCase()=="input"||((type=="hidden"||type=="file")&&this.templateString==this.constructor.prototype.templateString)){this.templateString=this._singleNodeTemplate;}this.inherited(arguments);},postCreate:function(){this.inherited(arguments);if(has("ie")<9){this.defer(function(){try{var s=_799.getComputedStyle(this.domNode);if(s){var ff=s.fontFamily;if(ff){var _7a0=this.domNode.getElementsByTagName("INPUT");if(_7a0){for(var i=0;i<_7a0.length;i++){_7a0[i].style.fontFamily=ff;}}}}}catch(e){}});}},_setPlaceHolderAttr:function(v){this._set("placeHolder",v);if(!this._phspan){this._attachPoints.push("_phspan");this._phspan=_798.create("span",{className:"dijitPlaceHolder dijitInputField"},this.textbox,"after");this.own(on(this._phspan,"mousedown",function(evt){evt.preventDefault();}),on(this._phspan,"touchend, pointerup, MSPointerUp",lang.hitch(this,function(){this.focus();})));}this._phspan.innerHTML="";this._phspan.appendChild(this._phspan.ownerDocument.createTextNode(v));this._updatePlaceHolder();},_onInput:function(evt){this.inherited(arguments);this._updatePlaceHolder();},_updatePlaceHolder:function(){if(this._phspan){this._phspan.style.display=(this.placeHolder&&!this.textbox.value)?"":"none";}},_setValueAttr:function(_7a1,_7a2,_7a3){this.inherited(arguments);this._updatePlaceHolder();},getDisplayedValue:function(){_79a.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.","","2.0");return this.get("displayedValue");},setDisplayedValue:function(_7a4){_79a.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",_7a4);},_onBlur:function(e){if(this.disabled){return;}this.inherited(arguments);this._updatePlaceHolder();if(has("mozilla")){if(this.selectOnClick){this.textbox.selectionStart=this.textbox.selectionEnd=undefined;}}},_onFocus:function(by){if(this.disabled||this.readOnly){return;}this.inherited(arguments);this._updatePlaceHolder();}});if(has("ie")<9){_79f.prototype._isTextSelected=function(){var _7a5=this.ownerDocument.selection.createRange();var _7a6=_7a5.parentElement();return _7a6==this.textbox&&_7a5.text.length>0;};_79e._setSelectionRange=_79c._setSelectionRange=function(_7a7,_7a8,stop){if(_7a7.createTextRange){var r=_7a7.createTextRange();r.collapse(true);r.moveStart("character",-99999);r.moveStart("character",_7a8);r.moveEnd("character",stop-_7a8);r.select();}};}if(has("dojo-bidi")){_79f=_797("dijit.form.TextBox",_79f,{_setPlaceHolderAttr:function(v){this.inherited(arguments);this.applyTextDir(this._phspan);}});}return _79f;});},"dijit/form/_TextBoxMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/sniff","dojo/keys","dojo/_base/lang","dojo/on","../main"],function(_7a9,_7aa,dom,has,keys,lang,on,_7ab){var _7ac=_7aa("dijit.form._TextBoxMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{trim:false,uppercase:false,lowercase:false,propercase:false,maxLength:"",selectOnClick:false,placeHolder:"",_getValueAttr:function(){return this.parse(this.get("displayedValue"),this.constraints);},_setValueAttr:function(_7ad,_7ae,_7af){var _7b0;if(_7ad!==undefined){_7b0=this.filter(_7ad);if(typeof _7af!="string"){if(_7b0!==null&&((typeof _7b0!="number")||!isNaN(_7b0))){_7af=this.filter(this.format(_7b0,this.constraints));}else{_7af="";}if(this.compare(_7b0,this.filter(this.parse(_7af,this.constraints)))!=0){_7af=null;}}}if(_7af!=null&&((typeof _7af)!="number"||!isNaN(_7af))&&this.textbox.value!=_7af){this.textbox.value=_7af;this._set("displayedValue",this.get("displayedValue"));}this.inherited(arguments,[_7b0,_7ae]);},displayedValue:"",_getDisplayedValueAttr:function(){return this.filter(this.textbox.value);},_setDisplayedValueAttr:function(_7b1){if(_7b1==null){_7b1="";}else{if(typeof _7b1!="string"){_7b1=String(_7b1);}}this.textbox.value=_7b1;this._setValueAttr(this.get("value"),undefined);this._set("displayedValue",this.get("displayedValue"));},format:function(_7b2){return _7b2==null?"":(_7b2.toString?_7b2.toString():_7b2);},parse:function(_7b3){return _7b3;},_refreshState:function(){},onInput:function(){},_onInput:function(evt){this._lastInputEventValue=this.textbox.value;this._processInput(this._lastInputProducingEvent||evt);delete this._lastInputProducingEvent;if(this.intermediateChanges){this._handleOnChange(this.get("value"),false);}},_processInput:function(){this._refreshState();this._set("displayedValue",this.get("displayedValue"));},postCreate:function(){this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);function _7b4(e){var _7b5;if(e.type=="keydown"&&e.keyCode!=229){_7b5=e.keyCode;switch(_7b5){case keys.SHIFT:case keys.ALT:case keys.CTRL:case keys.META:case keys.CAPS_LOCK:case keys.NUM_LOCK:case keys.SCROLL_LOCK:return;}if(!e.ctrlKey&&!e.metaKey&&!e.altKey){switch(_7b5){case keys.NUMPAD_0:case keys.NUMPAD_1:case keys.NUMPAD_2:case keys.NUMPAD_3:case keys.NUMPAD_4:case keys.NUMPAD_5:case keys.NUMPAD_6:case keys.NUMPAD_7:case keys.NUMPAD_8:case keys.NUMPAD_9:case keys.NUMPAD_MULTIPLY:case keys.NUMPAD_PLUS:case keys.NUMPAD_ENTER:case keys.NUMPAD_MINUS:case keys.NUMPAD_PERIOD:case keys.NUMPAD_DIVIDE:return;}if((_7b5>=65&&_7b5<=90)||(_7b5>=48&&_7b5<=57)||_7b5==keys.SPACE){return;}var _7b6=false;for(var i in keys){if(keys[i]===e.keyCode){_7b6=true;break;}}if(!_7b6){return;}}}_7b5=e.charCode>=32?String.fromCharCode(e.charCode):e.charCode;if(!_7b5){_7b5=(e.keyCode>=65&&e.keyCode<=90)||(e.keyCode>=48&&e.keyCode<=57)||e.keyCode==keys.SPACE?String.fromCharCode(e.keyCode):e.keyCode;}if(!_7b5){_7b5=229;}if(e.type=="keypress"){if(typeof _7b5!="string"){return;}if((_7b5>="a"&&_7b5<="z")||(_7b5>="A"&&_7b5<="Z")||(_7b5>="0"&&_7b5<="9")||(_7b5===" ")){if(e.ctrlKey||e.metaKey||e.altKey){return;}}}var faux={faux:true},attr;for(attr in e){if(!/^(layer[XY]|returnValue|keyLocation)$/.test(attr)){var v=e[attr];if(typeof v!="function"&&typeof v!="undefined"){faux[attr]=v;}}}lang.mixin(faux,{charOrCode:_7b5,_wasConsumed:false,preventDefault:function(){faux._wasConsumed=true;e.preventDefault();},stopPropagation:function(){e.stopPropagation();}});this._lastInputProducingEvent=faux;if(this.onInput(faux)===false){faux.preventDefault();faux.stopPropagation();}if(faux._wasConsumed){return;}if(has("ie")<=9){switch(e.keyCode){case keys.TAB:case keys.ESCAPE:case keys.DOWN_ARROW:case keys.UP_ARROW:case keys.LEFT_ARROW:case keys.RIGHT_ARROW:break;default:if(e.keyCode==keys.ENTER&&this.textbox.tagName.toLowerCase()!="textarea"){break;}this.defer(function(){if(this.textbox.value!==this._lastInputEventValue){on.emit(this.textbox,"input",{bubbles:true});}});}}};this.own(on(this.textbox,"keydown, keypress, paste, cut, compositionend",lang.hitch(this,_7b4)),on(this.textbox,"input",lang.hitch(this,"_onInput")),on(this.domNode,"keypress",function(e){e.stopPropagation();}));},_blankValue:"",filter:function(val){if(val===null){return this._blankValue;}if(typeof val!="string"){return val;}if(this.trim){val=lang.trim(val);}if(this.uppercase){val=val.toUpperCase();}if(this.lowercase){val=val.toLowerCase();}if(this.propercase){val=val.replace(/[^\s]+/g,function(word){return word.substring(0,1).toUpperCase()+word.substring(1);});}return val;},_setBlurValue:function(){this._setValueAttr(this.get("value"),true);},_onBlur:function(e){if(this.disabled){return;}this._setBlurValue();this.inherited(arguments);},_isTextSelected:function(){return this.textbox.selectionStart!=this.textbox.selectionEnd;},_onFocus:function(by){if(this.disabled||this.readOnly){return;}if(this.selectOnClick&&by=="mouse"){this._selectOnClickHandle=on.once(this.domNode,"mouseup, touchend",lang.hitch(this,function(evt){if(!this._isTextSelected()){_7ac.selectInputText(this.textbox);}}));this.own(this._selectOnClickHandle);this.defer(function(){if(this._selectOnClickHandle){this._selectOnClickHandle.remove();this._selectOnClickHandle=null;}},500);}this.inherited(arguments);this._refreshState();},reset:function(){this.textbox.value="";this.inherited(arguments);}});if(has("dojo-bidi")){_7ac=_7aa("dijit.form._TextBoxMixin",_7ac,{_setValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.focusNode);},_setDisplayedValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.focusNode);},_onInput:function(){this.applyTextDir(this.focusNode);this.inherited(arguments);}});}_7ac._setSelectionRange=_7ab._setSelectionRange=function(_7b7,_7b8,stop){if(_7b7.setSelectionRange){_7b7.setSelectionRange(_7b8,stop);}};_7ac.selectInputText=_7ab.selectInputText=function(_7b9,_7ba,stop){_7b9=dom.byId(_7b9);if(isNaN(_7ba)){_7ba=0;}if(isNaN(stop)){stop=_7b9.value?_7b9.value.length:0;}try{_7b9.focus();_7ac._setSelectionRange(_7b9,_7ba,stop);}catch(e){}};return _7ac;});},"dijit/Tooltip":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/fx","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang","dojo/mouse","dojo/on","dojo/sniff","./_base/manager","./place","./_Widget","./_TemplatedMixin","./BackgroundIframe","dojo/text!./templates/Tooltip.html","./main"],function(_7bb,_7bc,fx,dom,_7bd,_7be,_7bf,lang,_7c0,on,has,_7c1,_7c2,_7c3,_7c4,_7c5,_7c6,_7c7){var _7c8=_7bc("dijit._MasterTooltip",[_7c3,_7c4],{duration:_7c1.defaultDuration,templateString:_7c6,postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);this.bgIframe=new _7c5(this.domNode);this.fadeIn=fx.fadeIn({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,"_onShow")});this.fadeOut=fx.fadeOut({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,"_onHide")});},show:function(_7c9,_7ca,_7cb,rtl,_7cc,_7cd,_7ce){if(this.aroundNode&&this.aroundNode===_7ca&&this.containerNode.innerHTML==_7c9){return;}if(this.fadeOut.status()=="playing"){this._onDeck=arguments;return;}this.containerNode.innerHTML=_7c9;if(_7cc){this.set("textDir",_7cc);}this.containerNode.align=rtl?"right":"left";var pos=_7c2.around(this.domNode,_7ca,_7cb&&_7cb.length?_7cb:_7cf.defaultPosition,!rtl,lang.hitch(this,"orient"));var _7d0=pos.aroundNodePos;if(pos.corner.charAt(0)=="M"&&pos.aroundCorner.charAt(0)=="M"){this.connectorNode.style.top=_7d0.y+((_7d0.h-this.connectorNode.offsetHeight)>>1)-pos.y+"px";this.connectorNode.style.left="";}else{if(pos.corner.charAt(1)=="M"&&pos.aroundCorner.charAt(1)=="M"){this.connectorNode.style.left=_7d0.x+((_7d0.w-this.connectorNode.offsetWidth)>>1)-pos.x+"px";}else{this.connectorNode.style.left="";this.connectorNode.style.top="";}}_7bf.set(this.domNode,"opacity",0);this.fadeIn.play();this.isShowingNow=true;this.aroundNode=_7ca;this.onMouseEnter=_7cd||noop;this.onMouseLeave=_7ce||noop;},orient:function(node,_7d1,_7d2,_7d3,_7d4){this.connectorNode.style.top="";var _7d5=_7d3.h,_7d6=_7d3.w;node.className="dijitTooltip "+{"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[_7d1+"-"+_7d2];this.domNode.style.width="auto";var size=_7be.position(this.domNode);if(has("ie")||has("trident")){size.w+=2;}var _7d7=Math.min((Math.max(_7d6,1)),size.w);_7be.setMarginBox(this.domNode,{w:_7d7});if(_7d2.charAt(0)=="B"&&_7d1.charAt(0)=="B"){var bb=_7be.position(node);var _7d8=this.connectorNode.offsetHeight;if(bb.h>_7d5){var _7d9=_7d5-((_7d4.h+_7d8)>>1);this.connectorNode.style.top=_7d9+"px";this.connectorNode.style.bottom="";}else{this.connectorNode.style.bottom=Math.min(Math.max(_7d4.h/2-_7d8/2,0),bb.h-_7d8)+"px";this.connectorNode.style.top="";}}else{this.connectorNode.style.top="";this.connectorNode.style.bottom="";}return Math.max(0,size.w-_7d6);},_onShow:function(){if(has("ie")){this.domNode.style.filter="";}},hide:function(_7da){if(this._onDeck&&this._onDeck[1]==_7da){this._onDeck=null;}else{if(this.aroundNode===_7da){this.fadeIn.stop();this.isShowingNow=false;this.aroundNode=null;this.fadeOut.play();}else{}}this.onMouseEnter=this.onMouseLeave=noop;},_onHide:function(){this.domNode.style.cssText="";this.containerNode.innerHTML="";if(this._onDeck){this.show.apply(this,this._onDeck);this._onDeck=null;}}});if(has("dojo-bidi")){_7c8.extend({_setAutoTextDir:function(node){this.applyTextDir(node);_7bb.forEach(node.children,function(_7db){this._setAutoTextDir(_7db);},this);},_setTextDirAttr:function(_7dc){this._set("textDir",_7dc);if(_7dc=="auto"){this._setAutoTextDir(this.containerNode);}else{this.containerNode.dir=this.textDir;}}});}_7c7.showTooltip=function(_7dd,_7de,_7df,rtl,_7e0,_7e1,_7e2){if(_7df){_7df=_7bb.map(_7df,function(val){return {after:"after-centered",before:"before-centered"}[val]||val;});}if(!_7cf._masterTT){_7c7._masterTT=_7cf._masterTT=new _7c8();}return _7cf._masterTT.show(_7dd,_7de,_7df,rtl,_7e0,_7e1,_7e2);};_7c7.hideTooltip=function(_7e3){return _7cf._masterTT&&_7cf._masterTT.hide(_7e3);};var _7e4="DORMANT",_7e5="SHOW TIMER",_7e6="SHOWING",_7e7="HIDE TIMER";function noop(){};var _7cf=_7bc("dijit.Tooltip",_7c3,{label:"",showDelay:400,hideDelay:400,connectId:[],position:[],selector:"",_setConnectIdAttr:function(_7e8){_7bb.forEach(this._connections||[],function(_7e9){_7bb.forEach(_7e9,function(_7ea){_7ea.remove();});},this);this._connectIds=_7bb.filter(lang.isArrayLike(_7e8)?_7e8:(_7e8?[_7e8]:[]),function(id){return dom.byId(id,this.ownerDocument);},this);this._connections=_7bb.map(this._connectIds,function(id){var node=dom.byId(id,this.ownerDocument),_7eb=this.selector,_7ec=_7eb?function(_7ed){return on.selector(_7eb,_7ed);}:function(_7ee){return _7ee;},self=this;return [on(node,_7ec(_7c0.enter),function(){self._onHover(this);}),on(node,_7ec("focusin"),function(){self._onHover(this);}),on(node,_7ec(_7c0.leave),lang.hitch(self,"_onUnHover")),on(node,_7ec("focusout"),lang.hitch(self,"set","state",_7e4))];},this);this._set("connectId",_7e8);},addTarget:function(node){var id=node.id||node;if(_7bb.indexOf(this._connectIds,id)==-1){this.set("connectId",this._connectIds.concat(id));}},removeTarget:function(node){var id=node.id||node,idx=_7bb.indexOf(this._connectIds,id);if(idx>=0){this._connectIds.splice(idx,1);this.set("connectId",this._connectIds);}},buildRendering:function(){this.inherited(arguments);_7bd.add(this.domNode,"dijitTooltipData");},startup:function(){this.inherited(arguments);var ids=this.connectId;_7bb.forEach(lang.isArrayLike(ids)?ids:[ids],this.addTarget,this);},getContent:function(node){return this.label||this.domNode.innerHTML;},state:_7e4,_setStateAttr:function(val){if(this.state==val||(val==_7e5&&this.state==_7e6)||(val==_7e7&&this.state==_7e4)){return;}if(this._hideTimer){this._hideTimer.remove();delete this._hideTimer;}if(this._showTimer){this._showTimer.remove();delete this._showTimer;}switch(val){case _7e4:if(this._connectNode){_7cf.hide(this._connectNode);delete this._connectNode;this.onHide();}break;case _7e5:if(this.state!=_7e6){this._showTimer=this.defer(function(){this.set("state",_7e6);},this.showDelay);}break;case _7e6:var _7ef=this.getContent(this._connectNode);if(!_7ef){this.set("state",_7e4);return;}_7cf.show(_7ef,this._connectNode,this.position,!this.isLeftToRight(),this.textDir,lang.hitch(this,"set","state",_7e6),lang.hitch(this,"set","state",_7e7));this.onShow(this._connectNode,this.position);break;case _7e7:this._hideTimer=this.defer(function(){this.set("state",_7e4);},this.hideDelay);break;}this._set("state",val);},_onHover:function(_7f0){if(this._connectNode&&_7f0!=this._connectNode){this.set("state",_7e4);}this._connectNode=_7f0;this.set("state",_7e5);},_onUnHover:function(_7f1){this.set("state",_7e7);},open:function(_7f2){this.set("state",_7e4);this._connectNode=_7f2;this.set("state",_7e6);},close:function(){this.set("state",_7e4);},onShow:function(){},onHide:function(){},destroy:function(){this.set("state",_7e4);_7bb.forEach(this._connections||[],function(_7f3){_7bb.forEach(_7f3,function(_7f4){_7f4.remove();});},this);this.inherited(arguments);}});_7cf._MasterTooltip=_7c8;_7cf.show=_7c7.showTooltip;_7cf.hide=_7c7.hideTooltip;_7cf.defaultPosition=["after-centered","before-centered"];return _7cf;});},"dijit/form/ComboBoxMixin":function(){define(["dojo/_base/declare","dojo/Deferred","dojo/_base/kernel","dojo/_base/lang","dojo/store/util/QueryResults","./_AutoCompleterMixin","./_ComboBoxMenu","../_HasDropDown","dojo/text!./templates/DropDownBox.html"],function(_7f5,_7f6,_7f7,lang,_7f8,_7f9,_7fa,_7fb,_7fc){return _7f5("dijit.form.ComboBoxMixin",[_7fb,_7f9],{dropDownClass:_7fa,hasDownArrow:true,templateString:_7fc,baseClass:"dijitTextBox dijitComboBox",cssStateNodes:{"_buttonNode":"dijitDownArrowButton"},_setHasDownArrowAttr:function(val){this._set("hasDownArrow",val);this._buttonNode.style.display=val?"":"none";},_showResultList:function(){this.displayMessage("");this.inherited(arguments);},_setStoreAttr:function(_7fd){if(!_7fd.get){lang.mixin(_7fd,{_oldAPI:true,get:function(id){var _7fe=new _7f6();this.fetchItemByIdentity({identity:id,onItem:function(_7ff){_7fe.resolve(_7ff);},onError:function(_800){_7fe.reject(_800);}});return _7fe.promise;},query:function(_801,_802){var _803=new _7f6(function(){_804.abort&&_804.abort();});_803.total=new _7f6();var _804=this.fetch(lang.mixin({query:_801,onBegin:function(_805){_803.total.resolve(_805);},onComplete:function(_806){_803.resolve(_806);},onError:function(_807){_803.reject(_807);}},_802));return _7f8(_803);}});}this._set("store",_7fd);},postMixInProperties:function(){var _808=this.params.store||this.store;if(_808){this._setStoreAttr(_808);}this.inherited(arguments);if(!this.params.store&&this.store&&!this.store._oldAPI){var _809=this.declaredClass;lang.mixin(this.store,{getValue:function(item,attr){_7f7.deprecated(_809+".store.getValue(item, attr) is deprecated for builtin store. Use item.attr directly","","2.0");return item[attr];},getLabel:function(item){_7f7.deprecated(_809+".store.getLabel(item) is deprecated for builtin store. Use item.label directly","","2.0");return item.name;},fetch:function(args){_7f7.deprecated(_809+".store.fetch() is deprecated for builtin store.","Use store.query()","2.0");var shim=["dojo/data/ObjectStore"];require(shim,lang.hitch(this,function(_80a){new _80a({objectStore:this}).fetch(args);}));}});}},buildRendering:function(){this.inherited(arguments);this.focusNode.setAttribute("aria-autocomplete",this.autoComplete?"both":"list");}});});},"dojo/store/util/QueryResults":function(){define(["../../_base/array","../../_base/lang","../../when"],function(_80b,lang,when){var _80c=function(_80d){if(!_80d){return _80d;}var _80e=!!_80d.then;if(_80e){_80d=lang.delegate(_80d);}function _80f(_810){_80d[_810]=function(){var args=arguments;var _811=when(_80d,function(_812){Array.prototype.unshift.call(args,_812);return _80c(_80b[_810].apply(_80b,args));});if(_810!=="forEach"||_80e){return _811;}};};_80f("forEach");_80f("filter");_80f("map");if(_80d.total==null){_80d.total=when(_80d,function(_813){return _813.length;});}return _80d;};lang.setObject("dojo.store.util.QueryResults",_80c);return _80c;});},"dijit/form/_AutoCompleterMixin":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/query","dojo/regexp","dojo/sniff","./DataList","./_TextBoxMixin","./_SearchMixin"],function(_814,_815,_816,keys,lang,_817,_818,has,_819,_81a,_81b){var _81c=_815("dijit.form._AutoCompleterMixin",_81b,{item:null,autoComplete:true,highlightMatch:"first",labelAttr:"",labelType:"text",maxHeight:-1,_stopClickEvents:false,_getCaretPos:function(_81d){var pos=0;if(typeof (_81d.selectionStart)=="number"){pos=_81d.selectionStart;}else{if(has("ie")){var tr=_81d.ownerDocument.selection.createRange().duplicate();var ntr=_81d.createTextRange();tr.move("character",0);ntr.move("character",0);try{ntr.setEndPoint("EndToEnd",tr);pos=String(ntr.text).replace(/\r/g,"").length;}catch(e){}}}return pos;},_setCaretPos:function(_81e,_81f){_81f=parseInt(_81f);_81a.selectInputText(_81e,_81f,_81f);},_setDisabledAttr:function(_820){this.inherited(arguments);this.domNode.setAttribute("aria-disabled",_820?"true":"false");},_onKey:function(evt){if(evt.charCode>=32){return;}var key=evt.charCode||evt.keyCode;if(key==keys.ALT||key==keys.CTRL||key==keys.META||key==keys.SHIFT){return;}var pw=this.dropDown;var _821=null;this._abortQuery();this.inherited(arguments);if(evt.altKey||evt.ctrlKey||evt.metaKey){return;}if(this._opened){_821=pw.getHighlightedOption();}switch(key){case keys.PAGE_DOWN:case keys.DOWN_ARROW:case keys.PAGE_UP:case keys.UP_ARROW:if(this._opened){this._announceOption(_821);}evt.stopPropagation();evt.preventDefault();break;case keys.ENTER:if(_821){if(_821==pw.nextButton){this._nextSearch(1);evt.stopPropagation();evt.preventDefault();break;}else{if(_821==pw.previousButton){this._nextSearch(-1);evt.stopPropagation();evt.preventDefault();break;}}evt.stopPropagation();evt.preventDefault();}else{this._setBlurValue();this._setCaretPos(this.focusNode,this.focusNode.value.length);}case keys.TAB:var _822=this.get("displayedValue");if(pw&&(_822==pw._messages["previousMessage"]||_822==pw._messages["nextMessage"])){break;}if(_821){this._selectOption(_821);}case keys.ESCAPE:if(this._opened){this._lastQuery=null;this.closeDropDown();}break;}},_autoCompleteText:function(text){var fn=this.focusNode;_81a.selectInputText(fn,fn.value.length);var _823=this.ignoreCase?"toLowerCase":"substr";if(text[_823](0).indexOf(this.focusNode.value[_823](0))==0){var cpos=this.autoComplete?this._getCaretPos(fn):fn.value.length;if((cpos+1)>fn.value.length){fn.value=text;_81a.selectInputText(fn,cpos);}}else{fn.value=text;_81a.selectInputText(fn);}},_openResultList:function(_824,_825,_826){var _827=this.dropDown.getHighlightedOption();this.dropDown.clearResultList();if(!_824.length&&_826.start==0){this.closeDropDown();return;}this._nextSearch=this.dropDown.onPage=lang.hitch(this,function(_828){_824.nextPage(_828!==-1);this.focus();});this.dropDown.createOptions(_824,_826,lang.hitch(this,"_getMenuLabelFromItem"));this._showResultList();if("direction" in _826){if(_826.direction){this.dropDown.highlightFirstOption();}else{if(!_826.direction){this.dropDown.highlightLastOption();}}if(_827){this._announceOption(this.dropDown.getHighlightedOption());}}else{if(this.autoComplete&&!this._prev_key_backspace&&!/^[*]+$/.test(_825[this.searchAttr].toString())){this._announceOption(this.dropDown.containerNode.firstChild.nextSibling);}}},_showResultList:function(){this.closeDropDown(true);this.openDropDown();this.domNode.setAttribute("aria-expanded","true");},loadDropDown:function(){this._startSearchAll();},isLoaded:function(){return false;},closeDropDown:function(){this._abortQuery();if(this._opened){this.inherited(arguments);this.domNode.setAttribute("aria-expanded","false");}},_setBlurValue:function(){var _829=this.get("displayedValue");var pw=this.dropDown;if(pw&&(_829==pw._messages["previousMessage"]||_829==pw._messages["nextMessage"])){this._setValueAttr(this._lastValueReported,true);}else{if(typeof this.item=="undefined"){this.item=null;this.set("displayedValue",_829);}else{if(this.value!=this._lastValueReported){this._handleOnChange(this.value,true);}this._refreshState();}}this.focusNode.removeAttribute("aria-activedescendant");},_setItemAttr:function(item,_82a,_82b){var _82c="";if(item){if(!_82b){_82b=this.store._oldAPI?this.store.getValue(item,this.searchAttr):item[this.searchAttr];}_82c=this._getValueField()!=this.searchAttr?this.store.getIdentity(item):_82b;}this.set("value",_82c,_82a,_82b,item);},_announceOption:function(node){if(!node){return;}var _82d;if(node==this.dropDown.nextButton||node==this.dropDown.previousButton){_82d=node.innerHTML;this.item=undefined;this.value="";}else{var item=this.dropDown.items[node.getAttribute("item")];_82d=(this.store._oldAPI?this.store.getValue(item,this.searchAttr):item[this.searchAttr]).toString();this.set("item",item,false,_82d);}this.focusNode.value=this.focusNode.value.substring(0,this._lastInput.length);this.focusNode.setAttribute("aria-activedescendant",_816.get(node,"id"));this._autoCompleteText(_82d);},_selectOption:function(_82e){this.closeDropDown();if(_82e){this._announceOption(_82e);}this._setCaretPos(this.focusNode,this.focusNode.value.length);this._handleOnChange(this.value,true);this.focusNode.removeAttribute("aria-activedescendant");},_startSearchAll:function(){this._startSearch("");},_startSearchFromInput:function(){this.item=undefined;this.inherited(arguments);},_startSearch:function(key){if(!this.dropDown){var _82f=this.id+"_popup",_830=lang.isString(this.dropDownClass)?lang.getObject(this.dropDownClass,false):this.dropDownClass;this.dropDown=new _830({onChange:lang.hitch(this,this._selectOption),id:_82f,dir:this.dir,textDir:this.textDir});}this._lastInput=key;this.inherited(arguments);},_getValueField:function(){return this.searchAttr;},postMixInProperties:function(){this.inherited(arguments);if(!this.store&&this.srcNodeRef){var _831=this.srcNodeRef;this.store=new _819({},_831);if(!("value" in this.params)){var item=(this.item=this.store.fetchSelectedItem());if(item){var _832=this._getValueField();this.value=this.store._oldAPI?this.store.getValue(item,_832):item[_832];}}}},postCreate:function(){var _833=_817("label[for=\""+this.id+"\"]");if(_833.length){if(!_833[0].id){_833[0].id=this.id+"_label";}this.domNode.setAttribute("aria-labelledby",_833[0].id);}this.inherited(arguments);_814.after(this,"onSearch",lang.hitch(this,"_openResultList"),true);},_getMenuLabelFromItem:function(item){var _834=this.labelFunc(item,this.store),_835=this.labelType;if(this.highlightMatch!="none"&&this.labelType=="text"&&this._lastInput){_834=this.doHighlight(_834,this._lastInput);_835="html";}return {html:_835=="html",label:_834};},doHighlight:function(_836,find){var _837=(this.ignoreCase?"i":"")+(this.highlightMatch=="all"?"g":""),i=this.queryExpr.indexOf("${0}");find=_818.escapeString(find);return this._escapeHtml(_836.replace(new RegExp((i==0?"^":"")+"("+find+")"+(i==(this.queryExpr.length-4)?"$":""),_837),"\uffff$1\uffff")).replace(/\uFFFF([^\uFFFF]+)\uFFFF/g,"<span class=\"dijitComboBoxHighlightMatch\">$1</span>");},_escapeHtml:function(str){str=String(str).replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");return str;},reset:function(){this.item=null;this.inherited(arguments);},labelFunc:function(item,_838){return (_838._oldAPI?_838.getValue(item,this.labelAttr||this.searchAttr):item[this.labelAttr||this.searchAttr]).toString();},_setValueAttr:function(_839,_83a,_83b,item){this._set("item",item||null);if(_839==null){_839="";}this.inherited(arguments);}});if(has("dojo-bidi")){_81c.extend({_setTextDirAttr:function(_83c){this.inherited(arguments);if(this.dropDown){this.dropDown._set("textDir",_83c);}}});}return _81c;});},"dojo/regexp":function(){define(["./_base/kernel","./_base/lang"],function(dojo,lang){var _83d={};lang.setObject("dojo.regexp",_83d);_83d.escapeString=function(str,_83e){return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+\-^])/g,function(ch){if(_83e&&_83e.indexOf(ch)!=-1){return ch;}return "\\"+ch;});};_83d.buildGroupRE=function(arr,re,_83f){if(!(arr instanceof Array)){return re(arr);}var b=[];for(var i=0;i<arr.length;i++){b.push(re(arr[i]));}return _83d.group(b.join("|"),_83f);};_83d.group=function(_840,_841){return "("+(_841?"?:":"")+_840+")";};return _83d;});},"dijit/form/DataList":function(){define(["dojo/_base/declare","dojo/dom","dojo/_base/lang","dojo/query","dojo/store/Memory","../registry"],function(_842,dom,lang,_843,_844,_845){function _846(_847){return {id:_847.value,value:_847.value,name:lang.trim(_847.innerText||_847.textContent||"")};};return _842("dijit.form.DataList",_844,{constructor:function(_848,_849){this.domNode=dom.byId(_849);lang.mixin(this,_848);if(this.id){_845.add(this);}this.domNode.style.display="none";this.inherited(arguments,[{data:_843("option",this.domNode).map(_846)}]);},destroy:function(){_845.remove(this.id);},fetchSelectedItem:function(){var _84a=_843("> option[selected]",this.domNode)[0]||_843("> option",this.domNode)[0];return _84a&&_846(_84a);}});});},"dojo/store/Memory":function(){define(["../_base/declare","./util/QueryResults","./util/SimpleQueryEngine"],function(_84b,_84c,_84d){var base=null;return _84b("dojo.store.Memory",base,{constructor:function(_84e){for(var i in _84e){this[i]=_84e[i];}this.setData(this.data||[]);},data:null,idProperty:"id",index:null,queryEngine:_84d,get:function(id){return this.data[this.index[id]];},getIdentity:function(_84f){return _84f[this.idProperty];},put:function(_850,_851){var data=this.data,_852=this.index,_853=this.idProperty;var id=_850[_853]=(_851&&"id" in _851)?_851.id:_853 in _850?_850[_853]:Math.random();if(id in _852){if(_851&&_851.overwrite===false){throw new Error("Object already exists");}data[_852[id]]=_850;}else{_852[id]=data.push(_850)-1;}return id;},add:function(_854,_855){(_855=_855||{}).overwrite=false;return this.put(_854,_855);},remove:function(id){var _856=this.index;var data=this.data;if(id in _856){data.splice(_856[id],1);this.setData(data);return true;}},query:function(_857,_858){return _84c(this.queryEngine(_857,_858)(this.data));},setData:function(data){if(data.items){this.idProperty=data.identifier||this.idProperty;data=this.data=data.items;}else{this.data=data;}this.index={};for(var i=0,l=data.length;i<l;i++){this.index[data[i][this.idProperty]]=i;}}});});},"dojo/store/util/SimpleQueryEngine":function(){define(["../../_base/array"],function(_859){return function(_85a,_85b){switch(typeof _85a){default:throw new Error("Can not query with a "+typeof _85a);case "object":case "undefined":var _85c=_85a;_85a=function(_85d){for(var key in _85c){var _85e=_85c[key];if(_85e&&_85e.test){if(!_85e.test(_85d[key],_85d)){return false;}}else{if(_85e!=_85d[key]){return false;}}}return true;};break;case "string":if(!this[_85a]){throw new Error("No filter function "+_85a+" was found in store");}_85a=this[_85a];case "function":}function _85f(_860){var _861=_859.filter(_860,_85a);var _862=_85b&&_85b.sort;if(_862){_861.sort(typeof _862=="function"?_862:function(a,b){for(var sort,i=0;sort=_862[i];i++){var _863=a[sort.attribute];var _864=b[sort.attribute];_863=_863!=null?_863.valueOf():_863;_864=_864!=null?_864.valueOf():_864;if(_863!=_864){return !!sort.descending==(_863==null||_863>_864)?-1:1;}}return 0;});}if(_85b&&(_85b.start||_85b.count)){var _865=_861.length;_861=_861.slice(_85b.start||0,(_85b.start||0)+(_85b.count||Infinity));_861.total=_865;}return _861;};_85f.matches=_85a;return _85f;};});},"dijit/form/_SearchMixin":function(){define(["dojo/_base/declare","dojo/keys","dojo/_base/lang","dojo/query","dojo/string","dojo/when","../registry"],function(_866,keys,lang,_867,_868,when,_869){return _866("dijit.form._SearchMixin",null,{pageSize:Infinity,store:null,fetchProperties:{},query:{},list:"",_setListAttr:function(list){this._set("list",list);},searchDelay:200,searchAttr:"name",queryExpr:"${0}*",ignoreCase:true,_patternToRegExp:function(_86a){return new RegExp("^"+_86a.replace(/(\\.)|(\*)|(\?)|\W/g,function(str,_86b,star,_86c){return star?".*":_86c?".":_86b?_86b:"\\"+str;})+"$",this.ignoreCase?"mi":"m");},_abortQuery:function(){if(this.searchTimer){this.searchTimer=this.searchTimer.remove();}if(this._queryDeferHandle){this._queryDeferHandle=this._queryDeferHandle.remove();}if(this._fetchHandle){if(this._fetchHandle.abort){this._cancelingQuery=true;this._fetchHandle.abort();this._cancelingQuery=false;}if(this._fetchHandle.cancel){this._cancelingQuery=true;this._fetchHandle.cancel();this._cancelingQuery=false;}this._fetchHandle=null;}},_processInput:function(evt){if(this.disabled||this.readOnly){return;}var key=evt.charOrCode;this._prev_key_backspace=false;if(key===keys.DELETE||key===keys.BACKSPACE){this._prev_key_backspace=true;this._maskValidSubsetError=true;}if(!this.store){this.onSearch();}else{this.searchTimer=this.defer("_startSearchFromInput",1);}},onSearch:function(){},_startSearchFromInput:function(){this._startSearch(this.focusNode.value);},_startSearch:function(text){this._abortQuery();var _86d=this,_867=lang.clone(this.query),_86e={start:0,count:this.pageSize,queryOptions:{ignoreCase:this.ignoreCase,deep:true}},qs=_868.substitute(this.queryExpr,[text.replace(/([\\\*\?])/g,"\\$1")]),q,_86f=function(){var _870=_86d._fetchHandle=_86d.store.query(_867,_86e);if(_86d.disabled||_86d.readOnly||(q!==_86d._lastQuery)){return;}when(_870,function(res){_86d._fetchHandle=null;if(!_86d.disabled&&!_86d.readOnly&&(q===_86d._lastQuery)){when(_870.total,function(_871){res.total=_871;var _872=_86d.pageSize;if(isNaN(_872)||_872>res.total){_872=res.total;}res.nextPage=function(_873){_86e.direction=_873=_873!==false;_86e.count=_872;if(_873){_86e.start+=res.length;if(_86e.start>=res.total){_86e.count=0;}}else{_86e.start-=_872;if(_86e.start<0){_86e.count=Math.max(_872+_86e.start,0);_86e.start=0;}}if(_86e.count<=0){res.length=0;_86d.onSearch(res,_867,_86e);}else{_86f();}};_86d.onSearch(res,_867,_86e);});}},function(err){_86d._fetchHandle=null;if(!_86d._cancelingQuery){console.error(_86d.declaredClass+" "+err.toString());}});};lang.mixin(_86e,this.fetchProperties);if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_867[this.searchAttr]=q;this._queryDeferHandle=this.defer(_86f,this.searchDelay);},constructor:function(){this.query={};this.fetchProperties={};},postMixInProperties:function(){if(!this.store){var list=this.list;if(list){this.store=_869.byId(list);}}this.inherited(arguments);}});});},"dijit/form/_ComboBoxMenu":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/dom-style","dojo/keys","../_WidgetBase","../_TemplatedMixin","./_ComboBoxMenuMixin","./_ListMouseMixin"],function(_874,_875,_876,keys,_877,_878,_879,_87a){return _874("dijit.form._ComboBoxMenu",[_877,_878,_87a,_879],{templateString:"<div class='dijitReset dijitMenu' data-dojo-attach-point='containerNode' style='overflow: auto; overflow-x: hidden;' role='listbox'>"+"<div class='dijitMenuItem dijitMenuPreviousButton' data-dojo-attach-point='previousButton' role='option'></div>"+"<div class='dijitMenuItem dijitMenuNextButton' data-dojo-attach-point='nextButton' role='option'></div>"+"</div>",baseClass:"dijitComboBoxMenu",postCreate:function(){this.inherited(arguments);if(!this.isLeftToRight()){_875.add(this.previousButton,"dijitMenuItemRtl");_875.add(this.nextButton,"dijitMenuItemRtl");}this.containerNode.setAttribute("role","listbox");},_createMenuItem:function(){var item=this.ownerDocument.createElement("div");item.className="dijitReset dijitMenuItem"+(this.isLeftToRight()?"":" dijitMenuItemRtl");item.setAttribute("role","option");return item;},onHover:function(node){_875.add(node,"dijitMenuItemHover");},onUnhover:function(node){_875.remove(node,"dijitMenuItemHover");},onSelect:function(node){_875.add(node,"dijitMenuItemSelected");},onDeselect:function(node){_875.remove(node,"dijitMenuItemSelected");},_page:function(up){var _87b=0;var _87c=this.domNode.scrollTop;var _87d=_876.get(this.domNode,"height");if(!this.getHighlightedOption()){this.selectNextNode();}while(_87b<_87d){var _87e=this.getHighlightedOption();if(up){if(!_87e.previousSibling||_87e.previousSibling.style.display=="none"){break;}this.selectPreviousNode();}else{if(!_87e.nextSibling||_87e.nextSibling.style.display=="none"){break;}this.selectNextNode();}var _87f=this.domNode.scrollTop;_87b+=(_87f-_87c)*(up?-1:1);_87c=_87f;}},handleKey:function(evt){switch(evt.keyCode){case keys.DOWN_ARROW:this.selectNextNode();return false;case keys.PAGE_DOWN:this._page(false);return false;case keys.UP_ARROW:this.selectPreviousNode();return false;case keys.PAGE_UP:this._page(true);return false;default:return true;}}});});},"dijit/form/_ComboBoxMenuMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/has","dojo/i18n","dojo/i18n!./nls/ComboBox"],function(_880,_881,_882,has,i18n){var _883=_881("dijit.form._ComboBoxMenuMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{_messages:null,postMixInProperties:function(){this.inherited(arguments);this._messages=i18n.getLocalization("dijit.form","ComboBox",this.lang);},buildRendering:function(){this.inherited(arguments);this.previousButton.innerHTML=this._messages["previousMessage"];this.nextButton.innerHTML=this._messages["nextMessage"];},_setValueAttr:function(_884){this._set("value",_884);this.onChange(_884);},onClick:function(node){if(node==this.previousButton){this._setSelectedAttr(null);this.onPage(-1);}else{if(node==this.nextButton){this._setSelectedAttr(null);this.onPage(1);}else{this.onChange(node);}}},onChange:function(){},onPage:function(){},onClose:function(){this._setSelectedAttr(null);},_createOption:function(item,_885){var _886=this._createMenuItem();var _887=_885(item);if(_887.html){_886.innerHTML=_887.label;}else{_886.appendChild(_886.ownerDocument.createTextNode(_887.label));}if(_886.innerHTML==""){_886.innerHTML="&#160;";}return _886;},createOptions:function(_888,_889,_88a){this.items=_888;this.previousButton.style.display=(_889.start==0)?"none":"";_882.set(this.previousButton,"id",this.id+"_prev");_880.forEach(_888,function(item,i){var _88b=this._createOption(item,_88a);_88b.setAttribute("item",i);_882.set(_88b,"id",this.id+i);this.nextButton.parentNode.insertBefore(_88b,this.nextButton);},this);var _88c=false;if(_888.total&&!_888.total.then&&_888.total!=-1){if((_889.start+_889.count)<_888.total){_88c=true;}else{if((_889.start+_889.count)>_888.total&&_889.count==_888.length){_88c=true;}}}else{if(_889.count==_888.length){_88c=true;}}this.nextButton.style.display=_88c?"":"none";_882.set(this.nextButton,"id",this.id+"_next");},clearResultList:function(){var _88d=this.containerNode;while(_88d.childNodes.length>2){_88d.removeChild(_88d.childNodes[_88d.childNodes.length-2]);}this._setSelectedAttr(null);},highlightFirstOption:function(){this.selectFirstNode();},highlightLastOption:function(){this.selectLastNode();},selectFirstNode:function(){this.inherited(arguments);if(this.getHighlightedOption()==this.previousButton){this.selectNextNode();}},selectLastNode:function(){this.inherited(arguments);if(this.getHighlightedOption()==this.nextButton){this.selectPreviousNode();}},getHighlightedOption:function(){return this.selected;}});if(has("dojo-bidi")){_883=_881("dijit.form._ComboBoxMenuMixin",_883,{_createOption:function(){var _88e=this.inherited(arguments);this.applyTextDir(_88e);return _88e;}});}return _883;});},"dijit/form/_ListMouseMixin":function(){define(["dojo/_base/declare","dojo/on","dojo/touch","./_ListBase"],function(_88f,on,_890,_891){return _88f("dijit.form._ListMouseMixin",_891,{postCreate:function(){this.inherited(arguments);this.domNode.dojoClick=true;this._listConnect("click","_onClick");this._listConnect("mousedown","_onMouseDown");this._listConnect("mouseup","_onMouseUp");this._listConnect("mouseover","_onMouseOver");this._listConnect("mouseout","_onMouseOut");},_onClick:function(evt,_892){this._setSelectedAttr(_892,false);if(this._deferredClick){this._deferredClick.remove();}this._deferredClick=this.defer(function(){this._deferredClick=null;this.onClick(_892);});},_onMouseDown:function(evt,_893){if(this._hoveredNode){this.onUnhover(this._hoveredNode);this._hoveredNode=null;}this._isDragging=true;this._setSelectedAttr(_893,false);},_onMouseUp:function(evt,_894){this._isDragging=false;var _895=this.selected;var _896=this._hoveredNode;if(_895&&_894==_895){this.defer(function(){this._onClick(evt,_895);});}else{if(_896){this.defer(function(){this._onClick(evt,_896);});}}},_onMouseOut:function(evt,_897){if(this._hoveredNode){this.onUnhover(this._hoveredNode);this._hoveredNode=null;}if(this._isDragging){this._cancelDrag=(new Date()).getTime()+1000;}},_onMouseOver:function(evt,_898){if(this._cancelDrag){var time=(new Date()).getTime();if(time>this._cancelDrag){this._isDragging=false;}this._cancelDrag=null;}this._hoveredNode=_898;this.onHover(_898);if(this._isDragging){this._setSelectedAttr(_898,false);}}});});},"dijit/form/_ListBase":function(){define(["dojo/_base/declare","dojo/on","dojo/window"],function(_899,on,_89a){return _899("dijit.form._ListBase",null,{selected:null,_listConnect:function(_89b,_89c){var self=this;return self.own(on(self.containerNode,on.selector(function(_89d,_89e,_89f){return _89d.parentNode==_89f;},_89b),function(evt){self[_89c](evt,this);}));},selectFirstNode:function(){var _8a0=this.containerNode.firstChild;while(_8a0&&_8a0.style.display=="none"){_8a0=_8a0.nextSibling;}this._setSelectedAttr(_8a0,true);},selectLastNode:function(){var last=this.containerNode.lastChild;while(last&&last.style.display=="none"){last=last.previousSibling;}this._setSelectedAttr(last,true);},selectNextNode:function(){var _8a1=this.selected;if(!_8a1){this.selectFirstNode();}else{var next=_8a1.nextSibling;while(next&&next.style.display=="none"){next=next.nextSibling;}if(!next){this.selectFirstNode();}else{this._setSelectedAttr(next,true);}}},selectPreviousNode:function(){var _8a2=this.selected;if(!_8a2){this.selectLastNode();}else{var prev=_8a2.previousSibling;while(prev&&prev.style.display=="none"){prev=prev.previousSibling;}if(!prev){this.selectLastNode();}else{this._setSelectedAttr(prev,true);}}},_setSelectedAttr:function(node,_8a3){if(this.selected!=node){var _8a4=this.selected;if(_8a4){this.onDeselect(_8a4);}if(node){if(_8a3){_89a.scrollIntoView(node);}this.onSelect(node);}this._set("selected",node);}else{if(node){this.onSelect(node);}}}});});},"dijit/form/Form":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/_base/kernel","dojo/sniff","../_Widget","../_TemplatedMixin","./_FormMixin","../layout/_ContentPaneResizeMixin"],function(_8a5,_8a6,_8a7,has,_8a8,_8a9,_8aa,_8ab){return _8a5("dijit.form.Form",[_8a8,_8a9,_8aa,_8ab],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",postMixInProperties:function(){this.nameAttrSetting=this.name?("name='"+this.name+"'"):"";this.inherited(arguments);},execute:function(){},onExecute:function(){},_setEncTypeAttr:function(_8ac){_8a6.set(this.domNode,"encType",_8ac);if(has("ie")){this.domNode.encoding=_8ac;}this._set("encType",_8ac);},reset:function(e){var faux={returnValue:true,preventDefault:function(){this.returnValue=false;},stopPropagation:function(){},currentTarget:e?e.target:this.domNode,target:e?e.target:this.domNode};if(!(this.onReset(faux)===false)&&faux.returnValue){this.inherited(arguments,[]);}},onReset:function(){return true;},_onReset:function(e){this.reset(e);e.stopPropagation();e.preventDefault();return false;},_onSubmit:function(e){var fp=this.constructor.prototype;if(this.execute!=fp.execute||this.onExecute!=fp.onExecute){_8a7.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.","","2.0");this.onExecute();this.execute(this.getValues());}if(this.onSubmit(e)===false){e.stopPropagation();e.preventDefault();}},onSubmit:function(){return this.isValid();},submit:function(){if(!(this.onSubmit()===false)){this.containerNode.submit();}}});});},"dijit/form/RadioButton":function(){define(["dojo/_base/declare","./CheckBox","./_RadioButtonMixin"],function(_8ad,_8ae,_8af){return _8ad("dijit.form.RadioButton",[_8ae,_8af],{baseClass:"dijitRadio"});});},"dijit/form/_RadioButtonMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/_base/lang","dojo/query!css2","../registry"],function(_8b0,_8b1,_8b2,lang,_8b3,_8b4){return _8b1("dijit.form._RadioButtonMixin",null,{type:"radio",_getRelatedWidgets:function(){var ary=[];_8b3("input[type=radio]",this.focusNode.form||this.ownerDocument).forEach(lang.hitch(this,function(_8b5){if(_8b5.name==this.name&&_8b5.form==this.focusNode.form){var _8b6=_8b4.getEnclosingWidget(_8b5);if(_8b6){ary.push(_8b6);}}}));return ary;},_setCheckedAttr:function(_8b7){this.inherited(arguments);if(!this._created){return;}if(_8b7){_8b0.forEach(this._getRelatedWidgets(),lang.hitch(this,function(_8b8){if(_8b8!=this&&_8b8.checked){_8b8.set("checked",false);}}));}},_getSubmitValue:function(_8b9){return _8b9==null?"on":_8b9;},_onClick:function(e){if(this.checked||this.disabled){e.stopPropagation();e.preventDefault();return false;}if(this.readOnly){e.stopPropagation();e.preventDefault();_8b0.forEach(this._getRelatedWidgets(),lang.hitch(this,function(_8ba){_8b2.set(this.focusNode||this.domNode,"checked",_8ba.checked);}));return false;}var _8bb=false;var _8bc;_8b0.some(this._getRelatedWidgets(),function(_8bd){if(_8bd.checked){_8bc=_8bd;return true;}return false;});this.checked=true;_8bc&&(_8bc.checked=false);if(this.onClick(e)===false||e.defaultPrevented){_8bb=true;}this.checked=false;_8bc&&(_8bc.checked=true);if(_8bb){e.preventDefault();}else{this.set("checked",true);}return !_8bb;}});});},"dijit/form/Select":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","./_FormSelectWidget","../_HasDropDown","../DropDownMenu","../MenuItem","../MenuSeparator","../Tooltip","../_KeyNavMixin","../registry","dojo/text!./templates/Select.html","dojo/i18n!./nls/validate"],function(_8be,_8bf,_8c0,_8c1,_8c2,i18n,keys,lang,on,has,_8c3,_8c4,_8c5,_8c6,_8c7,_8c8,_8c9,_8ca,_8cb){var _8cc=_8bf("dijit.form._SelectMenu",_8c5,{autoFocus:true,buildRendering:function(){this.inherited(arguments);this.domNode.setAttribute("role","listbox");},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"selectstart",function(evt){evt.preventDefault();evt.stopPropagation();}));},focus:function(){var _8cd=false,val=this.parentWidget.value;if(lang.isArray(val)){val=val[val.length-1];}if(val){_8be.forEach(this.parentWidget._getChildren(),function(_8ce){if(_8ce.option&&(val===_8ce.option.value)){_8cd=true;this.focusChild(_8ce,false);}},this);}if(!_8cd){this.inherited(arguments);}}});var _8cf=_8bf("dijit.form.Select"+(has("dojo-bidi")?"_NoBidi":""),[_8c3,_8c4,_8c9],{baseClass:"dijitSelect dijitValidationTextBox",templateString:_8cb,_buttonInputDisabled:has("ie")?"disabled":"",required:false,state:"",message:"",tooltipPosition:[],emptyLabel:"&#160;",_isLoaded:false,_childrenLoaded:false,labelType:"html",_fillContent:function(){this.inherited(arguments);if(this.options.length&&!this.value&&this.srcNodeRef){var si=this.srcNodeRef.selectedIndex||0;this._set("value",this.options[si>=0?si:0].value);}this.dropDown=new _8cc({id:this.id+"_menu",parentWidget:this});_8c1.add(this.dropDown.domNode,this.baseClass.replace(/\s+|$/g,"Menu "));},_getMenuItemForOption:function(_8d0){if(!_8d0.value&&!_8d0.label){return new _8c7({ownerDocument:this.ownerDocument});}else{var _8d1=lang.hitch(this,"_setValueAttr",_8d0);var item=new _8c6({option:_8d0,label:(this.labelType==="text"?(_8d0.label||"").toString().replace(/&/g,"&amp;").replace(/</g,"&lt;"):_8d0.label)||this.emptyLabel,onClick:_8d1,ownerDocument:this.ownerDocument,dir:this.dir,textDir:this.textDir,disabled:_8d0.disabled||false});item.focusNode.setAttribute("role","option");return item;}},_addOptionItem:function(_8d2){if(this.dropDown){this.dropDown.addChild(this._getMenuItemForOption(_8d2));}},_getChildren:function(){if(!this.dropDown){return [];}return this.dropDown.getChildren();},focus:function(){if(!this.disabled&&this.focusNode.focus){try{this.focusNode.focus();}catch(e){}}},focusChild:function(_8d3){if(_8d3){this.set("value",_8d3.option);}},_getFirst:function(){var _8d4=this._getChildren();return _8d4.length?_8d4[0]:null;},_getLast:function(){var _8d5=this._getChildren();return _8d5.length?_8d5[_8d5.length-1]:null;},childSelector:function(node){var node=_8ca.byNode(node);return node&&node.getParent()==this.dropDown;},onKeyboardSearch:function(item,evt,_8d6,_8d7){if(item){this.focusChild(item);}},_loadChildren:function(_8d8){if(_8d8===true){if(this.dropDown){delete this.dropDown.focusedChild;this.focusedChild=null;}if(this.options.length){this.inherited(arguments);}else{_8be.forEach(this._getChildren(),function(_8d9){_8d9.destroyRecursive();});var item=new _8c6({ownerDocument:this.ownerDocument,label:this.emptyLabel});this.dropDown.addChild(item);}}else{this._updateSelection();}this._isLoaded=false;this._childrenLoaded=true;if(!this._loadingStore){this._setValueAttr(this.value,false);}},_refreshState:function(){if(this._started){this.validate(this.focused);}},startup:function(){this.inherited(arguments);this._refreshState();},_setValueAttr:function(_8da){this.inherited(arguments);_8c0.set(this.valueNode,"value",this.get("value"));this._refreshState();},_setNameAttr:"valueNode",_setDisabledAttr:function(_8db){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_8dc){this._set("required",_8dc);this.focusNode.setAttribute("aria-required",_8dc);this._refreshState();},_setOptionsAttr:function(_8dd){this._isLoaded=false;this._set("options",_8dd);},_setDisplay:function(_8de){var lbl=(this.labelType==="text"?(_8de||"").replace(/&/g,"&amp;").replace(/</g,"&lt;"):_8de)||this.emptyLabel;this.containerNode.innerHTML="<span role=\"option\" aria-selected=\"true\" class=\"dijitReset dijitInline "+this.baseClass.replace(/\s+|$/g,"Label ")+"\">"+lbl+"</span>";},validate:function(_8df){var _8e0=this.disabled||this.isValid(_8df);this._set("state",_8e0?"":(this._hasBeenBlurred?"Error":"Incomplete"));this.focusNode.setAttribute("aria-invalid",_8e0?"false":"true");var _8e1=_8e0?"":this._missingMsg;if(_8e1&&this.focused&&this._hasBeenBlurred){_8c8.show(_8e1,this.domNode,this.tooltipPosition,!this.isLeftToRight());}else{_8c8.hide(this.domNode);}this._set("message",_8e1);return _8e0;},isValid:function(){return (!this.required||this.value===0||!(/^\s*$/.test(this.value||"")));},reset:function(){this.inherited(arguments);_8c8.hide(this.domNode);this._refreshState();},postMixInProperties:function(){this.inherited(arguments);this._missingMsg=i18n.getLocalization("dijit.form","validate",this.lang).missingMessage;},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"selectstart",function(evt){evt.preventDefault();evt.stopPropagation();}));this.domNode.setAttribute("aria-expanded","false");var _8e2=this._keyNavCodes;delete _8e2[keys.LEFT_ARROW];delete _8e2[keys.RIGHT_ARROW];},_setStyleAttr:function(_8e3){this.inherited(arguments);_8c1.toggle(this.domNode,this.baseClass.replace(/\s+|$/g,"FixedWidth "),!!this.domNode.style.width);},isLoaded:function(){return this._isLoaded;},loadDropDown:function(_8e4){this._loadChildren(true);this._isLoaded=true;_8e4();},destroy:function(_8e5){if(this.dropDown&&!this.dropDown._destroyed){this.dropDown.destroyRecursive(_8e5);delete this.dropDown;}_8c8.hide(this.domNode);this.inherited(arguments);},_onFocus:function(){this.validate(true);},_onBlur:function(){_8c8.hide(this.domNode);this.inherited(arguments);this.validate(false);}});if(has("dojo-bidi")){_8cf=_8bf("dijit.form.Select",_8cf,{_setDisplay:function(_8e6){this.inherited(arguments);this.applyTextDir(this.containerNode);}});}_8cf._Menu=_8cc;function _8e7(_8e8){return function(evt){if(!this._isLoaded){this.loadDropDown(lang.hitch(this,_8e8,evt));}else{this.inherited(_8e8,arguments);}};};_8cf.prototype._onContainerKeydown=_8e7("_onContainerKeydown");_8cf.prototype._onContainerKeypress=_8e7("_onContainerKeypress");return _8cf;});},"dijit/form/_FormSelectWidget":function(){define(["dojo/_base/array","dojo/_base/Deferred","dojo/aspect","dojo/data/util/sorter","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/when","dojo/store/util/QueryResults","./_FormValueWidget"],function(_8e9,_8ea,_8eb,_8ec,_8ed,dom,_8ee,_8ef,lang,_8f0,when,_8f1,_8f2){var _8f3=_8ed("dijit.form._FormSelectWidget",_8f2,{multiple:false,options:null,store:null,_setStoreAttr:function(val){if(this._created){this._deprecatedSetStore(val);}},query:null,_setQueryAttr:function(_8f4){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{query:_8f4});}},queryOptions:null,_setQueryOptionsAttr:function(_8f5){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{queryOptions:_8f5});}},labelAttr:"",onFetch:null,sortByLabel:true,loadChildrenOnOpen:false,onLoadDeferred:null,getOptions:function(_8f6){var opts=this.options||[];if(_8f6==null){return opts;}if(lang.isArrayLike(_8f6)){return _8e9.map(_8f6,"return this.getOptions(item);",this);}if(lang.isString(_8f6)){_8f6={value:_8f6};}if(lang.isObject(_8f6)){if(!_8e9.some(opts,function(_8f7,idx){for(var a in _8f6){if(!(a in _8f7)||_8f7[a]!=_8f6[a]){return false;}}_8f6=idx;return true;})){_8f6=-1;}}if(_8f6>=0&&_8f6<opts.length){return opts[_8f6];}return null;},addOption:function(_8f8){_8e9.forEach(lang.isArrayLike(_8f8)?_8f8:[_8f8],function(i){if(i&&lang.isObject(i)){this.options.push(i);}},this);this._loadChildren();},removeOption:function(_8f9){var _8fa=this.getOptions(lang.isArrayLike(_8f9)?_8f9:[_8f9]);_8e9.forEach(_8fa,function(_8fb){if(_8fb){this.options=_8e9.filter(this.options,function(node){return (node.value!==_8fb.value||node.label!==_8fb.label);});this._removeOptionItem(_8fb);}},this);this._loadChildren();},updateOption:function(_8fc){_8e9.forEach(lang.isArrayLike(_8fc)?_8fc:[_8fc],function(i){var _8fd=this.getOptions({value:i.value}),k;if(_8fd){for(k in i){_8fd[k]=i[k];}}},this);this._loadChildren();},setStore:function(_8fe,_8ff,_900){_8ef.deprecated(this.declaredClass+"::setStore(store, selectedValue, fetchArgs) is deprecated. Use set('query', fetchArgs.query), set('queryOptions', fetchArgs.queryOptions), set('store', store), or set('value', selectedValue) instead.","","2.0");this._deprecatedSetStore(_8fe,_8ff,_900);},_deprecatedSetStore:function(_901,_902,_903){var _904=this.store;_903=_903||{};if(_904!==_901){var h;while((h=this._notifyConnections.pop())){h.remove();}if(!_901.get){lang.mixin(_901,{_oldAPI:true,get:function(id){var _905=new _8ea();this.fetchItemByIdentity({identity:id,onItem:function(_906){_905.resolve(_906);},onError:function(_907){_905.reject(_907);}});return _905.promise;},query:function(_908,_909){var _90a=new _8ea(function(){if(_90b.abort){_90b.abort();}});_90a.total=new _8ea();var _90b=this.fetch(lang.mixin({query:_908,onBegin:function(_90c){_90a.total.resolve(_90c);},onComplete:function(_90d){_90a.resolve(_90d);},onError:function(_90e){_90a.reject(_90e);}},_909));return new _8f1(_90a);}});if(_901.getFeatures()["dojo.data.api.Notification"]){this._notifyConnections=[_8eb.after(_901,"onNew",lang.hitch(this,"_onNewItem"),true),_8eb.after(_901,"onDelete",lang.hitch(this,"_onDeleteItem"),true),_8eb.after(_901,"onSet",lang.hitch(this,"_onSetItem"),true)];}}this._set("store",_901);}if(this.options&&this.options.length){this.removeOption(this.options);}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}if(_903.query){this._set("query",_903.query);}if(_903.queryOptions){this._set("queryOptions",_903.queryOptions);}if(_901&&_901.query){this._loadingStore=true;this.onLoadDeferred=new _8ea();this._queryRes=_901.query(this.query,this.queryOptions);when(this._queryRes,lang.hitch(this,function(_90f){if(this.sortByLabel&&!_903.sort&&_90f.length){if(_901.getValue){_90f.sort(_8ec.createSortFunction([{attribute:_901.getLabelAttributes(_90f[0])[0]}],_901));}else{var _910=this.labelAttr;_90f.sort(function(a,b){return a[_910]>b[_910]?1:b[_910]>a[_910]?-1:0;});}}if(_903.onFetch){_90f=_903.onFetch.call(this,_90f,_903);}_8e9.forEach(_90f,function(i){this._addOptionForItem(i);},this);if(this._queryRes.observe){this._observeHandle=this._queryRes.observe(lang.hitch(this,function(_911,_912,_913){if(_912==_913){this._onSetItem(_911);}else{if(_912!=-1){this._onDeleteItem(_911);}if(_913!=-1){this._onNewItem(_911);}}}),true);}this._loadingStore=false;this.set("value","_pendingValue" in this?this._pendingValue:_902);delete this._pendingValue;if(!this.loadChildrenOnOpen){this._loadChildren();}else{this._pseudoLoadChildren(_90f);}this.onLoadDeferred.resolve(true);this.onSetStore();}),lang.hitch(this,function(err){console.error("dijit.form.Select: "+err.toString());this.onLoadDeferred.reject(err);}));}return _904;},_setValueAttr:function(_914,_915){if(!this._onChangeActive){_915=null;}if(this._loadingStore){this._pendingValue=_914;return;}if(_914==null){return;}if(lang.isArrayLike(_914)){_914=_8e9.map(_914,function(_916){return lang.isObject(_916)?_916:{value:_916};});}else{if(lang.isObject(_914)){_914=[_914];}else{_914=[{value:_914}];}}_914=_8e9.filter(this.getOptions(_914),function(i){return i&&i.value;});var opts=this.getOptions()||[];if(!this.multiple&&(!_914[0]||!_914[0].value)&&!!opts.length){_914[0]=opts[0];}_8e9.forEach(opts,function(opt){opt.selected=_8e9.some(_914,function(v){return v.value===opt.value;});});var val=_8e9.map(_914,function(opt){return opt.value;});if(typeof val=="undefined"||typeof val[0]=="undefined"){return;}var disp=_8e9.map(_914,function(opt){return opt.label;});this._setDisplay(this.multiple?disp:disp[0]);this.inherited(arguments,[this.multiple?val:val[0],_915]);this._updateSelection();},_getDisplayedValueAttr:function(){var ret=_8e9.map([].concat(this.get("selectedOptions")),function(v){if(v&&"label" in v){return v.label;}else{if(v){return v.value;}}return null;},this);return this.multiple?ret:ret[0];},_setDisplayedValueAttr:function(_917){this.set("value",this.getOptions(typeof _917=="string"?{label:_917}:_917));},_loadChildren:function(){if(this._loadingStore){return;}_8e9.forEach(this._getChildren(),function(_918){_918.destroyRecursive();});_8e9.forEach(this.options,this._addOptionItem,this);this._updateSelection();},_updateSelection:function(){this.focusedChild=null;this._set("value",this._getValueFromOpts());var val=[].concat(this.value);if(val&&val[0]){var self=this;_8e9.forEach(this._getChildren(),function(_919){var _91a=_8e9.some(val,function(v){return _919.option&&(v===_919.option.value);});if(_91a&&!self.multiple){self.focusedChild=_919;}_8ee.toggle(_919.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),_91a);_919.domNode.setAttribute("aria-selected",_91a?"true":"false");},this);}},_getValueFromOpts:function(){var opts=this.getOptions()||[];if(!this.multiple&&opts.length){var opt=_8e9.filter(opts,function(i){return i.selected;})[0];if(opt&&opt.value){return opt.value;}else{opts[0].selected=true;return opts[0].value;}}else{if(this.multiple){return _8e9.map(_8e9.filter(opts,function(i){return i.selected;}),function(i){return i.value;})||[];}}return "";},_onNewItem:function(item,_91b){if(!_91b||!_91b.parent){this._addOptionForItem(item);}},_onDeleteItem:function(item){var _91c=this.store;this.removeOption({value:_91c.getIdentity(item)});},_onSetItem:function(item){this.updateOption(this._getOptionObjForItem(item));},_getOptionObjForItem:function(item){var _91d=this.store,_91e=(this.labelAttr&&this.labelAttr in item)?item[this.labelAttr]:_91d.getLabel(item),_91f=(_91e?_91d.getIdentity(item):null);return {value:_91f,label:_91e,item:item};},_addOptionForItem:function(item){var _920=this.store;if(_920.isItemLoaded&&!_920.isItemLoaded(item)){_920.loadItem({item:item,onItem:function(i){this._addOptionForItem(i);},scope:this});return;}var _921=this._getOptionObjForItem(item);this.addOption(_921);},constructor:function(_922){this._oValue=(_922||{}).value||null;this._notifyConnections=[];},buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.focusNode,false);},_fillContent:function(){if(!this.options){this.options=this.srcNodeRef?_8f0("> *",this.srcNodeRef).map(function(node){if(node.getAttribute("type")==="separator"){return {value:"",label:"",selected:false,disabled:false};}return {value:(node.getAttribute("data-"+_8ef._scopeName+"-value")||node.getAttribute("value")),label:String(node.innerHTML),selected:node.getAttribute("selected")||false,disabled:node.getAttribute("disabled")||false};},this):[];}if(!this.value){this._set("value",this._getValueFromOpts());}else{if(this.multiple&&typeof this.value=="string"){this._set("value",this.value.split(","));}}},postCreate:function(){this.inherited(arguments);_8eb.after(this,"onChange",lang.hitch(this,"_updateSelection"));var _923=this.store;if(_923&&(_923.getIdentity||_923.getFeatures()["dojo.data.api.Identity"])){this.store=null;this._deprecatedSetStore(_923,this._oValue,{query:this.query,queryOptions:this.queryOptions});}this._storeInitialized=true;},startup:function(){this._loadChildren();this.inherited(arguments);},destroy:function(){var h;while((h=this._notifyConnections.pop())){h.remove();}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}this.inherited(arguments);},_addOptionItem:function(){},_removeOptionItem:function(){},_setDisplay:function(){},_getChildren:function(){return [];},_getSelectedOptionsAttr:function(){return this.getOptions({selected:true});},_pseudoLoadChildren:function(){},onSetStore:function(){}});return _8f3;});},"dijit/DropDownMenu":function(){define(["dojo/_base/declare","dojo/keys","dojo/text!./templates/Menu.html","./_MenuBase"],function(_924,keys,_925,_926){return _924("dijit.DropDownMenu",_926,{templateString:_925,baseClass:"dijitMenu",_onUpArrow:function(){this.focusPrev();},_onDownArrow:function(){this.focusNext();},_onRightArrow:function(evt){this._moveToPopup(evt);evt.stopPropagation();evt.preventDefault();},_onLeftArrow:function(evt){if(this.parentMenu){if(this.parentMenu._isMenuBar){this.parentMenu.focusPrev();}else{this.onCancel(false);}}else{evt.stopPropagation();evt.preventDefault();}}});});},"dijit/_MenuBase":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/_base/lang","dojo/mouse","dojo/on","dojo/window","./a11yclick","./registry","./_Widget","./_CssStateMixin","./_KeyNavContainer","./_TemplatedMixin"],function(_927,_928,dom,_929,_92a,lang,_92b,on,_92c,_92d,_92e,_92f,_930,_931,_932){return _928("dijit._MenuBase",[_92f,_932,_931,_930],{selected:null,_setSelectedAttr:function(item){if(this.selected!=item){if(this.selected){this.selected._setSelected(false);this._onChildDeselect(this.selected);}if(item){item._setSelected(true);}this._set("selected",item);}},activated:false,_setActivatedAttr:function(val){_92a.toggle(this.domNode,"dijitMenuActive",val);_92a.toggle(this.domNode,"dijitMenuPassive",!val);this._set("activated",val);},parentMenu:null,popupDelay:500,passivePopupDelay:Infinity,autoFocus:false,childSelector:function(node){var _933=_92e.byNode(node);return node.parentNode==this.containerNode&&_933&&_933.focus;},postCreate:function(){var self=this,_934=typeof this.childSelector=="string"?this.childSelector:lang.hitch(this,"childSelector");this.own(on(this.containerNode,on.selector(_934,_92b.enter),function(){self.onItemHover(_92e.byNode(this));}),on(this.containerNode,on.selector(_934,_92b.leave),function(){self.onItemUnhover(_92e.byNode(this));}),on(this.containerNode,on.selector(_934,_92d),function(evt){self.onItemClick(_92e.byNode(this),evt);evt.stopPropagation();}),on(this.containerNode,on.selector(_934,"focusin"),function(){self._onItemFocus(_92e.byNode(this));}));this.inherited(arguments);},onKeyboardSearch:function(item,evt,_935,_936){this.inherited(arguments);if(!!item&&(_936==-1||(!!item.popup&&_936==1))){this.onItemClick(item,evt);}},_keyboardSearchCompare:function(item,_937){if(!!item.shortcutKey){return _937==item.shortcutKey.toLowerCase()?-1:0;}return this.inherited(arguments)?1:0;},onExecute:function(){},onCancel:function(){},_moveToPopup:function(evt){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){this.onItemClick(this.focusedChild,evt);}else{var _938=this._getTopMenu();if(_938&&_938._isMenuBar){_938.focusNext();}}},_onPopupHover:function(){this.set("selected",this.currentPopupItem);this._stopPendingCloseTimer();},onItemHover:function(item){if(this.activated){this.set("selected",item);if(item.popup&&!item.disabled&&!this.hover_timer){this.hover_timer=this.defer(function(){this._openItemPopup(item);},this.popupDelay);}}else{if(this.passivePopupDelay<Infinity){if(this.passive_hover_timer){this.passive_hover_timer.remove();}this.passive_hover_timer=this.defer(function(){this.onItemClick(item,{type:"click"});},this.passivePopupDelay);}}this._hoveredChild=item;item._set("hovering",true);},_onChildDeselect:function(item){this._stopPopupTimer();if(this.currentPopupItem==item){this._stopPendingCloseTimer();this._pendingClose_timer=this.defer(function(){this._pendingClose_timer=null;this.currentPopupItem=null;item._closePopup();},this.popupDelay);}},onItemUnhover:function(item){if(this._hoveredChild==item){this._hoveredChild=null;}if(this.passive_hover_timer){this.passive_hover_timer.remove();this.passive_hover_timer=null;}item._set("hovering",false);},_stopPopupTimer:function(){if(this.hover_timer){this.hover_timer=this.hover_timer.remove();}},_stopPendingCloseTimer:function(){if(this._pendingClose_timer){this._pendingClose_timer=this._pendingClose_timer.remove();}},_getTopMenu:function(){for(var top=this;top.parentMenu;top=top.parentMenu){}return top;},onItemClick:function(item,evt){if(this.passive_hover_timer){this.passive_hover_timer.remove();}this.focusChild(item);if(item.disabled){return false;}if(item.popup){this.set("selected",item);this.set("activated",true);var _939=/^key/.test(evt._origType||evt.type)||(evt.clientX==0&&evt.clientY==0);this._openItemPopup(item,_939);}else{this.onExecute();item._onClick?item._onClick(evt):item.onClick(evt);}},_openItemPopup:function(_93a,_93b){if(_93a==this.currentPopupItem){return;}if(this.currentPopupItem){this._stopPendingCloseTimer();this.currentPopupItem._closePopup();}this._stopPopupTimer();var _93c=_93a.popup;_93c.parentMenu=this;this.own(this._mouseoverHandle=on.once(_93c.domNode,"mouseover",lang.hitch(this,"_onPopupHover")));var self=this;_93a._openPopup({parent:this,orient:this._orient||["after","before"],onCancel:function(){if(_93b){self.focusChild(_93a);}self._cleanUp();},onExecute:lang.hitch(this,"_cleanUp",true),onClose:function(){if(self._mouseoverHandle){self._mouseoverHandle.remove();delete self._mouseoverHandle;}}},_93b);this.currentPopupItem=_93a;},onOpen:function(){this.isShowingNow=true;this.set("activated",true);},onClose:function(){this.set("activated",false);this.set("selected",null);this.isShowingNow=false;this.parentMenu=null;},_closeChild:function(){this._stopPopupTimer();if(this.currentPopupItem){if(this.focused){_929.set(this.selected.focusNode,"tabIndex",this.tabIndex);this.selected.focusNode.focus();}this.currentPopupItem._closePopup();this.currentPopupItem=null;}},_onItemFocus:function(item){if(this._hoveredChild&&this._hoveredChild!=item){this.onItemUnhover(this._hoveredChild);}this.set("selected",item);},_onBlur:function(){this._cleanUp(true);this.inherited(arguments);},_cleanUp:function(_93d){this._closeChild();if(typeof this.isShowingNow=="undefined"){this.set("activated",false);}if(_93d){this.set("selected",null);}}});});},"dijit/_KeyNavContainer":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/_base/kernel","dojo/keys","dojo/_base/lang","./registry","./_Container","./_FocusMixin","./_KeyNavMixin"],function(_93e,_93f,_940,_941,keys,lang,_942,_943,_944,_945){return _93f("dijit._KeyNavContainer",[_944,_945,_943],{connectKeyNavHandlers:function(_946,_947){var _948=(this._keyNavCodes={});var prev=lang.hitch(this,"focusPrev");var next=lang.hitch(this,"focusNext");_93e.forEach(_946,function(code){_948[code]=prev;});_93e.forEach(_947,function(code){_948[code]=next;});_948[keys.HOME]=lang.hitch(this,"focusFirstChild");_948[keys.END]=lang.hitch(this,"focusLastChild");},startupKeyNavChildren:function(){_941.deprecated("startupKeyNavChildren() call no longer needed","","2.0");},startup:function(){this.inherited(arguments);_93e.forEach(this.getChildren(),lang.hitch(this,"_startupChild"));},addChild:function(_949,_94a){this.inherited(arguments);this._startupChild(_949);},_startupChild:function(_94b){_94b.set("tabIndex","-1");},_getFirst:function(){var _94c=this.getChildren();return _94c.length?_94c[0]:null;},_getLast:function(){var _94d=this.getChildren();return _94d.length?_94d[_94d.length-1]:null;},focusNext:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,1));},focusPrev:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,-1),true);},childSelector:function(node){var node=_942.byNode(node);return node&&node.getParent()==this;}});});},"dijit/_KeyNavMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dijit/registry","dijit/_FocusMixin"],function(_94e,_94f,_950,keys,lang,on,_951,_952){return _94f("dijit._KeyNavMixin",_952,{tabIndex:"0",childSelector:null,postCreate:function(){this.inherited(arguments);_950.set(this.domNode,"tabIndex",this.tabIndex);if(!this._keyNavCodes){var _953=this._keyNavCodes={};_953[keys.HOME]=lang.hitch(this,"focusFirstChild");_953[keys.END]=lang.hitch(this,"focusLastChild");_953[this.isLeftToRight()?keys.LEFT_ARROW:keys.RIGHT_ARROW]=lang.hitch(this,"_onLeftArrow");_953[this.isLeftToRight()?keys.RIGHT_ARROW:keys.LEFT_ARROW]=lang.hitch(this,"_onRightArrow");_953[keys.UP_ARROW]=lang.hitch(this,"_onUpArrow");_953[keys.DOWN_ARROW]=lang.hitch(this,"_onDownArrow");}var self=this,_954=typeof this.childSelector=="string"?this.childSelector:lang.hitch(this,"childSelector");this.own(on(this.domNode,"keypress",lang.hitch(this,"_onContainerKeypress")),on(this.domNode,"keydown",lang.hitch(this,"_onContainerKeydown")),on(this.domNode,"focus",lang.hitch(this,"_onContainerFocus")),on(this.containerNode,on.selector(_954,"focusin"),function(evt){self._onChildFocus(_951.getEnclosingWidget(this),evt);}));},_onLeftArrow:function(){},_onRightArrow:function(){},_onUpArrow:function(){},_onDownArrow:function(){},focus:function(){this.focusFirstChild();},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1);},_getLastFocusableChild:function(){return this._getNextFocusableChild(null,-1);},focusFirstChild:function(){this.focusChild(this._getFirstFocusableChild());},focusLastChild:function(){this.focusChild(this._getLastFocusableChild());},focusChild:function(_955,last){if(!_955){return;}if(this.focusedChild&&_955!==this.focusedChild){this._onChildBlur(this.focusedChild);}_955.set("tabIndex",this.tabIndex);_955.focus(last?"end":"start");},_onContainerFocus:function(evt){if(evt.target!==this.domNode||this.focusedChild){return;}this.focus();},_onFocus:function(){_950.set(this.domNode,"tabIndex","-1");this.inherited(arguments);},_onBlur:function(evt){_950.set(this.domNode,"tabIndex",this.tabIndex);if(this.focusedChild){this.focusedChild.set("tabIndex","-1");this.lastFocusedChild=this.focusedChild;this._set("focusedChild",null);}this.inherited(arguments);},_onChildFocus:function(_956){if(_956&&_956!=this.focusedChild){if(this.focusedChild&&!this.focusedChild._destroyed){this.focusedChild.set("tabIndex","-1");}_956.set("tabIndex",this.tabIndex);this.lastFocused=_956;this._set("focusedChild",_956);}},_searchString:"",multiCharSearchDuration:1000,onKeyboardSearch:function(item,evt,_957,_958){if(item){this.focusChild(item);}},_keyboardSearchCompare:function(item,_959){var _95a=item.domNode,text=item.label||(_95a.focusNode?_95a.focusNode.label:"")||_95a.innerText||_95a.textContent||"",_95b=text.replace(/^\s+/,"").substr(0,_959.length).toLowerCase();return (!!_959.length&&_95b==_959)?-1:0;},_onContainerKeydown:function(evt){var func=this._keyNavCodes[evt.keyCode];if(func){func(evt,this.focusedChild);evt.stopPropagation();evt.preventDefault();this._searchString="";}else{if(evt.keyCode==keys.SPACE&&this._searchTimer&&!(evt.ctrlKey||evt.altKey||evt.metaKey)){evt.stopImmediatePropagation();evt.preventDefault();this._keyboardSearch(evt," ");}}},_onContainerKeypress:function(evt){if(evt.charCode<=keys.SPACE||evt.ctrlKey||evt.altKey||evt.metaKey){return;}evt.preventDefault();evt.stopPropagation();this._keyboardSearch(evt,String.fromCharCode(evt.charCode).toLowerCase());},_keyboardSearch:function(evt,_95c){var _95d=null,_95e,_95f=0,_960=lang.hitch(this,function(){if(this._searchTimer){this._searchTimer.remove();}this._searchString+=_95c;var _961=/^(.)\1*$/.test(this._searchString);var _962=_961?1:this._searchString.length;_95e=this._searchString.substr(0,_962);this._searchTimer=this.defer(function(){this._searchTimer=null;this._searchString="";},this.multiCharSearchDuration);var _963=this.focusedChild||null;if(_962==1||!_963){_963=this._getNextFocusableChild(_963,1);if(!_963){return;}}var stop=_963;do{var rc=this._keyboardSearchCompare(_963,_95e);if(!!rc&&_95f++==0){_95d=_963;}if(rc==-1){_95f=-1;break;}_963=this._getNextFocusableChild(_963,1);}while(_963&&_963!=stop);});_960();this.onKeyboardSearch(_95d,evt,_95e,_95f);},_onChildBlur:function(){},_getNextFocusableChild:function(_964,dir){var _965=_964;do{if(!_964){_964=this[dir>0?"_getFirst":"_getLast"]();if(!_964){break;}}else{_964=this._getNext(_964,dir);}if(_964!=null&&_964!=_965&&_964.isFocusable()){return _964;}}while(_964!=_965);return null;},_getFirst:function(){return null;},_getLast:function(){return null;},_getNext:function(_966,dir){if(_966){_966=_966.domNode;while(_966){_966=_966[dir<0?"previousSibling":"nextSibling"];if(_966&&"getAttribute" in _966){var w=_951.byNode(_966);if(w){return w;}}}}return null;}});});},"dijit/MenuItem":function(){define(["dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/_base/kernel","dojo/sniff","dojo/_base/lang","./_Widget","./_TemplatedMixin","./_Contained","./_CssStateMixin","dojo/text!./templates/MenuItem.html"],function(_967,dom,_968,_969,_96a,has,lang,_96b,_96c,_96d,_96e,_96f){var _970=_967("dijit.MenuItem"+(has("dojo-bidi")?"_NoBidi":""),[_96b,_96c,_96d,_96e],{templateString:_96f,baseClass:"dijitMenuItem",label:"",_setLabelAttr:function(val){this._set("label",val);var _971="";var text;var ndx=val.search(/{\S}/);if(ndx>=0){_971=val.charAt(ndx+1);var _972=val.substr(0,ndx);var _973=val.substr(ndx+3);text=_972+_971+_973;val=_972+"<span class=\"dijitMenuItemShortcutKey\">"+_971+"</span>"+_973;}else{text=val;}this.domNode.setAttribute("aria-label",text+" "+this.accelKey);this.containerNode.innerHTML=val;this._set("shortcutKey",_971);},iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},accelKey:"",disabled:false,_fillContent:function(_974){if(_974&&!("label" in this.params)){this._set("label",_974.innerHTML);}},buildRendering:function(){this.inherited(arguments);var _975=this.id+"_text";_968.set(this.containerNode,"id",_975);if(this.accelKeyNode){_968.set(this.accelKeyNode,"id",this.id+"_accel");}dom.setSelectable(this.domNode,false);},onClick:function(){},focus:function(){try{if(has("ie")==8){this.containerNode.focus();}this.focusNode.focus();}catch(e){}},_setSelected:function(_976){_969.toggle(this.domNode,"dijitMenuItemSelected",_976);},setLabel:function(_977){_96a.deprecated("dijit.MenuItem.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",_977);},setDisabled:function(_978){_96a.deprecated("dijit.Menu.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",_978);},_setDisabledAttr:function(_979){this.focusNode.setAttribute("aria-disabled",_979?"true":"false");this._set("disabled",_979);},_setAccelKeyAttr:function(_97a){if(this.accelKeyNode){this.accelKeyNode.style.display=_97a?"":"none";this.accelKeyNode.innerHTML=_97a;_968.set(this.containerNode,"colSpan",_97a?"1":"2");}this._set("accelKey",_97a);}});if(has("dojo-bidi")){_970=_967("dijit.MenuItem",_970,{_setLabelAttr:function(val){this.inherited(arguments);if(this.textDir==="auto"){this.applyTextDir(this.textDirNode);}}});}return _970;});},"dijit/MenuSeparator":function(){define(["dojo/_base/declare","dojo/dom","./_WidgetBase","./_TemplatedMixin","./_Contained","dojo/text!./templates/MenuSeparator.html"],function(_97b,dom,_97c,_97d,_97e,_97f){return _97b("dijit.MenuSeparator",[_97c,_97d,_97e],{templateString:_97f,buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});});},"dijit/form/SimpleTextarea":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/sniff","./TextBox"],function(_980,_981,has,_982){return _980("dijit.form.SimpleTextarea",_982,{baseClass:"dijitTextBox dijitTextArea",rows:"3",cols:"20",templateString:"<textarea ${!nameAttrSetting} data-dojo-attach-point='focusNode,containerNode,textbox' autocomplete='off'></textarea>",postMixInProperties:function(){if(!this.value&&this.srcNodeRef){this.value=this.srcNodeRef.value;}this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);if(has("ie")&&this.cols){_981.add(this.textbox,"dijitTextAreaCols");}},filter:function(_983){if(_983){_983=_983.replace(/\r/g,"");}return this.inherited(arguments);},_onInput:function(e){if(this.maxLength){var _984=parseInt(this.maxLength);var _985=this.textbox.value.replace(/\r/g,"");var _986=_985.length-_984;if(_986>0){var _987=this.textbox;if(_987.selectionStart){var pos=_987.selectionStart;var cr=0;if(has("opera")){cr=(this.textbox.value.substring(0,pos).match(/\r/g)||[]).length;}this.textbox.value=_985.substring(0,pos-_986-cr)+_985.substring(pos-cr);_987.setSelectionRange(pos-_986,pos-_986);}else{if(this.ownerDocument.selection){_987.focus();var _988=this.ownerDocument.selection.createRange();_988.moveStart("character",-_986);_988.text="";_988.select();}}}}this.inherited(arguments);}});});},"dijit/form/MultiSelect":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-geometry","dojo/sniff","dojo/query","./_FormValueWidget","dojo/NodeList-dom"],function(_989,_98a,_98b,has,_98c,_98d){var _98e=_98a("dijit.form.MultiSelect"+(has("dojo-bidi")?"_NoBidi":""),_98d,{size:7,baseClass:"dijitMultiSelect",templateString:"<select multiple='multiple' ${!nameAttrSetting} data-dojo-attach-point='containerNode,focusNode' data-dojo-attach-event='onchange: _onChange'></select>",addSelected:function(_98f){_98f.getSelected().forEach(function(n){this.containerNode.appendChild(n);this.domNode.scrollTop=this.domNode.offsetHeight;var _990=_98f.domNode.scrollTop;_98f.domNode.scrollTop=0;_98f.domNode.scrollTop=_990;},this);this._set("value",this.get("value"));},getSelected:function(){return _98c("option",this.containerNode).filter(function(n){return n.selected;});},_getValueAttr:function(){return _989.map(this.getSelected(),function(n){return n.value;});},multiple:true,_setMultipleAttr:function(val){},_setValueAttr:function(_991){if(has("android")){_98c("option",this.containerNode).orphan().forEach(function(n){var _992=n.ownerDocument.createElement("option");_992.value=n.value;_992.selected=(_989.indexOf(_991,n.value)!=-1);_992.text=n.text;_992.originalText=n.originalText;this.containerNode.appendChild(_992);},this);}else{_98c("option",this.containerNode).forEach(function(n){n.selected=(_989.indexOf(_991,n.value)!=-1);});}this.inherited(arguments);},invertSelection:function(_993){var val=[];_98c("option",this.containerNode).forEach(function(n){if(!n.selected){val.push(n.value);}});this._setValueAttr(val,!(_993===false||_993==null));},_onChange:function(){this._handleOnChange(this.get("value"),true);},resize:function(size){if(size){_98b.setMarginBox(this.domNode,size);}},postCreate:function(){this._set("value",this.get("value"));this.inherited(arguments);}});if(has("dojo-bidi")){_98e=_98a("dijit.form.MultiSelect",_98e,{addSelected:function(_994){_994.getSelected().forEach(function(n){n.text=this.enforceTextDirWithUcc(this.restoreOriginalText(n),n.text);},this);this.inherited(arguments);},_setTextDirAttr:function(_995){if((this.textDir!=_995||!this._created)&&this.enforceTextDirWithUcc){this._set("textDir",_995);_98c("option",this.containerNode).forEach(function(_996){if(!this._created&&_996.value===_996.text){_996.value=_996.text;}_996.text=this.enforceTextDirWithUcc(_996,_996.originalText||_996.text);},this);}}});}return _98e;});},"dijit/form/ComboBox":function(){define(["dojo/_base/declare","./ValidationTextBox","./ComboBoxMixin"],function(_997,_998,_999){return _997("dijit.form.ComboBox",[_998,_999],{});});},"dijit/InlineEditBox":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-style","dojo/i18n","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/when","./a11yclick","./focus","./_Widget","./_TemplatedMixin","./_WidgetsInTemplateMixin","./_Container","./form/Button","./form/_TextBoxMixin","./form/TextBox","dojo/text!./templates/InlineEditBox.html","dojo/i18n!./nls/common"],function(_99a,_99b,_99c,_99d,_99e,_99f,_9a0,_9a1,i18n,_9a2,keys,lang,on,has,when,_9a3,fm,_9a4,_9a5,_9a6,_9a7,_9a8,_9a9,_9aa,_9ab){var _9ac=_99d("dijit._InlineEditor",[_9a4,_9a5,_9a6],{templateString:_9ab,contextRequire:_99a,postMixInProperties:function(){this.inherited(arguments);this.messages=i18n.getLocalization("dijit","common",this.lang);_99b.forEach(["buttonSave","buttonCancel"],function(prop){if(!this[prop]){this[prop]=this.messages[prop];}},this);},buildRendering:function(){this.inherited(arguments);var Cls=typeof this.editor=="string"?(lang.getObject(this.editor)||_99a(this.editor)):this.editor;var _9ad=this.sourceStyle,_9ae="line-height:"+_9ad.lineHeight+";",_9af=_9a1.getComputedStyle(this.domNode);_99b.forEach(["Weight","Family","Size","Style"],function(prop){var _9b0=_9ad["font"+prop],_9b1=_9af["font"+prop];if(_9b1!=_9b0){_9ae+="font-"+prop+":"+_9ad["font"+prop]+";";}},this);_99b.forEach(["marginTop","marginBottom","marginLeft","marginRight","position","left","top","right","bottom","float","clear","display"],function(prop){this.domNode.style[prop]=_9ad[prop];},this);var _9b2=this.inlineEditBox.width;if(_9b2=="100%"){_9ae+="width:100%;";this.domNode.style.display="block";}else{_9ae+="width:"+(_9b2+(Number(_9b2)==_9b2?"px":""))+";";}var _9b3=lang.delegate(this.inlineEditBox.editorParams,{style:_9ae,dir:this.dir,lang:this.lang,textDir:this.textDir});this.editWidget=new Cls(_9b3,this.editorPlaceholder);if(this.inlineEditBox.autoSave){this.saveButton.destroy();this.cancelButton.destroy();this.saveButton=this.cancelButton=null;_9a0.destroy(this.buttonContainer);}},postCreate:function(){this.inherited(arguments);var ew=this.editWidget;if(this.inlineEditBox.autoSave){this.own(_99c.after(ew,"onChange",lang.hitch(this,"_onChange"),true),on(ew,"keydown",lang.hitch(this,"_onKeyDown")));}else{if("intermediateChanges" in ew){ew.set("intermediateChanges",true);this.own(_99c.after(ew,"onChange",lang.hitch(this,"_onIntermediateChange"),true));this.saveButton.set("disabled",true);}}},startup:function(){this.editWidget.startup();this.inherited(arguments);},_onIntermediateChange:function(){this.saveButton.set("disabled",(this.getValue()==this._resetValue)||!this.enableSave());},destroy:function(){this.editWidget.destroy(true);this.inherited(arguments);},getValue:function(){var ew=this.editWidget;return String(ew.get(("displayedValue" in ew||"_getDisplayedValueAttr" in ew)?"displayedValue":"value"));},_onKeyDown:function(e){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(e.altKey||e.ctrlKey){return;}if(e.keyCode==keys.ESCAPE){e.stopPropagation();e.preventDefault();this.cancel(true);}else{if(e.keyCode==keys.ENTER&&e.target.tagName=="INPUT"){e.stopPropagation();e.preventDefault();this._onChange();}}}},_onBlur:function(){this.inherited(arguments);if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(this.getValue()==this._resetValue){this.cancel(false);}else{if(this.enableSave()){this.save(false);}}}},_onChange:function(){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing&&this.enableSave()){fm.focus(this.inlineEditBox.displayNode);}},enableSave:function(){return this.editWidget.isValid?this.editWidget.isValid():true;},focus:function(){this.editWidget.focus();if(this.editWidget.focusNode){fm._onFocusNode(this.editWidget.focusNode);if(this.editWidget.focusNode.tagName=="INPUT"){this.defer(function(){_9a9.selectInputText(this.editWidget.focusNode);});}}}});var _9b4=_99d("dijit.InlineEditBox"+(has("dojo-bidi")?"_NoBidi":""),_9a4,{editing:false,autoSave:true,buttonSave:"",buttonCancel:"",renderAsHtml:false,editor:_9aa,editorWrapper:_9ac,editorParams:{},disabled:false,onChange:function(){},onCancel:function(){},width:"100%",value:"",noValueIndicator:has("ie")<=6?"<span style='font-family: wingdings; text-decoration: underline;'>&#160;&#160;&#160;&#160;&#x270d;&#160;&#160;&#160;&#160;</span>":"<span style='text-decoration: underline;'>&#160;&#160;&#160;&#160;&#x270d;&#160;&#160;&#160;&#160;</span>",constructor:function(){this.editorParams={};},postMixInProperties:function(){this.inherited(arguments);this.displayNode=this.srcNodeRef;this.own(on(this.displayNode,_9a3,lang.hitch(this,"_onClick")),on(this.displayNode,"mouseover, focus",lang.hitch(this,"_onMouseOver")),on(this.displayNode,"mouseout, blur",lang.hitch(this,"_onMouseOut")));this.displayNode.setAttribute("role","button");if(!this.displayNode.getAttribute("tabIndex")){this.displayNode.setAttribute("tabIndex",0);}if(!this.value&&!("value" in this.params)){this.value=lang.trim(this.renderAsHtml?this.displayNode.innerHTML:(this.displayNode.innerText||this.displayNode.textContent||""));}if(!this.value){this.displayNode.innerHTML=this.noValueIndicator;}_99f.add(this.displayNode,"dijitInlineEditBoxDisplayMode");},setDisabled:function(_9b5){_9a2.deprecated("dijit.InlineEditBox.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",_9b5);},_setDisabledAttr:function(_9b6){this.domNode.setAttribute("aria-disabled",_9b6?"true":"false");if(_9b6){this.displayNode.removeAttribute("tabIndex");}else{this.displayNode.setAttribute("tabIndex",0);}_99f.toggle(this.displayNode,"dijitInlineEditBoxDisplayModeDisabled",_9b6);this._set("disabled",_9b6);},_onMouseOver:function(){if(!this.disabled){_99f.add(this.displayNode,"dijitInlineEditBoxDisplayModeHover");}},_onMouseOut:function(){_99f.remove(this.displayNode,"dijitInlineEditBoxDisplayModeHover");},_onClick:function(e){if(this.disabled){return;}if(e){e.stopPropagation();e.preventDefault();}this._onMouseOut();this.defer("edit");},edit:function(){if(this.disabled||this.editing){return;}this._set("editing",true);this._savedTabIndex=_99e.get(this.displayNode,"tabIndex")||"0";if(!this.wrapperWidget){var _9b7=_9a0.create("span",null,this.domNode,"before");var Ewc=typeof this.editorWrapper=="string"?lang.getObject(this.editorWrapper):this.editorWrapper;this.wrapperWidget=new Ewc({value:this.value,buttonSave:this.buttonSave,buttonCancel:this.buttonCancel,dir:this.dir,lang:this.lang,tabIndex:this._savedTabIndex,editor:this.editor,inlineEditBox:this,sourceStyle:_9a1.getComputedStyle(this.displayNode),save:lang.hitch(this,"save"),cancel:lang.hitch(this,"cancel"),textDir:this.textDir},_9b7);if(!this.wrapperWidget._started){this.wrapperWidget.startup();}if(!this._started){this.startup();}}var ww=this.wrapperWidget;_99f.add(this.displayNode,"dijitOffScreen");_99f.remove(ww.domNode,"dijitOffScreen");_9a1.set(ww.domNode,{visibility:"visible"});_99e.set(this.displayNode,"tabIndex","-1");var ew=ww.editWidget;var self=this;when(ew.onLoadDeferred,lang.hitch(ww,function(){ew.set(("displayedValue" in ew||"_setDisplayedValueAttr" in ew)?"displayedValue":"value",self.value);this.defer(function(){if(ww.saveButton){ww.saveButton.set("disabled","intermediateChanges" in ew);}this.focus();this._resetValue=this.getValue();});}));},_onBlur:function(){this.inherited(arguments);if(!this.editing){}},destroy:function(){if(this.wrapperWidget&&!this.wrapperWidget._destroyed){this.wrapperWidget.destroy();delete this.wrapperWidget;}this.inherited(arguments);},_showText:function(_9b8){var ww=this.wrapperWidget;_9a1.set(ww.domNode,{visibility:"hidden"});_99f.add(ww.domNode,"dijitOffScreen");_99f.remove(this.displayNode,"dijitOffScreen");_99e.set(this.displayNode,"tabIndex",this._savedTabIndex);if(_9b8){fm.focus(this.displayNode);}},save:function(_9b9){if(this.disabled||!this.editing){return;}this._set("editing",false);var ww=this.wrapperWidget;var _9ba=ww.getValue();this.set("value",_9ba);this._showText(_9b9);},setValue:function(val){_9a2.deprecated("dijit.InlineEditBox.setValue() is deprecated. Use set('value', ...) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(val){val=lang.trim(val);var _9bb=this.renderAsHtml?val:val.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;").replace(/\n/g,"<br>");if(this.editorParams&&this.editorParams.type==="password"){this.displayNode.innerHTML="********";}else{this.displayNode.innerHTML=_9bb||this.noValueIndicator;}this._set("value",val);if(this._started){this.defer(function(){this.onChange(val);});}},getValue:function(){_9a2.deprecated("dijit.InlineEditBox.getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},cancel:function(_9bc){if(this.disabled||!this.editing){return;}this._set("editing",false);this.defer("onCancel");this._showText(_9bc);}});if(has("dojo-bidi")){_9b4=_99d("dijit.InlineEditBox",_9b4,{_setValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.displayNode);}});}_9b4._InlineEditor=_9ac;return _9b4;});},"dijit/_WidgetsInTemplateMixin":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/_base/lang","dojo/parser"],function(_9bd,_9be,_9bf,lang,_9c0){return _9bf("dijit._WidgetsInTemplateMixin",null,{_earlyTemplatedStartup:false,contextRequire:null,_beforeFillContent:function(){if(/dojoType|data-dojo-type/i.test(this.domNode.innerHTML)){var node=this.domNode;if(this.containerNode&&!this.searchContainerNode){this.containerNode.stopParser=true;}_9c0.parse(node,{noStart:!this._earlyTemplatedStartup,template:true,inherited:{dir:this.dir,lang:this.lang,textDir:this.textDir},propsThis:this,contextRequire:this.contextRequire,scope:"dojo"}).then(lang.hitch(this,function(_9c1){this._startupWidgets=_9c1;for(var i=0;i<_9c1.length;i++){this._processTemplateNode(_9c1[i],function(n,p){return n[p];},function(_9c2,type,_9c3){if(type in _9c2){return _9c2.connect(_9c2,type,_9c3);}else{return _9c2.on(type,_9c3,true);}});}if(this.containerNode&&this.containerNode.stopParser){delete this.containerNode.stopParser;}}));if(!this._startupWidgets){throw new Error(this.declaredClass+": parser returned unfilled promise (probably waiting for module auto-load), "+"unsupported by _WidgetsInTemplateMixin. Must pre-load all supporting widgets before instantiation.");}}},_processTemplateNode:function(_9c4,_9c5,_9c6){if(_9c5(_9c4,"dojoType")||_9c5(_9c4,"data-dojo-type")){return true;}return this.inherited(arguments);},startup:function(){_9bd.forEach(this._startupWidgets,function(w){if(w&&!w._started&&w.startup){w.startup();}});this._startupWidgets=null;this.inherited(arguments);}});});},"dijit/ToolbarSeparator":function(){define(["dojo/_base/declare","dojo/dom","./_Widget","./_TemplatedMixin"],function(_9c7,dom,_9c8,_9c9){return _9c7("dijit.ToolbarSeparator",[_9c8,_9c9],{templateString:"<div class=\"dijitToolbarSeparator dijitInline\" role=\"presentation\"></div>",buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});});},"dijit/PopupMenuItem":function(){define(["dojo/_base/declare","dojo/dom-style","dojo/_base/lang","dojo/query","./popup","./registry","./MenuItem","./hccss"],function(_9ca,_9cb,lang,_9cc,pm,_9cd,_9ce){return _9ca("dijit.PopupMenuItem",_9ce,{baseClass:"dijitMenuItem dijitPopupMenuItem",_fillContent:function(){if(this.srcNodeRef){var _9cf=_9cc("*",this.srcNodeRef);this.inherited(arguments,[_9cf[0]]);this.dropDownContainer=this.srcNodeRef;}},_openPopup:function(_9d0,_9d1){var _9d2=this.popup;pm.open(lang.delegate(_9d0,{popup:this.popup,around:this.domNode}));if(_9d1&&_9d2.focus){_9d2.focus();}},_closePopup:function(){pm.close(this.popup);this.popup.parentMenu=null;},startup:function(){if(this._started){return;}this.inherited(arguments);if(!this.popup){var node=_9cc("[widgetId]",this.dropDownContainer)[0];this.popup=_9cd.byNode(node);}this.ownerDocumentBody.appendChild(this.popup.domNode);this.popup.domNode.setAttribute("aria-labelledby",this.containerNode.id);this.popup.startup();this.popup.domNode.style.display="none";if(this.arrowWrapper){_9cb.set(this.arrowWrapper,"visibility","");}this.focusNode.setAttribute("aria-haspopup","true");},destroyDescendants:function(_9d3){if(this.popup){if(!this.popup._destroyed){this.popup.destroyRecursive(_9d3);}delete this.popup;}this.inherited(arguments);}});});},"dijit/CheckedMenuItem":function(){define(["dojo/_base/declare","dojo/dom-class","./MenuItem","dojo/text!./templates/CheckedMenuItem.html","./hccss"],function(_9d4,_9d5,_9d6,_9d7){return _9d4("dijit.CheckedMenuItem",_9d6,{baseClass:"dijitMenuItem dijitCheckedMenuItem",templateString:_9d7,checked:false,_setCheckedAttr:function(_9d8){this.domNode.setAttribute("aria-checked",_9d8?"true":"false");this._set("checked",_9d8);},iconClass:"",role:"menuitemcheckbox",checkedChar:"&#10003;",onChange:function(){},_onClick:function(evt){if(!this.disabled){this.set("checked",!this.checked);this.onChange(this.checked);}this.onClick(evt);}});});},"dijit/layout/AccordionContainer":function(){define(["require","dojo/_base/array","dojo/_base/declare","dojo/_base/fx","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/keys","dojo/_base/lang","dojo/sniff","dojo/topic","../focus","../_base/manager","dojo/ready","../_Widget","../_Container","../_TemplatedMixin","../_CssStateMixin","./StackContainer","./ContentPane","dojo/text!./templates/AccordionButton.html","../a11yclick"],function(_9d9,_9da,_9db,fx,dom,_9dc,_9dd,_9de,_9df,keys,lang,has,_9e0,_9e1,_9e2,_9e3,_9e4,_9e5,_9e6,_9e7,_9e8,_9e9,_9ea){function size(_9eb,dim){_9eb.resize?_9eb.resize(dim):_9df.setMarginBox(_9eb.domNode,dim);};var _9ec=_9db("dijit.layout._AccordionButton",[_9e4,_9e6,_9e7],{templateString:_9ea,label:"",_setLabelAttr:{node:"titleTextNode",type:"innerHTML"},title:"",_setTitleAttr:{node:"titleTextNode",type:"attribute",attribute:"title"},iconClassAttr:"",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitAccordionTitle",getParent:function(){return this.parent;},buildRendering:function(){this.inherited(arguments);var _9ed=this.id.replace(" ","_");_9dc.set(this.titleTextNode,"id",_9ed+"_title");this.focusNode.setAttribute("aria-labelledby",_9dc.get(this.titleTextNode,"id"));dom.setSelectable(this.domNode,false);},getTitleHeight:function(){return _9df.getMarginSize(this.domNode).h;},_onTitleClick:function(){var _9ee=this.getParent();_9ee.selectChild(this.contentWidget,true);_9e1.focus(this.focusNode);},_onTitleKeyDown:function(evt){return this.getParent()._onKeyDown(evt,this.contentWidget);},_setSelectedAttr:function(_9ef){this._set("selected",_9ef);this.focusNode.setAttribute("aria-expanded",_9ef?"true":"false");this.focusNode.setAttribute("aria-selected",_9ef?"true":"false");this.focusNode.setAttribute("tabIndex",_9ef?"0":"-1");}});if(has("dojo-bidi")){_9ec.extend({_setLabelAttr:function(_9f0){this._set("label",_9f0);_9dc.set(this.titleTextNode,"innerHTML",_9f0);this.applyTextDir(this.titleTextNode);},_setTitleAttr:function(_9f1){this._set("title",_9f1);_9dc.set(this.titleTextNode,"title",_9f1);this.applyTextDir(this.titleTextNode);}});}var _9f2=_9db("dijit.layout._AccordionInnerContainer"+(has("dojo-bidi")?"_NoBidi":""),[_9e4,_9e7],{baseClass:"dijitAccordionInnerContainer",isLayoutContainer:true,buildRendering:function(){this.domNode=_9de.place("<div class='"+this.baseClass+"' role='presentation'>",this.contentWidget.domNode,"after");var _9f3=this.contentWidget,cls=lang.isString(this.buttonWidget)?lang.getObject(this.buttonWidget):this.buttonWidget;this.button=_9f3._buttonWidget=(new cls({contentWidget:_9f3,label:_9f3.title,title:_9f3.tooltip,dir:_9f3.dir,lang:_9f3.lang,textDir:_9f3.textDir||this.textDir,iconClass:_9f3.iconClass,id:_9f3.id+"_button",parent:this.parent})).placeAt(this.domNode);this.containerNode=_9de.place("<div class='dijitAccordionChildWrapper' role='tabpanel' style='display:none'>",this.domNode);this.containerNode.setAttribute("aria-labelledby",this.button.id);_9de.place(this.contentWidget.domNode,this.containerNode);},postCreate:function(){this.inherited(arguments);var _9f4=this.button,cw=this.contentWidget;this._contentWidgetWatches=[cw.watch("title",lang.hitch(this,function(name,_9f5,_9f6){_9f4.set("label",_9f6);})),cw.watch("tooltip",lang.hitch(this,function(name,_9f7,_9f8){_9f4.set("title",_9f8);})),cw.watch("iconClass",lang.hitch(this,function(name,_9f9,_9fa){_9f4.set("iconClass",_9fa);}))];},_setSelectedAttr:function(_9fb){this._set("selected",_9fb);this.button.set("selected",_9fb);if(_9fb){var cw=this.contentWidget;if(cw.onSelected){cw.onSelected();}}},startup:function(){this.contentWidget.startup();},destroy:function(){this.button.destroyRecursive();_9da.forEach(this._contentWidgetWatches||[],function(w){w.unwatch();});delete this.contentWidget._buttonWidget;delete this.contentWidget._wrapperWidget;this.inherited(arguments);},destroyDescendants:function(_9fc){this.contentWidget.destroyRecursive(_9fc);}});if(has("dojo-bidi")){_9f2=_9db("dijit.layout._AccordionInnerContainer",_9f2,{postCreate:function(){this.inherited(arguments);var _9fd=this.button;this._contentWidgetWatches.push(this.contentWidget.watch("textDir",function(name,_9fe,_9ff){_9fd.set("textDir",_9ff);}));}});}var _a00=_9db("dijit.layout.AccordionContainer",_9e8,{duration:_9e2.defaultDuration,buttonWidget:_9ec,baseClass:"dijitAccordionContainer",buildRendering:function(){this.inherited(arguments);this.domNode.style.overflow="hidden";this.domNode.setAttribute("role","tablist");},startup:function(){if(this._started){return;}this.inherited(arguments);if(this.selectedChildWidget){this.selectedChildWidget._wrapperWidget.set("selected",true);}},layout:function(){var _a01=this.selectedChildWidget;if(!_a01){return;}var _a02=_a01._wrapperWidget.domNode,_a03=_9df.getMarginExtents(_a02),_a04=_9df.getPadBorderExtents(_a02),_a05=_a01._wrapperWidget.containerNode,_a06=_9df.getMarginExtents(_a05),_a07=_9df.getPadBorderExtents(_a05),_a08=this._contentBox;var _a09=0;_9da.forEach(this.getChildren(),function(_a0a){if(_a0a!=_a01){_a09+=_9df.getMarginSize(_a0a._wrapperWidget.domNode).h;}});this._verticalSpace=_a08.h-_a09-_a03.h-_a04.h-_a06.h-_a07.h-_a01._buttonWidget.getTitleHeight();this._containerContentBox={h:this._verticalSpace,w:this._contentBox.w-_a03.w-_a04.w-_a06.w-_a07.w};if(_a01){size(_a01,this._containerContentBox);}},_setupChild:function(_a0b){_a0b._wrapperWidget=_9f2({contentWidget:_a0b,buttonWidget:this.buttonWidget,id:_a0b.id+"_wrapper",dir:_a0b.dir,lang:_a0b.lang,textDir:_a0b.textDir||this.textDir,parent:this});this.inherited(arguments);_9de.place(_a0b.domNode,_a0b._wrapper,"replace");},removeChild:function(_a0c){if(_a0c._wrapperWidget){_9de.place(_a0c.domNode,_a0c._wrapperWidget.domNode,"after");_a0c._wrapperWidget.destroy();delete _a0c._wrapperWidget;}_9dd.remove(_a0c.domNode,"dijitHidden");this.inherited(arguments);},getChildren:function(){return _9da.map(this.inherited(arguments),function(_a0d){return _a0d.declaredClass=="dijit.layout._AccordionInnerContainer"?_a0d.contentWidget:_a0d;},this);},destroy:function(){if(this._animation){this._animation.stop();}_9da.forEach(this.getChildren(),function(_a0e){if(_a0e._wrapperWidget){_a0e._wrapperWidget.destroy();}else{_a0e.destroyRecursive();}});this.inherited(arguments);},_showChild:function(_a0f){_a0f._wrapperWidget.containerNode.style.display="block";return this.inherited(arguments);},_hideChild:function(_a10){_a10._wrapperWidget.containerNode.style.display="none";this.inherited(arguments);},_transition:function(_a11,_a12,_a13){if(has("ie")<8){_a13=false;}if(this._animation){this._animation.stop(true);delete this._animation;}var self=this;if(_a11){_a11._wrapperWidget.set("selected",true);var d=this._showChild(_a11);if(this.doLayout){size(_a11,this._containerContentBox);}}if(_a12){_a12._wrapperWidget.set("selected",false);if(!_a13){this._hideChild(_a12);}}if(_a13){var _a14=_a11._wrapperWidget.containerNode,_a15=_a12._wrapperWidget.containerNode;var _a16=_a11._wrapperWidget.containerNode,_a17=_9df.getMarginExtents(_a16),_a18=_9df.getPadBorderExtents(_a16),_a19=_a17.h+_a18.h;_a15.style.height=(self._verticalSpace-_a19)+"px";this._animation=new fx.Animation({node:_a14,duration:this.duration,curve:[1,this._verticalSpace-_a19-1],onAnimate:function(_a1a){_a1a=Math.floor(_a1a);_a14.style.height=_a1a+"px";_a15.style.height=(self._verticalSpace-_a19-_a1a)+"px";},onEnd:function(){delete self._animation;_a14.style.height="auto";_a12._wrapperWidget.containerNode.style.display="none";_a15.style.height="auto";self._hideChild(_a12);}});this._animation.onStop=this._animation.onEnd;this._animation.play();}return d;},_onKeyDown:function(e,_a1b){if(this.disabled||e.altKey||!(_a1b||e.ctrlKey)){return;}var c=e.keyCode;if((_a1b&&(c==keys.LEFT_ARROW||c==keys.UP_ARROW))||(e.ctrlKey&&c==keys.PAGE_UP)){this._adjacent(false)._buttonWidget._onTitleClick();e.stopPropagation();e.preventDefault();}else{if((_a1b&&(c==keys.RIGHT_ARROW||c==keys.DOWN_ARROW))||(e.ctrlKey&&(c==keys.PAGE_DOWN||c==keys.TAB))){this._adjacent(true)._buttonWidget._onTitleClick();e.stopPropagation();e.preventDefault();}}}});if(has("dijit-legacy-requires")){_9e3(0,function(){var _a1c=["dijit/layout/AccordionPane"];_9d9(_a1c);});}_a00._InnerContainer=_9f2;_a00._Button=_9ec;return _a00;});},"dijit/layout/StackContainer":function(){define(["dojo/_base/array","dojo/cookie","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/has","dojo/_base/lang","dojo/on","dojo/ready","dojo/topic","dojo/when","../registry","../_WidgetBase","./_LayoutWidget"],function(_a1d,_a1e,_a1f,_a20,_a21,has,lang,on,_a22,_a23,when,_a24,_a25,_a26){if(has("dijit-legacy-requires")){_a22(0,function(){var _a27=["dijit/layout/StackController"];require(_a27);});}var _a28=_a1f("dijit.layout.StackContainer",_a26,{doLayout:true,persist:false,baseClass:"dijitStackContainer",buildRendering:function(){this.inherited(arguments);_a20.add(this.domNode,"dijitLayoutContainer");},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKeyDown")));},startup:function(){if(this._started){return;}var _a29=this.getChildren();_a1d.forEach(_a29,this._setupChild,this);if(this.persist){this.selectedChildWidget=_a24.byId(_a1e(this.id+"_selectedChild"));}else{_a1d.some(_a29,function(_a2a){if(_a2a.selected){this.selectedChildWidget=_a2a;}return _a2a.selected;},this);}var _a2b=this.selectedChildWidget;if(!_a2b&&_a29[0]){_a2b=this.selectedChildWidget=_a29[0];_a2b.selected=true;}_a23.publish(this.id+"-startup",{children:_a29,selected:_a2b,textDir:this.textDir});this.inherited(arguments);},resize:function(){if(!this._hasBeenShown){this._hasBeenShown=true;var _a2c=this.selectedChildWidget;if(_a2c){this._showChild(_a2c);}}this.inherited(arguments);},_setupChild:function(_a2d){var _a2e=_a2d.domNode,_a2f=_a21.place("<div role='tabpanel' class='"+this.baseClass+"ChildWrapper dijitHidden'>",_a2d.domNode,"replace"),_a30=_a2d["aria-label"]||_a2d.title||_a2d.label;if(_a30){_a2f.setAttribute("aria-label",_a30);}_a21.place(_a2e,_a2f);_a2d._wrapper=_a2f;this.inherited(arguments);if(_a2e.style.display=="none"){_a2e.style.display="block";}_a2d.domNode.removeAttribute("title");},addChild:function(_a31,_a32){this.inherited(arguments);if(this._started){_a23.publish(this.id+"-addChild",_a31,_a32);this.layout();if(!this.selectedChildWidget){this.selectChild(_a31);}}},removeChild:function(page){var idx=_a1d.indexOf(this.getChildren(),page);this.inherited(arguments);_a21.destroy(page._wrapper);delete page._wrapper;if(this._started){_a23.publish(this.id+"-removeChild",page);}if(this._descendantsBeingDestroyed){return;}if(this.selectedChildWidget===page){this.selectedChildWidget=undefined;if(this._started){var _a33=this.getChildren();if(_a33.length){this.selectChild(_a33[Math.max(idx-1,0)]);}}}if(this._started){this.layout();}},selectChild:function(page,_a34){var d;page=_a24.byId(page);if(this.selectedChildWidget!=page){d=this._transition(page,this.selectedChildWidget,_a34);this._set("selectedChildWidget",page);_a23.publish(this.id+"-selectChild",page,this._focused);if(this.persist){_a1e(this.id+"_selectedChild",this.selectedChildWidget.id);}}return when(d||true);},_transition:function(_a35,_a36){if(_a36){this._hideChild(_a36);}var d=this._showChild(_a35);if(_a35.resize){if(this.doLayout){_a35.resize(this._containerContentBox||this._contentBox);}else{_a35.resize();}}return d;},_adjacent:function(_a37){var _a38=this.getChildren();var _a39=_a1d.indexOf(_a38,this.selectedChildWidget);_a39+=_a37?1:_a38.length-1;return _a38[_a39%_a38.length];},forward:function(){return this.selectChild(this._adjacent(true),true);},back:function(){return this.selectChild(this._adjacent(false),true);},_onKeyDown:function(e){_a23.publish(this.id+"-containerKeyDown",{e:e,page:this});},layout:function(){var _a3a=this.selectedChildWidget;if(_a3a&&_a3a.resize){if(this.doLayout){_a3a.resize(this._containerContentBox||this._contentBox);}else{_a3a.resize();}}},_showChild:function(page){var _a3b=this.getChildren();page.isFirstChild=(page==_a3b[0]);page.isLastChild=(page==_a3b[_a3b.length-1]);page._set("selected",true);if(page._wrapper){_a20.replace(page._wrapper,"dijitVisible","dijitHidden");}return (page._onShow&&page._onShow())||true;},_hideChild:function(page){page._set("selected",false);if(page._wrapper){_a20.replace(page._wrapper,"dijitHidden","dijitVisible");}page.onHide&&page.onHide();},closeChild:function(page){var _a3c=!page.onClose||page.onClose(this,page);if(_a3c){this.removeChild(page);page.destroyRecursive();}},destroyDescendants:function(_a3d){this._descendantsBeingDestroyed=true;this.selectedChildWidget=undefined;_a1d.forEach(this.getChildren(),function(_a3e){if(!_a3d){this.removeChild(_a3e);}_a3e.destroyRecursive(_a3d);},this);this._descendantsBeingDestroyed=false;}});_a28.ChildWidgetProperties={selected:false,disabled:false,closable:false,iconClass:"dijitNoIcon",showTitle:true};lang.extend(_a25,_a28.ChildWidgetProperties);return _a28;});},"dojo/cookie":function(){define(["./_base/kernel","./regexp"],function(dojo,_a3f){dojo.cookie=function(name,_a40,_a41){var c=document.cookie,ret;if(arguments.length==1){var _a42=c.match(new RegExp("(?:^|; )"+_a3f.escapeString(name)+"=([^;]*)"));ret=_a42?decodeURIComponent(_a42[1]):undefined;}else{_a41=_a41||{};var exp=_a41.expires;if(typeof exp=="number"){var d=new Date();d.setTime(d.getTime()+exp*24*60*60*1000);exp=_a41.expires=d;}if(exp&&exp.toUTCString){_a41.expires=exp.toUTCString();}_a40=encodeURIComponent(_a40);var _a43=name+"="+_a40,_a44;for(_a44 in _a41){_a43+="; "+_a44;var _a45=_a41[_a44];if(_a45!==true){_a43+="="+_a45;}}document.cookie=_a43;}return ret;};dojo.cookie.isSupported=function(){if(!("cookieEnabled" in navigator)){this("__djCookieTest__","CookiesAllowed");navigator.cookieEnabled=this("__djCookieTest__")=="CookiesAllowed";if(navigator.cookieEnabled){this("__djCookieTest__","",{expires:-1});}}return navigator.cookieEnabled;};return dojo.cookie;});},"dijit/layout/AccordionPane":function(){define(["dojo/_base/declare","dojo/_base/kernel","./ContentPane"],function(_a46,_a47,_a48){return _a46("dijit.layout.AccordionPane",_a48,{constructor:function(){_a47.deprecated("dijit.layout.AccordionPane deprecated, use ContentPane instead","","2.0");},onSelected:function(){}});});},"dijit/layout/BorderContainer":function(){define(["dojo/_base/array","dojo/cookie","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/keys","dojo/_base/lang","dojo/on","dojo/touch","../_WidgetBase","../_Widget","../_TemplatedMixin","./LayoutContainer","./utils"],function(_a49,_a4a,_a4b,_a4c,_a4d,_a4e,_a4f,keys,lang,on,_a50,_a51,_a52,_a53,_a54,_a55){var _a56=_a4b("dijit.layout._Splitter",[_a52,_a53],{live:true,templateString:"<div class=\"dijitSplitter\" data-dojo-attach-event=\"onkeydown:_onKeyDown,press:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse\" tabIndex=\"0\" role=\"separator\"><div class=\"dijitSplitterThumb\"></div></div>",constructor:function(){this._handlers=[];},postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);this._factor=/top|left/.test(this.region)?1:-1;this._cookieName=this.container.id+"_"+this.region;},buildRendering:function(){this.inherited(arguments);_a4c.add(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));if(this.container.persist){var _a57=_a4a(this._cookieName);if(_a57){this.child.domNode.style[this.horizontal?"height":"width"]=_a57;}}},_computeMaxSize:function(){var dim=this.horizontal?"h":"w",_a58=_a4e.getMarginBox(this.child.domNode)[dim],_a59=_a49.filter(this.container.getChildren(),function(_a5a){return _a5a.region=="center";})[0];var _a5b=_a4e.getContentBox(_a59.domNode)[dim]-10;return Math.min(this.child.maxSize,_a58+_a5b);},_startDrag:function(e){if(!this.cover){this.cover=_a4d.place("<div class=dijitSplitterCover></div>",this.child.domNode,"after");}_a4c.add(this.cover,"dijitSplitterCoverActive");if(this.fake){_a4d.destroy(this.fake);}if(!(this._resize=this.live)){(this.fake=this.domNode.cloneNode(true)).removeAttribute("id");_a4c.add(this.domNode,"dijitSplitterShadow");_a4d.place(this.fake,this.domNode,"after");}_a4c.add(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active");if(this.fake){_a4c.remove(this.fake,"dijitSplitterHover dijitSplitter"+(this.horizontal?"H":"V")+"Hover");}var _a5c=this._factor,_a5d=this.horizontal,axis=_a5d?"pageY":"pageX",_a5e=e[axis],_a5f=this.domNode.style,dim=_a5d?"h":"w",_a60=_a4f.getComputedStyle(this.child.domNode),_a61=_a4e.getMarginBox(this.child.domNode,_a60)[dim],max=this._computeMaxSize(),min=Math.max(this.child.minSize,_a4e.getPadBorderExtents(this.child.domNode,_a60)[dim]+10),_a62=this.region,_a63=_a62=="top"||_a62=="bottom"?"top":"left",_a64=parseInt(_a5f[_a63],10),_a65=this._resize,_a66=lang.hitch(this.container,"_layoutChildren",this.child.id),de=this.ownerDocument;this._handlers=this._handlers.concat([on(de,_a50.move,this._drag=function(e,_a67){var _a68=e[axis]-_a5e,_a69=_a5c*_a68+_a61,_a6a=Math.max(Math.min(_a69,max),min);if(_a65||_a67){_a66(_a6a);}_a5f[_a63]=_a68+_a64+_a5c*(_a6a-_a69)+"px";}),on(de,"dragstart",function(e){e.stopPropagation();e.preventDefault();}),on(this.ownerDocumentBody,"selectstart",function(e){e.stopPropagation();e.preventDefault();}),on(de,_a50.release,lang.hitch(this,"_stopDrag"))]);e.stopPropagation();e.preventDefault();},_onMouse:function(e){var o=(e.type=="mouseover"||e.type=="mouseenter");_a4c.toggle(this.domNode,"dijitSplitterHover",o);_a4c.toggle(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover",o);},_stopDrag:function(e){try{if(this.cover){_a4c.remove(this.cover,"dijitSplitterCoverActive");}if(this.fake){_a4d.destroy(this.fake);}_a4c.remove(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active dijitSplitterShadow");this._drag(e);this._drag(e,true);}finally{this._cleanupHandlers();delete this._drag;}if(this.container.persist){_a4a(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365});}},_cleanupHandlers:function(){var h;while(h=this._handlers.pop()){h.remove();}},_onKeyDown:function(e){this._resize=true;var _a6b=this.horizontal;var tick=1;switch(e.keyCode){case _a6b?keys.UP_ARROW:keys.LEFT_ARROW:tick*=-1;case _a6b?keys.DOWN_ARROW:keys.RIGHT_ARROW:break;default:return;}var _a6c=_a4e.getMarginSize(this.child.domNode)[_a6b?"h":"w"]+this._factor*tick;this.container._layoutChildren(this.child.id,Math.max(Math.min(_a6c,this._computeMaxSize()),this.child.minSize));e.stopPropagation();e.preventDefault();},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.cover;delete this.fake;this.inherited(arguments);}});var _a6d=_a4b("dijit.layout._Gutter",[_a52,_a53],{templateString:"<div class=\"dijitGutter\" role=\"presentation\"></div>",postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);},buildRendering:function(){this.inherited(arguments);_a4c.add(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"));}});var _a6e=_a4b("dijit.layout.BorderContainer",_a54,{gutters:true,liveSplitters:true,persist:false,baseClass:"dijitBorderContainer",_splitterClass:_a56,postMixInProperties:function(){if(!this.gutters){this.baseClass+="NoGutter";}this.inherited(arguments);},_setupChild:function(_a6f){this.inherited(arguments);var _a70=_a6f.region,ltr=_a6f.isLeftToRight();if(_a70=="leading"){_a70=ltr?"left":"right";}if(_a70=="trailing"){_a70=ltr?"right":"left";}if(_a70){if(_a70!="center"&&(_a6f.splitter||this.gutters)&&!_a6f._splitterWidget){var _a71=_a6f.splitter?this._splitterClass:_a6d;if(lang.isString(_a71)){_a71=lang.getObject(_a71);}var _a72=new _a71({id:_a6f.id+"_splitter",container:this,child:_a6f,region:_a70,live:this.liveSplitters});_a72.isSplitter=true;_a6f._splitterWidget=_a72;var _a73=_a70=="bottom"||_a70==(this.isLeftToRight()?"right":"left");_a4d.place(_a72.domNode,_a6f.domNode,_a73?"before":"after");_a72.startup();}}},layout:function(){this._layoutChildren();},removeChild:function(_a74){var _a75=_a74._splitterWidget;if(_a75){_a75.destroy();delete _a74._splitterWidget;}this.inherited(arguments);},getChildren:function(){return _a49.filter(this.inherited(arguments),function(_a76){return !_a76.isSplitter;});},getSplitter:function(_a77){return _a49.filter(this.getChildren(),function(_a78){return _a78.region==_a77;})[0]._splitterWidget;},resize:function(_a79,_a7a){if(!this.cs||!this.pe){var node=this.domNode;this.cs=_a4f.getComputedStyle(node);this.pe=_a4e.getPadExtents(node,this.cs);this.pe.r=_a4f.toPixelValue(node,this.cs.paddingRight);this.pe.b=_a4f.toPixelValue(node,this.cs.paddingBottom);_a4f.set(node,"padding","0px");}this.inherited(arguments);},_layoutChildren:function(_a7b,_a7c){if(!this._borderBox||!this._borderBox.h){return;}var _a7d=[];_a49.forEach(this._getOrderedChildren(),function(pane){_a7d.push(pane);if(pane._splitterWidget){_a7d.push(pane._splitterWidget);}});var dim={l:this.pe.l,t:this.pe.t,w:this._borderBox.w-this.pe.w,h:this._borderBox.h-this.pe.h};_a55.layoutChildren(this.domNode,dim,_a7d,_a7b,_a7c);},destroyRecursive:function(){_a49.forEach(this.getChildren(),function(_a7e){var _a7f=_a7e._splitterWidget;if(_a7f){_a7f.destroy();}delete _a7e._splitterWidget;});this.inherited(arguments);}});_a6e.ChildWidgetProperties={splitter:false,minSize:0,maxSize:Infinity};lang.mixin(_a6e.ChildWidgetProperties,_a54.ChildWidgetProperties);lang.extend(_a51,_a6e.ChildWidgetProperties);_a6e._Splitter=_a56;_a6e._Gutter=_a6d;return _a6e;});},"dijit/layout/LayoutContainer":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-style","dojo/_base/lang","../_WidgetBase","./_LayoutWidget","./utils"],function(_a80,_a81,_a82,_a83,lang,_a84,_a85,_a86){var _a87=_a81("dijit.layout.LayoutContainer",_a85,{design:"headline",baseClass:"dijitLayoutContainer",startup:function(){if(this._started){return;}_a80.forEach(this.getChildren(),this._setupChild,this);this.inherited(arguments);},_setupChild:function(_a88){this.inherited(arguments);var _a89=_a88.region;if(_a89){_a82.add(_a88.domNode,this.baseClass+"Pane");}},_getOrderedChildren:function(){var _a8a=_a80.map(this.getChildren(),function(_a8b,idx){return {pane:_a8b,weight:[_a8b.region=="center"?Infinity:0,_a8b.layoutPriority,(this.design=="sidebar"?1:-1)*(/top|bottom/.test(_a8b.region)?1:-1),idx]};},this);_a8a.sort(function(a,b){var aw=a.weight,bw=b.weight;for(var i=0;i<aw.length;i++){if(aw[i]!=bw[i]){return aw[i]-bw[i];}}return 0;});return _a80.map(_a8a,function(w){return w.pane;});},layout:function(){_a86.layoutChildren(this.domNode,this._contentBox,this._getOrderedChildren());},addChild:function(_a8c,_a8d){this.inherited(arguments);if(this._started){this.layout();}},removeChild:function(_a8e){this.inherited(arguments);if(this._started){this.layout();}_a82.remove(_a8e.domNode,this.baseClass+"Pane");_a83.set(_a8e.domNode,{top:"auto",bottom:"auto",left:"auto",right:"auto",position:"static"});_a83.set(_a8e.domNode,/top|bottom/.test(_a8e.region)?"width":"height","auto");}});_a87.ChildWidgetProperties={region:"",layoutAlign:"",layoutPriority:0};lang.extend(_a84,_a87.ChildWidgetProperties);return _a87;});},"dijit/layout/TabContainer":function(){define(["dojo/_base/lang","dojo/_base/declare","./_TabContainerBase","./TabController","./ScrollingTabController"],function(lang,_a8f,_a90,_a91,_a92){return _a8f("dijit.layout.TabContainer",_a90,{useMenu:true,useSlider:true,controllerWidget:"",_makeController:function(_a93){var cls=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout"),_a91=typeof this.controllerWidget=="string"?lang.getObject(this.controllerWidget):this.controllerWidget;return new _a91({id:this.id+"_tablist",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":cls,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},_a93);},postMixInProperties:function(){this.inherited(arguments);if(!this.controllerWidget){this.controllerWidget=(this.tabPosition=="top"||this.tabPosition=="bottom")&&!this.nested?_a92:_a91;}}});});},"dijit/layout/_TabContainerBase":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","./StackContainer","./utils","../_TemplatedMixin","dojo/text!./templates/TabContainer.html"],function(_a94,_a95,_a96,_a97,_a98,_a99,_a9a,_a9b){return _a94("dijit.layout._TabContainerBase",[_a98,_a9a],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:false,nested:false,templateString:_a9b,postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.srcNodeRef&&_a97.set(this.srcNodeRef,"visibility","hidden");this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);this.tablist=this._makeController(this.tablistNode);if(!this.doLayout){_a95.add(this.domNode,"dijitTabContainerNoLayout");}if(this.nested){_a95.add(this.domNode,"dijitTabContainerNested");_a95.add(this.tablist.containerNode,"dijitTabContainerTabListNested");_a95.add(this.tablistSpacer,"dijitTabContainerSpacerNested");_a95.add(this.containerNode,"dijitTabPaneWrapperNested");}else{_a95.add(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"));}},_setupChild:function(tab){_a95.add(tab.domNode,"dijitTabPane");this.inherited(arguments);},removeChild:function(_a9c){_a95.remove(_a9c.domNode,"dijitTabPane");this.inherited(arguments);},startup:function(){if(this._started){return;}this.tablist.startup();this.inherited(arguments);},layout:function(){if(!this._contentBox||typeof (this._contentBox.l)=="undefined"){return;}var sc=this.selectedChildWidget;if(this.doLayout){var _a9d=this.tabPosition.replace(/-h/,"");this.tablist.region=_a9d;var _a9e=[this.tablist,{domNode:this.tablistSpacer,region:_a9d},{domNode:this.containerNode,region:"center"}];_a99.layoutChildren(this.domNode,this._contentBox,_a9e);this._containerContentBox=_a99.marginBox2contentBox(this.containerNode,_a9e[2]);if(sc&&sc.resize){sc.resize(this._containerContentBox);}}else{if(this.tablist.resize){var s=this.tablist.domNode.style;s.width="0";var _a9f=_a96.getContentBox(this.domNode).w;s.width="";this.tablist.resize({w:_a9f});}if(sc&&sc.resize){sc.resize();}}},destroy:function(_aa0){if(this.tablist){this.tablist.destroy(_aa0);}this.inherited(arguments);}});});},"dijit/layout/TabController":function(){define(["dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/has","dojo/i18n","dojo/_base/lang","./StackController","../registry","../Menu","../MenuItem","dojo/text!./templates/_TabButton.html","dojo/i18n!../nls/common"],function(_aa1,dom,_aa2,_aa3,has,i18n,lang,_aa4,_aa5,Menu,_aa6,_aa7){var _aa8=_aa1("dijit.layout._TabButton"+(has("dojo-bidi")?"_NoBidi":""),_aa4.StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:_aa7,_setNameAttr:"focusNode",scrollOnFocus:false,buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.containerNode,false);},startup:function(){this.inherited(arguments);var n=this.domNode;this.defer(function(){n.className=n.className;},1);},_setCloseButtonAttr:function(disp){this._set("closeButton",disp);_aa3.toggle(this.domNode,"dijitClosable",disp);this.closeNode.style.display=disp?"":"none";if(disp){var _aa9=i18n.getLocalization("dijit","common");if(this.closeNode){_aa2.set(this.closeNode,"title",_aa9.itemClose);}}},_setDisabledAttr:function(_aaa){this.inherited(arguments);if(this.closeNode){if(_aaa){_aa2.remove(this.closeNode,"title");}else{var _aab=i18n.getLocalization("dijit","common");_aa2.set(this.closeNode,"title",_aab.itemClose);}}},_setLabelAttr:function(_aac){this.inherited(arguments);if(!this.showLabel&&!this.params.title){this.iconNode.alt=lang.trim(this.containerNode.innerText||this.containerNode.textContent||"");}}});if(has("dojo-bidi")){_aa8=_aa1("dijit.layout._TabButton",_aa8,{_setLabelAttr:function(_aad){this.inherited(arguments);this.applyTextDir(this.iconNode,this.iconNode.alt);}});}var _aae=_aa1("dijit.layout.TabController",_aa4,{baseClass:"dijitTabController",templateString:"<div role='tablist' data-dojo-attach-event='onkeydown:onkeydown'></div>",tabPosition:"top",buttonWidget:_aa8,buttonWidgetCloseClass:"dijitTabCloseButton",postCreate:function(){this.inherited(arguments);var _aaf=new Menu({id:this.id+"_Menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,targetNodeIds:[this.domNode],selector:function(node){return _aa3.contains(node,"dijitClosable")&&!_aa3.contains(node,"dijitTabDisabled");}});this.own(_aaf);var _ab0=i18n.getLocalization("dijit","common"),_ab1=this;_aaf.addChild(new _aa6({label:_ab0.itemClose,ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,onClick:function(evt){var _ab2=_aa5.byNode(this.getParent().currentTarget);_ab1.onCloseButtonClick(_ab2.page);}}));}});_aae.TabButton=_aa8;return _aae;});},"dijit/layout/StackController":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","../focus","../registry","../_Widget","../_TemplatedMixin","../_Container","../form/ToggleButton","dojo/touch"],function(_ab3,_ab4,_ab5,_ab6,keys,lang,on,_ab7,_ab8,_ab9,_aba,_abb,_abc,_abd){var _abe=_ab4("dijit.layout._StackButton",_abd,{tabIndex:"-1",closeButton:false,_aria_attr:"aria-selected",buildRendering:function(evt){this.inherited(arguments);(this.focusNode||this.domNode).setAttribute("role","tab");}});var _abf=_ab4("dijit.layout.StackController",[_aba,_abb,_abc],{baseClass:"dijitStackController",templateString:"<span role='tablist' data-dojo-attach-event='onkeydown'></span>",containerId:"",buttonWidget:_abe,buttonWidgetCloseClass:"dijitStackCloseButton",pane2button:function(id){return _ab9.byId(this.id+"_"+id);},postCreate:function(){this.inherited(arguments);this.own(_ab7.subscribe(this.containerId+"-startup",lang.hitch(this,"onStartup")),_ab7.subscribe(this.containerId+"-addChild",lang.hitch(this,"onAddChild")),_ab7.subscribe(this.containerId+"-removeChild",lang.hitch(this,"onRemoveChild")),_ab7.subscribe(this.containerId+"-selectChild",lang.hitch(this,"onSelectChild")),_ab7.subscribe(this.containerId+"-containerKeyDown",lang.hitch(this,"onContainerKeyDown")));this.containerNode.dojoClick=true;this.own(on(this.containerNode,"click",lang.hitch(this,function(evt){var _ac0=_ab9.getEnclosingWidget(evt.target);if(_ac0!=this.containerNode&&!_ac0.disabled&&_ac0.page){for(var _ac1=evt.target;_ac1!==this.containerNode;_ac1=_ac1.parentNode){if(_ab5.contains(_ac1,this.buttonWidgetCloseClass)){this.onCloseButtonClick(_ac0.page);break;}else{if(_ac1==_ac0.domNode){this.onButtonClick(_ac0.page);break;}}}}})));},onStartup:function(info){this.textDir=info.textDir;_ab3.forEach(info.children,this.onAddChild,this);if(info.selected){this.onSelectChild(info.selected);}var _ac2=_ab9.byId(this.containerId).containerNode,_ac3=lang.hitch(this,"pane2button"),_ac4={"title":"label","showtitle":"showLabel","iconclass":"iconClass","closable":"closeButton","tooltip":"title","disabled":"disabled","textdir":"textdir"},_ac5=function(attr,_ac6){return on(_ac2,"attrmodified-"+attr,function(evt){var _ac7=_ac3(evt.detail&&evt.detail.widget&&evt.detail.widget.id);if(_ac7){_ac7.set(_ac6,evt.detail.newValue);}});};for(var attr in _ac4){this.own(_ac5(attr,_ac4[attr]));}},destroy:function(_ac8){this.destroyDescendants(_ac8);this.inherited(arguments);},onAddChild:function(page,_ac9){var Cls=lang.isString(this.buttonWidget)?lang.getObject(this.buttonWidget):this.buttonWidget;var _aca=new Cls({id:this.id+"_"+page.id,name:this.id+"_"+page.id,label:page.title,disabled:page.disabled,ownerDocument:this.ownerDocument,dir:page.dir,lang:page.lang,textDir:page.textDir||this.textDir,showLabel:page.showTitle,iconClass:page.iconClass,closeButton:page.closable,title:page.tooltip,page:page});this.addChild(_aca,_ac9);page.controlButton=_aca;if(!this._currentChild){this.onSelectChild(page);}var _acb=page._wrapper.getAttribute("aria-labelledby")?page._wrapper.getAttribute("aria-labelledby")+" "+_aca.id:_aca.id;page._wrapper.removeAttribute("aria-label");page._wrapper.setAttribute("aria-labelledby",_acb);},onRemoveChild:function(page){if(this._currentChild===page){this._currentChild=null;}var _acc=this.pane2button(page.id);if(_acc){this.removeChild(_acc);_acc.destroy();}delete page.controlButton;},onSelectChild:function(page){if(!page){return;}if(this._currentChild){var _acd=this.pane2button(this._currentChild.id);_acd.set("checked",false);_acd.focusNode.setAttribute("tabIndex","-1");}var _ace=this.pane2button(page.id);_ace.set("checked",true);this._currentChild=page;_ace.focusNode.setAttribute("tabIndex","0");var _acf=_ab9.byId(this.containerId);},onButtonClick:function(page){var _ad0=this.pane2button(page.id);_ab8.focus(_ad0.focusNode);if(this._currentChild&&this._currentChild.id===page.id){_ad0.set("checked",true);}var _ad1=_ab9.byId(this.containerId);_ad1.selectChild(page);},onCloseButtonClick:function(page){var _ad2=_ab9.byId(this.containerId);_ad2.closeChild(page);if(this._currentChild){var b=this.pane2button(this._currentChild.id);if(b){_ab8.focus(b.focusNode||b.domNode);}}},adjacent:function(_ad3){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition))){_ad3=!_ad3;}var _ad4=this.getChildren();var idx=_ab3.indexOf(_ad4,this.pane2button(this._currentChild.id)),_ad5=_ad4[idx];var _ad6;do{idx=(idx+(_ad3?1:_ad4.length-1))%_ad4.length;_ad6=_ad4[idx];}while(_ad6.disabled&&_ad6!=_ad5);return _ad6;},onkeydown:function(e,_ad7){if(this.disabled||e.altKey){return;}var _ad8=null;if(e.ctrlKey||!e._djpage){switch(e.keyCode){case keys.LEFT_ARROW:case keys.UP_ARROW:if(!e._djpage){_ad8=false;}break;case keys.PAGE_UP:if(e.ctrlKey){_ad8=false;}break;case keys.RIGHT_ARROW:case keys.DOWN_ARROW:if(!e._djpage){_ad8=true;}break;case keys.PAGE_DOWN:if(e.ctrlKey){_ad8=true;}break;case keys.HOME:var _ad9=this.getChildren();for(var idx=0;idx<_ad9.length;idx++){var _ada=_ad9[idx];if(!_ada.disabled){this.onButtonClick(_ada.page);break;}}e.stopPropagation();e.preventDefault();break;case keys.END:var _ad9=this.getChildren();for(var idx=_ad9.length-1;idx>=0;idx--){var _ada=_ad9[idx];if(!_ada.disabled){this.onButtonClick(_ada.page);break;}}e.stopPropagation();e.preventDefault();break;case keys.DELETE:case "W".charCodeAt(0):if(this._currentChild.closable&&(e.keyCode==keys.DELETE||e.ctrlKey)){this.onCloseButtonClick(this._currentChild);e.stopPropagation();e.preventDefault();}break;case keys.TAB:if(e.ctrlKey){this.onButtonClick(this.adjacent(!e.shiftKey).page);e.stopPropagation();e.preventDefault();}break;}if(_ad8!==null){this.onButtonClick(this.adjacent(_ad8).page);e.stopPropagation();e.preventDefault();}}},onContainerKeyDown:function(info){info.e._djpage=info.page;this.onkeydown(info.e);}});_abf.StackButton=_abe;return _abf;});},"dijit/Menu":function(){define(["require","dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-geometry","dojo/dom-style","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/_base/window","dojo/window","./popup","./DropDownMenu","dojo/ready"],function(_adb,_adc,_add,dom,_ade,_adf,_ae0,keys,lang,on,has,win,_ae1,pm,_ae2,_ae3){if(has("dijit-legacy-requires")){_ae3(0,function(){var _ae4=["dijit/MenuItem","dijit/PopupMenuItem","dijit/CheckedMenuItem","dijit/MenuSeparator"];_adb(_ae4);});}return _add("dijit.Menu",_ae2,{constructor:function(){this._bindings=[];},targetNodeIds:[],selector:"",contextMenuForWindow:false,leftClickToOpen:false,refocus:true,postCreate:function(){if(this.contextMenuForWindow){this.bindDomNode(this.ownerDocumentBody);}else{_adc.forEach(this.targetNodeIds,this.bindDomNode,this);}this.inherited(arguments);},_iframeContentWindow:function(_ae5){return _ae1.get(this._iframeContentDocument(_ae5))||this._iframeContentDocument(_ae5)["__parent__"]||(_ae5.name&&document.frames[_ae5.name])||null;},_iframeContentDocument:function(_ae6){return _ae6.contentDocument||(_ae6.contentWindow&&_ae6.contentWindow.document)||(_ae6.name&&document.frames[_ae6.name]&&document.frames[_ae6.name].document)||null;},bindDomNode:function(node){node=dom.byId(node,this.ownerDocument);var cn;if(node.tagName.toLowerCase()=="iframe"){var _ae7=node,_ae8=this._iframeContentWindow(_ae7);cn=win.body(_ae8.document);}else{cn=(node==win.body(this.ownerDocument)?this.ownerDocument.documentElement:node);}var _ae9={node:node,iframe:_ae7};_ade.set(node,"_dijitMenu"+this.id,this._bindings.push(_ae9));var _aea=lang.hitch(this,function(cn){var _aeb=this.selector,_aec=_aeb?function(_aed){return on.selector(_aeb,_aed);}:function(_aee){return _aee;},self=this;return [on(cn,_aec(this.leftClickToOpen?"click":"contextmenu"),function(evt){evt.stopPropagation();evt.preventDefault();if((new Date()).getTime()<self._lastKeyDown+500){return;}self._scheduleOpen(this,_ae7,{x:evt.pageX,y:evt.pageY},evt.target);}),on(cn,_aec("keydown"),function(evt){if(evt.keyCode==93||(evt.shiftKey&&evt.keyCode==keys.F10)||(self.leftClickToOpen&&evt.keyCode==keys.SPACE)){evt.stopPropagation();evt.preventDefault();self._scheduleOpen(this,_ae7,null,evt.target);self._lastKeyDown=(new Date()).getTime();}})];});_ae9.connects=cn?_aea(cn):[];if(_ae7){_ae9.onloadHandler=lang.hitch(this,function(){var _aef=this._iframeContentWindow(_ae7),cn=win.body(_aef.document);_ae9.connects=_aea(cn);});if(_ae7.addEventListener){_ae7.addEventListener("load",_ae9.onloadHandler,false);}else{_ae7.attachEvent("onload",_ae9.onloadHandler);}}},unBindDomNode:function(_af0){var node;try{node=dom.byId(_af0,this.ownerDocument);}catch(e){return;}var _af1="_dijitMenu"+this.id;if(node&&_ade.has(node,_af1)){var bid=_ade.get(node,_af1)-1,b=this._bindings[bid],h;while((h=b.connects.pop())){h.remove();}var _af2=b.iframe;if(_af2){if(_af2.removeEventListener){_af2.removeEventListener("load",b.onloadHandler,false);}else{_af2.detachEvent("onload",b.onloadHandler);}}_ade.remove(node,_af1);delete this._bindings[bid];}},_scheduleOpen:function(_af3,_af4,_af5,_af6){if(!this._openTimer){this._openTimer=this.defer(function(){delete this._openTimer;this._openMyself({target:_af6,delegatedTarget:_af3,iframe:_af4,coords:_af5});},1);}},_openMyself:function(args){var _af7=args.target,_af8=args.iframe,_af9=args.coords,_afa=!_af9;this.currentTarget=args.delegatedTarget;if(_af9){if(_af8){var ifc=_adf.position(_af8,true),_afb=this._iframeContentWindow(_af8),_afc=_adf.docScroll(_afb.document);var cs=_ae0.getComputedStyle(_af8),tp=_ae0.toPixelValue,left=(has("ie")&&has("quirks")?0:tp(_af8,cs.paddingLeft))+(has("ie")&&has("quirks")?tp(_af8,cs.borderLeftWidth):0),top=(has("ie")&&has("quirks")?0:tp(_af8,cs.paddingTop))+(has("ie")&&has("quirks")?tp(_af8,cs.borderTopWidth):0);_af9.x+=ifc.x+left-_afc.x;_af9.y+=ifc.y+top-_afc.y;}}else{_af9=_adf.position(_af7,true);_af9.x+=10;_af9.y+=10;}var self=this;var _afd=this._focusManager.get("prevNode");var _afe=this._focusManager.get("curNode");var _aff=!_afe||(dom.isDescendant(_afe,this.domNode))?_afd:_afe;function _b00(){if(self.refocus&&_aff){_aff.focus();}pm.close(self);};pm.open({popup:this,x:_af9.x,y:_af9.y,onExecute:_b00,onCancel:_b00,orient:this.isLeftToRight()?"L":"R"});this.focus();if(!_afa){this.defer(function(){this._cleanUp(true);});}this._onBlur=function(){this.inherited("_onBlur",arguments);pm.close(this);};},destroy:function(){_adc.forEach(this._bindings,function(b){if(b){this.unBindDomNode(b.node);}},this);this.inherited(arguments);}});});},"dijit/layout/ScrollingTabController":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/fx","dojo/_base/lang","dojo/on","dojo/query","dojo/sniff","../registry","dojo/text!./templates/ScrollingTabController.html","dojo/text!./templates/_ScrollingTabControllerButton.html","./TabController","./utils","../_WidgetsInTemplateMixin","../Menu","../MenuItem","../form/Button","../_HasDropDown","dojo/NodeList-dom","../a11yclick"],function(_b01,_b02,_b03,_b04,_b05,fx,lang,on,_b06,has,_b07,_b08,_b09,_b0a,_b0b,_b0c,Menu,_b0d,_b0e,_b0f){var _b10=_b02("dijit.layout.ScrollingTabController",[_b0a,_b0c],{baseClass:"dijitTabController dijitScrollingTabController",templateString:_b08,useMenu:true,useSlider:true,tabStripClass:"",_minScroll:5,_setClassAttr:{node:"containerNode",type:"class"},buildRendering:function(){this.inherited(arguments);var n=this.domNode;this.scrollNode=this.tablistWrapper;this._initButtons();if(!this.tabStripClass){this.tabStripClass="dijitTabContainer"+this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"")+"None";_b03.add(n,"tabStrip-disabled");}_b03.add(this.tablistWrapper,this.tabStripClass);},onStartup:function(){this.inherited(arguments);_b05.set(this.domNode,"visibility","");this._postStartup=true;this.own(on(this.containerNode,"attrmodified-label, attrmodified-iconclass",lang.hitch(this,function(evt){if(this._dim){this.resize(this._dim);}})));},onAddChild:function(page,_b11){this.inherited(arguments);_b05.set(this.containerNode,"width",(_b05.get(this.containerNode,"width")+200)+"px");},onRemoveChild:function(page,_b12){var _b13=this.pane2button(page.id);if(this._selectedTab===_b13.domNode){this._selectedTab=null;}this.inherited(arguments);},_initButtons:function(){this._btnWidth=0;this._buttons=_b06("> .tabStripButton",this.domNode).filter(function(btn){if((this.useMenu&&btn==this._menuBtn.domNode)||(this.useSlider&&(btn==this._rightBtn.domNode||btn==this._leftBtn.domNode))){this._btnWidth+=_b04.getMarginSize(btn).w;return true;}else{_b05.set(btn,"display","none");return false;}},this);},_getTabsWidth:function(){var _b14=this.getChildren();if(_b14.length){var _b15=_b14[this.isLeftToRight()?0:_b14.length-1].domNode,_b16=_b14[this.isLeftToRight()?_b14.length-1:0].domNode;return _b16.offsetLeft+_b16.offsetWidth-_b15.offsetLeft;}else{return 0;}},_enableBtn:function(_b17){var _b18=this._getTabsWidth();_b17=_b17||_b05.get(this.scrollNode,"width");return _b18>0&&_b17<_b18;},resize:function(dim){this._dim=dim;this.scrollNode.style.height="auto";var cb=this._contentBox=_b0b.marginBox2contentBox(this.domNode,{h:0,w:dim.w});cb.h=this.scrollNode.offsetHeight;_b04.setContentSize(this.domNode,cb);var _b19=this._enableBtn(this._contentBox.w);this._buttons.style("display",_b19?"":"none");this._leftBtn.region="left";this._rightBtn.region="right";this._menuBtn.region=this.isLeftToRight()?"right":"left";_b0b.layoutChildren(this.domNode,this._contentBox,[this._menuBtn,this._leftBtn,this._rightBtn,{domNode:this.scrollNode,region:"center"}]);if(this._selectedTab){if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}this.scrollNode.scrollLeft=this._convertToScrollLeft(this._getScrollForSelectedTab());}this._setButtonClass(this._getScroll());this._postResize=true;return {h:this._contentBox.h,w:dim.w};},_getScroll:function(){return (this.isLeftToRight()||has("ie")<8||(has("trident")&&has("quirks"))||has("webkit"))?this.scrollNode.scrollLeft:_b05.get(this.containerNode,"width")-_b05.get(this.scrollNode,"width")+(has("trident")||has("edge")?-1:1)*this.scrollNode.scrollLeft;},_convertToScrollLeft:function(val){if(this.isLeftToRight()||has("ie")<8||(has("trident")&&has("quirks"))||has("webkit")){return val;}else{var _b1a=_b05.get(this.containerNode,"width")-_b05.get(this.scrollNode,"width");return (has("trident")||has("edge")?-1:1)*(val-_b1a);}},onSelectChild:function(page,_b1b){var tab=this.pane2button(page.id);if(!tab){return;}var node=tab.domNode;if(node!=this._selectedTab){this._selectedTab=node;if(this._postResize){var sl=this._getScroll();if(sl>node.offsetLeft||sl+_b05.get(this.scrollNode,"width")<node.offsetLeft+_b05.get(node,"width")){var anim=this.createSmoothScroll();if(_b1b){anim.onEnd=function(){tab.focus();};}anim.play();}else{if(_b1b){tab.focus();}}}}this.inherited(arguments);},_getScrollBounds:function(){var _b1c=this.getChildren(),_b1d=_b05.get(this.scrollNode,"width"),_b1e=_b05.get(this.containerNode,"width"),_b1f=_b1e-_b1d,_b20=this._getTabsWidth();if(_b1c.length&&_b20>_b1d){return {min:this.isLeftToRight()?0:_b1c[_b1c.length-1].domNode.offsetLeft,max:this.isLeftToRight()?(_b1c[_b1c.length-1].domNode.offsetLeft+_b1c[_b1c.length-1].domNode.offsetWidth)-_b1d:_b1f};}else{var _b21=this.isLeftToRight()?0:_b1f;return {min:_b21,max:_b21};}},_getScrollForSelectedTab:function(){var w=this.scrollNode,n=this._selectedTab,_b22=_b05.get(this.scrollNode,"width"),_b23=this._getScrollBounds();var pos=(n.offsetLeft+_b05.get(n,"width")/2)-_b22/2;pos=Math.min(Math.max(pos,_b23.min),_b23.max);return pos;},createSmoothScroll:function(x){if(arguments.length>0){var _b24=this._getScrollBounds();x=Math.min(Math.max(x,_b24.min),_b24.max);}else{x=this._getScrollForSelectedTab();}if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}var self=this,w=this.scrollNode,anim=new fx.Animation({beforeBegin:function(){if(this.curve){delete this.curve;}var oldS=w.scrollLeft,newS=self._convertToScrollLeft(x);anim.curve=new fx._Line(oldS,newS);},onAnimate:function(val){w.scrollLeft=val;}});this._anim=anim;this._setButtonClass(x);return anim;},_getBtnNode:function(e){var n=e.target;while(n&&!_b03.contains(n,"tabStripButton")){n=n.parentNode;}return n;},doSlideRight:function(e){this.doSlide(1,this._getBtnNode(e));},doSlideLeft:function(e){this.doSlide(-1,this._getBtnNode(e));},doSlide:function(_b25,node){if(node&&_b03.contains(node,"dijitTabDisabled")){return;}var _b26=_b05.get(this.scrollNode,"width");var d=(_b26*0.75)*_b25;var to=this._getScroll()+d;this._setButtonClass(to);this.createSmoothScroll(to).play();},_setButtonClass:function(_b27){var _b28=this._getScrollBounds();this._leftBtn.set("disabled",_b27<=_b28.min);this._rightBtn.set("disabled",_b27>=_b28.max);}});var _b29=_b02("dijit.layout._ScrollingTabControllerButtonMixin",null,{baseClass:"dijitTab tabStripButton",templateString:_b09,tabIndex:"",isFocusable:function(){return false;}});_b02("dijit.layout._ScrollingTabControllerButton",[_b0e,_b29]);_b02("dijit.layout._ScrollingTabControllerMenuButton",[_b0e,_b0f,_b29],{containerId:"",tabIndex:"-1",isLoaded:function(){return false;},loadDropDown:function(_b2a){this.dropDown=new Menu({id:this.containerId+"_menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir});var _b2b=_b07.byId(this.containerId);_b01.forEach(_b2b.getChildren(),function(page){var _b2c=new _b0d({id:page.id+"_stcMi",label:page.title,iconClass:page.iconClass,disabled:page.disabled,ownerDocument:this.ownerDocument,dir:page.dir,lang:page.lang,textDir:page.textDir||_b2b.textDir,onClick:function(){_b2b.selectChild(page);}});this.dropDown.addChild(_b2c);},this);_b2a();},closeDropDown:function(_b2d){this.inherited(arguments);if(this.dropDown){this._popupStateNode.removeAttribute("aria-owns");this.dropDown.destroyRecursive();delete this.dropDown;}}});return _b10;});},"dijit/ProgressBar":function(){define(["require","dojo/_base/declare","dojo/dom-class","dojo/_base/lang","dojo/number","./_Widget","./_TemplatedMixin","dojo/text!./templates/ProgressBar.html"],function(_b2e,_b2f,_b30,lang,_b31,_b32,_b33,_b34){return _b2f("dijit.ProgressBar",[_b32,_b33],{progress:"0",value:"",maximum:100,places:0,indeterminate:false,label:"",name:"",templateString:_b34,_indeterminateHighContrastImagePath:_b2e.toUrl("./themes/a11y/indeterminate_progress.gif"),postMixInProperties:function(){this.inherited(arguments);if(!(this.params&&"value" in this.params)){this.value=this.indeterminate?Infinity:this.progress;}},buildRendering:function(){this.inherited(arguments);this.indeterminateHighContrastImage.setAttribute("src",this._indeterminateHighContrastImagePath.toString());this.update();},_setDirAttr:function(val){var rtl=val.toLowerCase()=="rtl";_b30.toggle(this.domNode,"dijitProgressBarRtl",rtl);_b30.toggle(this.domNode,"dijitProgressBarIndeterminateRtl",this.indeterminate&&rtl);this.inherited(arguments);},update:function(_b35){lang.mixin(this,_b35||{});var tip=this.internalProgress,ap=this.domNode;var _b36=1;if(this.indeterminate){ap.removeAttribute("aria-valuenow");}else{if(String(this.progress).indexOf("%")!=-1){_b36=Math.min(parseFloat(this.progress)/100,1);this.progress=_b36*this.maximum;}else{this.progress=Math.min(this.progress,this.maximum);_b36=this.maximum?this.progress/this.maximum:0;}ap.setAttribute("aria-valuenow",this.progress);}ap.setAttribute("aria-labelledby",this.labelNode.id);ap.setAttribute("aria-valuemin",0);ap.setAttribute("aria-valuemax",this.maximum);this.labelNode.innerHTML=this.report(_b36);_b30.toggle(this.domNode,"dijitProgressBarIndeterminate",this.indeterminate);_b30.toggle(this.domNode,"dijitProgressBarIndeterminateRtl",this.indeterminate&&!this.isLeftToRight());tip.style.width=(_b36*100)+"%";this.onChange();},_setValueAttr:function(v){this._set("value",v);if(v==Infinity){this.update({indeterminate:true});}else{this.update({indeterminate:false,progress:v});}},_setLabelAttr:function(_b37){this._set("label",_b37);this.update();},_setIndeterminateAttr:function(_b38){this._set("indeterminate",_b38);this.update();},report:function(_b39){return this.label?this.label:(this.indeterminate?"&#160;":_b31.format(_b39,{type:"percent",places:this.places,locale:this.lang}));},onChange:function(){}});});},"dojo/number":function(){define(["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(lang,i18n,_b3a,_b3b,_b3c){var _b3d={};lang.setObject("dojo.number",_b3d);_b3d.format=function(_b3e,_b3f){_b3f=lang.mixin({},_b3f||{});var _b40=i18n.normalizeLocale(_b3f.locale),_b41=i18n.getLocalization("dojo.cldr","number",_b40);_b3f.customs=_b41;var _b42=_b3f.pattern||_b41[(_b3f.type||"decimal")+"Format"];if(isNaN(_b3e)||Math.abs(_b3e)==Infinity){return null;}return _b3d._applyPattern(_b3e,_b42,_b3f);};_b3d._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;_b3d._applyPattern=function(_b43,_b44,_b45){_b45=_b45||{};var _b46=_b45.customs.group,_b47=_b45.customs.decimal,_b48=_b44.split(";"),_b49=_b48[0];_b44=_b48[(_b43<0)?1:0]||("-"+_b49);if(_b44.indexOf("%")!=-1){_b43*=100;}else{if(_b44.indexOf("‰")!=-1){_b43*=1000;}else{if(_b44.indexOf("¤")!=-1){_b46=_b45.customs.currencyGroup||_b46;_b47=_b45.customs.currencyDecimal||_b47;_b44=_b44.replace(/([\s\xa0\u202f]*)(\u00a4{1,3})([\s\xa0\u202f]*)/,function(_b4a,_b4b,_b4c,_b4d){var prop=["symbol","currency","displayName"][_b4c.length-1],_b4e=_b45[prop]||_b45.currency||"";if(!_b4e){return "";}return _b4b+_b4e+_b4d;});}else{if(_b44.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _b4f=_b3d._numberPatternRE;var _b50=_b49.match(_b4f);if(!_b50){throw new Error("unable to find a number expression in pattern: "+_b44);}if(_b45.fractional===false){_b45.places=0;}return _b44.replace(_b4f,_b3d._formatAbsolute(_b43,_b50[0],{decimal:_b47,group:_b46,places:_b45.places,round:_b45.round}));};_b3d.round=function(_b51,_b52,_b53){var _b54=10/(_b53||10);return (_b54*+_b51).toFixed(_b52)/_b54;};if((0.9).toFixed()==0){var _b55=_b3d.round;_b3d.round=function(v,p,m){var d=Math.pow(10,-p||0),a=Math.abs(v);if(!v||a>=d){d=0;}else{a/=d;if(a<0.5||a>=0.95){d=0;}}return _b55(v,p,m)+(v>0?d:-d);};}_b3d._formatAbsolute=function(_b56,_b57,_b58){_b58=_b58||{};if(_b58.places===true){_b58.places=0;}if(_b58.places===Infinity){_b58.places=6;}var _b59=_b57.split("."),_b5a=typeof _b58.places=="string"&&_b58.places.indexOf(","),_b5b=_b58.places;if(_b5a){_b5b=_b58.places.substring(_b5a+1);}else{if(!(_b5b>=0)){_b5b=(_b59[1]||[]).length;}}if(!(_b58.round<0)){_b56=_b3d.round(_b56,_b5b,_b58.round);}var _b5c=String(Math.abs(_b56)).split("."),_b5d=_b5c[1]||"";if(_b59[1]||_b58.places){if(_b5a){_b58.places=_b58.places.substring(0,_b5a);}var pad=_b58.places!==undefined?_b58.places:(_b59[1]&&_b59[1].lastIndexOf("0")+1);if(pad>_b5d.length){_b5c[1]=_b3b.pad(_b5d,pad,"0",true);}if(_b5b<_b5d.length){_b5c[1]=_b5d.substr(0,_b5b);}}else{if(_b5c[1]){_b5c.pop();}}var _b5e=_b59[0].replace(",","");pad=_b5e.indexOf("0");if(pad!=-1){pad=_b5e.length-pad;if(pad>_b5c[0].length){_b5c[0]=_b3b.pad(_b5c[0],pad);}if(_b5e.indexOf("#")==-1){_b5c[0]=_b5c[0].substr(_b5c[0].length-pad);}}var _b5f=_b59[0].lastIndexOf(","),_b60,_b61;if(_b5f!=-1){_b60=_b59[0].length-_b5f-1;var _b62=_b59[0].substr(0,_b5f);_b5f=_b62.lastIndexOf(",");if(_b5f!=-1){_b61=_b62.length-_b5f-1;}}var _b63=[];for(var _b64=_b5c[0];_b64;){var off=_b64.length-_b60;_b63.push((off>0)?_b64.substr(off):_b64);_b64=(off>0)?_b64.slice(0,off):"";if(_b61){_b60=_b61;_b61=undefined;}}_b5c[0]=_b63.reverse().join(_b58.group||",");return _b5c.join(_b58.decimal||".");};_b3d.regexp=function(_b65){return _b3d._parseInfo(_b65).regexp;};_b3d._parseInfo=function(_b66){_b66=_b66||{};var _b67=i18n.normalizeLocale(_b66.locale),_b68=i18n.getLocalization("dojo.cldr","number",_b67),_b69=_b66.pattern||_b68[(_b66.type||"decimal")+"Format"],_b6a=_b68.group,_b6b=_b68.decimal,_b6c=1;if(_b69.indexOf("%")!=-1){_b6c/=100;}else{if(_b69.indexOf("‰")!=-1){_b6c/=1000;}else{var _b6d=_b69.indexOf("¤")!=-1;if(_b6d){_b6a=_b68.currencyGroup||_b6a;_b6b=_b68.currencyDecimal||_b6b;}}}var _b6e=_b69.split(";");if(_b6e.length==1){_b6e.push("-"+_b6e[0]);}var re=_b3c.buildGroupRE(_b6e,function(_b6f){_b6f="(?:"+_b3c.escapeString(_b6f,".")+")";return _b6f.replace(_b3d._numberPatternRE,function(_b70){var _b71={signed:false,separator:_b66.strict?_b6a:[_b6a,""],fractional:_b66.fractional,decimal:_b6b,exponent:false},_b72=_b70.split("."),_b73=_b66.places;if(_b72.length==1&&_b6c!=1){_b72[1]="###";}if(_b72.length==1||_b73===0){_b71.fractional=false;}else{if(_b73===undefined){_b73=_b66.pattern?_b72[1].lastIndexOf("0")+1:Infinity;}if(_b73&&_b66.fractional==undefined){_b71.fractional=true;}if(!_b66.places&&(_b73<_b72[1].length)){_b73+=","+_b72[1].length;}_b71.places=_b73;}var _b74=_b72[0].split(",");if(_b74.length>1){_b71.groupSize=_b74.pop().length;if(_b74.length>1){_b71.groupSize2=_b74.pop().length;}}return "("+_b3d._realNumberRegexp(_b71)+")";});},true);if(_b6d){re=re.replace(/([\s\xa0\u202f]*)(\u00a4{1,3})([\s\xa0\u202f]*)/g,function(_b75,_b76,_b77,_b78){var prop=["symbol","currency","displayName"][_b77.length-1],_b79=_b3c.escapeString(_b66[prop]||_b66.currency||"");if(!_b79){return "";}_b76=_b76?"[\\s\\xa0\\u202f]":"";_b78=_b78?"[\\s\\xa0\\u202f]":"";if(!_b66.strict){if(_b76){_b76+="*";}if(_b78){_b78+="*";}return "(?:"+_b76+_b79+_b78+")?";}return _b76+_b79+_b78;});}return {regexp:re.replace(/[\xa0\u202f ]/g,"[\\s\\xa0\\u202f]"),group:_b6a,decimal:_b6b,factor:_b6c};};_b3d.parse=function(_b7a,_b7b){var info=_b3d._parseInfo(_b7b),_b7c=(new RegExp("^"+info.regexp+"$")).exec(_b7a);if(!_b7c){return NaN;}var _b7d=_b7c[1];if(!_b7c[1]){if(!_b7c[2]){return NaN;}_b7d=_b7c[2];info.factor*=-1;}_b7d=_b7d.replace(new RegExp("["+info.group+"\\s\\xa0\\u202f"+"]","g"),"").replace(info.decimal,".");return _b7d*info.factor;};_b3d._realNumberRegexp=function(_b7e){_b7e=_b7e||{};if(!("places" in _b7e)){_b7e.places=Infinity;}if(typeof _b7e.decimal!="string"){_b7e.decimal=".";}if(!("fractional" in _b7e)||/^0/.test(_b7e.places)){_b7e.fractional=[true,false];}if(!("exponent" in _b7e)){_b7e.exponent=[true,false];}if(!("eSigned" in _b7e)){_b7e.eSigned=[true,false];}var _b7f=_b3d._integerRegexp(_b7e),_b80=_b3c.buildGroupRE(_b7e.fractional,function(q){var re="";if(q&&(_b7e.places!==0)){re="\\"+_b7e.decimal;if(_b7e.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_b7e.places+"}";}}return re;},true);var _b81=_b3c.buildGroupRE(_b7e.exponent,function(q){if(q){return "([eE]"+_b3d._integerRegexp({signed:_b7e.eSigned})+")";}return "";});var _b82=_b7f+_b80;if(_b80){_b82="(?:(?:"+_b82+")|(?:"+_b80+"))";}return _b82+_b81;};_b3d._integerRegexp=function(_b83){_b83=_b83||{};if(!("signed" in _b83)){_b83.signed=[true,false];}if(!("separator" in _b83)){_b83.separator="";}else{if(!("groupSize" in _b83)){_b83.groupSize=3;}}var _b84=_b3c.buildGroupRE(_b83.signed,function(q){return q?"[-+]":"";},true);var _b85=_b3c.buildGroupRE(_b83.separator,function(sep){if(!sep){return "(?:\\d+)";}sep=_b3c.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}else{if(sep==" "){sep="\\s\\u202f";}}}var grp=_b83.groupSize,grp2=_b83.groupSize2;if(grp2){var _b86="(?:0|[1-9]\\d{0,"+(grp2-1)+"}(?:["+sep+"]\\d{"+grp2+"})*["+sep+"]\\d{"+grp+"})";return ((grp-grp2)>0)?"(?:"+_b86+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_b86;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _b84+_b85;};return _b3d;});},"dijit/Toolbar":function(){define(["require","dojo/_base/declare","dojo/has","dojo/keys","dojo/ready","./_Widget","./_KeyNavContainer","./_TemplatedMixin"],function(_b87,_b88,has,keys,_b89,_b8a,_b8b,_b8c){if(has("dijit-legacy-requires")){_b89(0,function(){var _b8d=["dijit/ToolbarSeparator"];_b87(_b8d);});}return _b88("dijit.Toolbar",[_b8a,_b8c,_b8b],{templateString:"<div class=\"dijit\" role=\"toolbar\" tabIndex=\"${tabIndex}\" data-dojo-attach-point=\"containerNode\">"+"</div>",baseClass:"dijitToolbar",_onLeftArrow:function(){this.focusPrev();},_onRightArrow:function(){this.focusNext();}});});},"dijit/TooltipDialog":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","./focus","./layout/ContentPane","./_DialogMixin","./form/_FormMixin","./_TemplatedMixin","dojo/text!./templates/TooltipDialog.html","./main"],function(_b8e,_b8f,has,keys,lang,on,_b90,_b91,_b92,_b93,_b94,_b95,_b96){var _b97=_b8e("dijit.TooltipDialog",[_b91,_b94,_b93,_b92],{title:"",doLayout:false,autofocus:true,baseClass:"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:_b95,_setTitleAttr:"containerNode",postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKey")));},orient:function(node,_b98,_b99){var newC={"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft","BR-TL":"dijitTooltipBelow dijitTooltipABLeft","BL-TR":"dijitTooltipBelow dijitTooltipABRight","TL-BR":"dijitTooltipAbove dijitTooltipABRight","TR-BL":"dijitTooltipAbove dijitTooltipABLeft"}[_b98+"-"+_b99];_b8f.replace(this.domNode,newC,this._currentOrientClass||"");this._currentOrientClass=newC;},focus:function(){this._getFocusItems();_b90.focus(this._firstFocusItem);},onOpen:function(pos){this.orient(this.domNode,pos.aroundCorner,pos.corner);var _b9a=pos.aroundNodePos;if(pos.corner.charAt(0)=="M"&&pos.aroundCorner.charAt(0)=="M"){this.connectorNode.style.top=_b9a.y+((_b9a.h-this.connectorNode.offsetHeight)>>1)-pos.y+"px";this.connectorNode.style.left="";}else{if(pos.corner.charAt(1)=="M"&&pos.aroundCorner.charAt(1)=="M"){this.connectorNode.style.left=_b9a.x+((_b9a.w-this.connectorNode.offsetWidth)>>1)-pos.x+"px";}}this._onShow();},onClose:function(){this.onHide();},_onKey:function(evt){if(evt.keyCode==keys.ESCAPE){this.defer("onCancel");evt.stopPropagation();evt.preventDefault();}else{if(evt.keyCode==keys.TAB){var node=evt.target;this._getFocusItems();if(this._firstFocusItem==this._lastFocusItem){evt.stopPropagation();evt.preventDefault();}else{if(node==this._firstFocusItem&&evt.shiftKey){_b90.focus(this._lastFocusItem);evt.stopPropagation();evt.preventDefault();}else{if(node==this._lastFocusItem&&!evt.shiftKey){_b90.focus(this._firstFocusItem);evt.stopPropagation();evt.preventDefault();}else{evt.stopPropagation();}}}}}}});if(has("dojo-bidi")){_b97.extend({_setTitleAttr:function(_b9b){this.containerNode.title=(this.textDir&&this.enforceTextDirWithUcc)?this.enforceTextDirWithUcc(null,_b9b):_b9b;this._set("title",_b9b);},_setTextDirAttr:function(_b9c){if(!this._created||this.textDir!=_b9c){this._set("textDir",_b9c);if(this.textDir&&this.title){this.containerNode.title=this.enforceTextDirWithUcc(null,this.title);}}}});}return _b97;});},"dijit/Tree":function(){define(["dojo/_base/array","dojo/aspect","dojo/cookie","dojo/_base/declare","dojo/Deferred","dojo/promise/all","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/errors/create","dojo/fx","dojo/has","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","dojo/touch","dojo/when","./a11yclick","./focus","./registry","./_base/manager","./_Widget","./_TemplatedMixin","./_Container","./_Contained","./_CssStateMixin","./_KeyNavMixin","dojo/text!./templates/TreeNode.html","dojo/text!./templates/Tree.html","./tree/TreeStoreModel","./tree/ForestStoreModel","./tree/_dndSelector","dojo/query!css2"],function(_b9d,_b9e,_b9f,_ba0,_ba1,all,dom,_ba2,_ba3,_ba4,_ba5,_ba6,has,_ba7,keys,lang,on,_ba8,_ba9,when,_baa,_bab,_bac,_bad,_bae,_baf,_bb0,_bb1,_bb2,_bb3,_bb4,_bb5,_bb6,_bb7,_bb8){function _bb9(d){return lang.delegate(d.promise||d,{addCallback:function(_bba){this.then(_bba);},addErrback:function(_bbb){this.otherwise(_bbb);}});};var _bbc=_ba0("dijit._TreeNode",[_bae,_baf,_bb0,_bb1,_bb2],{item:null,isTreeNode:true,label:"",_setLabelAttr:function(val){this.labelNode[this.labelType=="html"?"innerHTML":"innerText" in this.labelNode?"innerText":"textContent"]=val;this._set("label",val);if(has("dojo-bidi")){this.applyTextDir(this.labelNode);}},labelType:"text",isExpandable:null,isExpanded:false,state:"NotLoaded",templateString:_bb4,baseClass:"dijitTreeNode",cssStateNodes:{rowNode:"dijitTreeRow"},_setTooltipAttr:{node:"rowNode",type:"attribute",attribute:"title"},buildRendering:function(){this.inherited(arguments);this._setExpando();this._updateItemClasses(this.item);if(this.isExpandable){this.labelNode.setAttribute("aria-expanded",this.isExpanded);}this.setSelected(false);},_setIndentAttr:function(_bbd){var _bbe=(Math.max(_bbd,0)*this.tree._nodePixelIndent)+"px";_ba4.set(this.domNode,"backgroundPosition",_bbe+" 0px");_ba4.set(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_bbe);_b9d.forEach(this.getChildren(),function(_bbf){_bbf.set("indent",_bbd+1);});this._set("indent",_bbd);},markProcessing:function(){this.state="Loading";this._setExpando(true);},unmarkProcessing:function(){this._setExpando(false);},_updateItemClasses:function(item){var tree=this.tree,_bc0=tree.model;if(tree._v10Compat&&item===_bc0.root){item=null;}this._applyClassAndStyle(item,"icon","Icon");this._applyClassAndStyle(item,"label","Label");this._applyClassAndStyle(item,"row","Row");this.tree._startPaint(true);},_applyClassAndStyle:function(item,_bc1,_bc2){var _bc3="_"+_bc1+"Class";var _bc4=_bc1+"Node";var _bc5=this[_bc3];this[_bc3]=this.tree["get"+_bc2+"Class"](item,this.isExpanded);_ba2.replace(this[_bc4],this[_bc3]||"",_bc5||"");_ba4.set(this[_bc4],this.tree["get"+_bc2+"Style"](item,this.isExpanded)||{});},_updateLayout:function(){var _bc6=this.getParent(),_bc7=!_bc6||!_bc6.rowNode||_bc6.rowNode.style.display=="none";_ba2.toggle(this.domNode,"dijitTreeIsRoot",_bc7);_ba2.toggle(this.domNode,"dijitTreeIsLast",!_bc7&&!this.getNextSibling());},_setExpando:function(_bc8){var _bc9=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_bca=["*","-","+","*"],idx=_bc8?0:(this.isExpandable?(this.isExpanded?1:2):3);_ba2.replace(this.expandoNode,_bc9[idx],_bc9);this.expandoNodeText.innerHTML=_bca[idx];},expand:function(){if(this._expandDeferred){return _bb9(this._expandDeferred);}if(this._collapseDeferred){this._collapseDeferred.cancel();delete this._collapseDeferred;}this.isExpanded=true;this.labelNode.setAttribute("aria-expanded","true");if(this.tree.showRoot||this!==this.tree.rootNode){this.containerNode.setAttribute("role","group");}_ba2.add(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","true");}var _bcb=_ba6.wipeIn({node:this.containerNode,duration:_bad.defaultDuration});var def=(this._expandDeferred=new _ba1(function(){_bcb.stop();}));_b9e.after(_bcb,"onEnd",function(){def.resolve(true);},true);_bcb.play();return _bb9(def);},collapse:function(){if(this._collapseDeferred){return _bb9(this._collapseDeferred);}if(this._expandDeferred){this._expandDeferred.cancel();delete this._expandDeferred;}this.isExpanded=false;this.labelNode.setAttribute("aria-expanded","false");if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","false");}_ba2.remove(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);var _bcc=_ba6.wipeOut({node:this.containerNode,duration:_bad.defaultDuration});var def=(this._collapseDeferred=new _ba1(function(){_bcc.stop();}));_b9e.after(_bcc,"onEnd",function(){def.resolve(true);},true);_bcc.play();return _bb9(def);},indent:0,setChildItems:function(_bcd){var tree=this.tree,_bce=tree.model,defs=[];var _bcf=tree.focusedChild;var _bd0=this.getChildren();_b9d.forEach(_bd0,function(_bd1){_bb0.prototype.removeChild.call(this,_bd1);},this);this.defer(function(){_b9d.forEach(_bd0,function(node){if(!node._destroyed&&!node.getParent()){tree.dndController.removeTreeNode(node);function _bd2(node){var id=_bce.getIdentity(node.item),ary=tree._itemNodesMap[id];if(ary.length==1){delete tree._itemNodesMap[id];}else{var _bd3=_b9d.indexOf(ary,node);if(_bd3!=-1){ary.splice(_bd3,1);}}_b9d.forEach(node.getChildren(),_bd2);};_bd2(node);if(tree.persist){var _bd4=_b9d.map(node.getTreePath(),function(item){return tree.model.getIdentity(item);}).join("/");for(var path in tree._openedNodes){if(path.substr(0,_bd4.length)==_bd4){delete tree._openedNodes[path];}}tree._saveExpandedNodes();}if(tree.lastFocusedChild&&!dom.isDescendant(tree.lastFocusedChild.domNode,tree.domNode)){delete tree.lastFocusedChild;}if(_bcf&&!dom.isDescendant(_bcf.domNode,tree.domNode)){tree.focus();}node.destroyRecursive();}});});this.state="Loaded";if(_bcd&&_bcd.length>0){this.isExpandable=true;_b9d.forEach(_bcd,function(item){var id=_bce.getIdentity(item),_bd5=tree._itemNodesMap[id],node;if(_bd5){for(var i=0;i<_bd5.length;i++){if(_bd5[i]&&!_bd5[i].getParent()){node=_bd5[i];node.set("indent",this.indent+1);break;}}}if(!node){node=this.tree._createTreeNode({item:item,tree:tree,isExpandable:_bce.mayHaveChildren(item),label:tree.getLabel(item),labelType:(tree.model&&tree.model.labelType)||"text",tooltip:tree.getTooltip(item),ownerDocument:tree.ownerDocument,dir:tree.dir,lang:tree.lang,textDir:tree.textDir,indent:this.indent+1});if(_bd5){_bd5.push(node);}else{tree._itemNodesMap[id]=[node];}}this.addChild(node);if(this.tree.autoExpand||this.tree._state(node)){defs.push(tree._expandNode(node));}},this);_b9d.forEach(this.getChildren(),function(_bd6){_bd6._updateLayout();});}else{this.isExpandable=false;}if(this._setExpando){this._setExpando(false);}this._updateItemClasses(this.item);var def=all(defs);this.tree._startPaint(def);return _bb9(def);},getTreePath:function(){var node=this;var path=[];while(node&&node!==this.tree.rootNode){path.unshift(node.item);node=node.getParent();}path.unshift(this.tree.rootNode.item);return path;},getIdentity:function(){return this.tree.model.getIdentity(this.item);},removeChild:function(node){this.inherited(arguments);var _bd7=this.getChildren();if(_bd7.length==0){this.isExpandable=false;this.collapse();}_b9d.forEach(_bd7,function(_bd8){_bd8._updateLayout();});},makeExpandable:function(){this.isExpandable=true;this._setExpando(false);},setSelected:function(_bd9){this.labelNode.setAttribute("aria-selected",_bd9?"true":"false");_ba2.toggle(this.rowNode,"dijitTreeRowSelected",_bd9);},focus:function(){_bab.focus(this.focusNode);}});if(has("dojo-bidi")){_bbc.extend({_setTextDirAttr:function(_bda){if(_bda&&((this.textDir!=_bda)||!this._created)){this._set("textDir",_bda);this.applyTextDir(this.labelNode);_b9d.forEach(this.getChildren(),function(_bdb){_bdb.set("textDir",_bda);},this);}}});}var Tree=_ba0("dijit.Tree",[_bae,_bb3,_baf,_bb2],{baseClass:"dijitTree",store:null,model:null,query:null,label:"",showRoot:true,childrenAttr:["children"],paths:[],path:[],selectedItems:null,selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:_bb5,persist:false,autoExpand:false,dndController:_bb8,dndParams:["onDndDrop","itemCreator","onDndCancel","checkAcceptance","checkItemAcceptance","dragThreshold","betweenThreshold"],onDndDrop:null,itemCreator:null,onDndCancel:null,checkAcceptance:null,checkItemAcceptance:null,dragThreshold:5,betweenThreshold:0,_nodePixelIndent:19,_publish:function(_bdc,_bdd){_ba8.publish(this.id,lang.mixin({tree:this,event:_bdc},_bdd||{}));},postMixInProperties:function(){this.tree=this;if(this.autoExpand){this.persist=false;}this._itemNodesMap={};if(!this.cookieName&&this.id){this.cookieName=this.id+"SaveStateCookie";}this.expandChildrenDeferred=new _ba1();this.pendingCommandsPromise=this.expandChildrenDeferred.promise;this.inherited(arguments);},postCreate:function(){this._initState();var self=this;this.own(on(this.containerNode,on.selector(".dijitTreeNode",_ba9.enter),function(evt){self._onNodeMouseEnter(_bac.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeNode",_ba9.leave),function(evt){self._onNodeMouseLeave(_bac.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_baa.press),function(evt){self._onNodePress(_bac.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_baa),function(evt){self._onClick(_bac.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow","dblclick"),function(evt){self._onDblClick(_bac.getEnclosingWidget(this),evt);}));if(!this.model){this._store2model();}this.own(_b9e.after(this.model,"onChange",lang.hitch(this,"_onItemChange"),true),_b9e.after(this.model,"onChildrenChange",lang.hitch(this,"_onItemChildrenChange"),true),_b9e.after(this.model,"onDelete",lang.hitch(this,"_onItemDelete"),true));this.inherited(arguments);if(this.dndController){if(lang.isString(this.dndController)){this.dndController=lang.getObject(this.dndController);}var _bde={};for(var i=0;i<this.dndParams.length;i++){if(this[this.dndParams[i]]){_bde[this.dndParams[i]]=this[this.dndParams[i]];}}this.dndController=new this.dndController(this,_bde);}this._load();this.onLoadDeferred=_bb9(this.pendingCommandsPromise);this.onLoadDeferred.then(lang.hitch(this,"onLoad"));},_store2model:function(){this._v10Compat=true;_ba7.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");var _bdf={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};if(this.params.mayHaveChildren){_bdf.mayHaveChildren=lang.hitch(this,"mayHaveChildren");}if(this.params.getItemChildren){_bdf.getChildren=lang.hitch(this,function(item,_be0,_be1){this.getItemChildren((this._v10Compat&&item===this.model.root)?null:item,_be0,_be1);});}this.model=new _bb7(_bdf);this.showRoot=Boolean(this.label);},onLoad:function(){},_load:function(){this.model.getRoot(lang.hitch(this,function(item){var rn=(this.rootNode=this.tree._createTreeNode({item:item,tree:this,isExpandable:true,label:this.label||this.getLabel(item),labelType:this.model.labelType||"text",textDir:this.textDir,indent:this.showRoot?0:-1}));if(!this.showRoot){rn.rowNode.style.display="none";this.domNode.setAttribute("role","presentation");this.domNode.removeAttribute("aria-expanded");this.domNode.removeAttribute("aria-multiselectable");if(this["aria-label"]){rn.containerNode.setAttribute("aria-label",this["aria-label"]);this.domNode.removeAttribute("aria-label");}else{if(this["aria-labelledby"]){rn.containerNode.setAttribute("aria-labelledby",this["aria-labelledby"]);this.domNode.removeAttribute("aria-labelledby");}}rn.labelNode.setAttribute("role","presentation");rn.labelNode.removeAttribute("aria-selected");rn.containerNode.setAttribute("role","tree");rn.containerNode.setAttribute("aria-expanded","true");rn.containerNode.setAttribute("aria-multiselectable",!this.dndController.singular);}else{this.domNode.setAttribute("aria-multiselectable",!this.dndController.singular);this.rootLoadingIndicator.style.display="none";}this.containerNode.appendChild(rn.domNode);var _be2=this.model.getIdentity(item);if(this._itemNodesMap[_be2]){this._itemNodesMap[_be2].push(rn);}else{this._itemNodesMap[_be2]=[rn];}rn._updateLayout();this._expandNode(rn).then(lang.hitch(this,function(){if(!this._destroyed){this.rootLoadingIndicator.style.display="none";this.expandChildrenDeferred.resolve(true);}}));}),lang.hitch(this,function(err){console.error(this,": error loading root: ",err);}));},getNodesByItem:function(item){if(!item){return [];}var _be3=lang.isString(item)?item:this.model.getIdentity(item);return [].concat(this._itemNodesMap[_be3]);},_setSelectedItemAttr:function(item){this.set("selectedItems",[item]);},_setSelectedItemsAttr:function(_be4){var tree=this;return this.pendingCommandsPromise=this.pendingCommandsPromise.always(lang.hitch(this,function(){var _be5=_b9d.map(_be4,function(item){return (!item||lang.isString(item))?item:tree.model.getIdentity(item);});var _be6=[];_b9d.forEach(_be5,function(id){_be6=_be6.concat(tree._itemNodesMap[id]||[]);});this.set("selectedNodes",_be6);}));},_setPathAttr:function(path){if(path.length){return _bb9(this.set("paths",[path]).then(function(_be7){return _be7[0];}));}else{return _bb9(this.set("paths",[]).then(function(_be8){return _be8[0];}));}},_setPathsAttr:function(_be9){var tree=this;function _bea(path,_beb){var _bec=path.shift();var _bed=_b9d.filter(_beb,function(node){return node.getIdentity()==_bec;})[0];if(!!_bed){if(path.length){return tree._expandNode(_bed).then(function(){return _bea(path,_bed.getChildren());});}else{return _bed;}}else{throw new Tree.PathError("Could not expand path at "+_bec);}};return _bb9(this.pendingCommandsPromise=this.pendingCommandsPromise.always(function(){return all(_b9d.map(_be9,function(path){path=_b9d.map(path,function(item){return item&&lang.isObject(item)?tree.model.getIdentity(item):item;});if(path.length){return _bea(path,[tree.rootNode]);}else{throw new Tree.PathError("Empty path");}}));}).then(function setNodes(_bee){tree.set("selectedNodes",_bee);return tree.paths;}));},_setSelectedNodeAttr:function(node){this.set("selectedNodes",[node]);},_setSelectedNodesAttr:function(_bef){this.dndController.setSelection(_bef);},expandAll:function(){var _bf0=this;function _bf1(node){return _bf0._expandNode(node).then(function(){var _bf2=_b9d.filter(node.getChildren()||[],function(node){return node.isExpandable;});return all(_b9d.map(_bf2,_bf1));});};return _bb9(_bf1(this.rootNode));},collapseAll:function(){var _bf3=this;function _bf4(node){var _bf5=_b9d.filter(node.getChildren()||[],function(node){return node.isExpandable;}),defs=all(_b9d.map(_bf5,_bf4));if(!node.isExpanded||(node==_bf3.rootNode&&!_bf3.showRoot)){return defs;}else{return defs.then(function(){return _bf3._collapseNode(node);});}};return _bb9(_bf4(this.rootNode));},mayHaveChildren:function(){},getItemChildren:function(){},getLabel:function(item){return this.model.getLabel(item);},getIconClass:function(item,_bf6){return (!item||this.model.mayHaveChildren(item))?(_bf6?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";},getLabelClass:function(){},getRowClass:function(){},getIconStyle:function(){},getLabelStyle:function(){},getRowStyle:function(){},getTooltip:function(){return "";},_onDownArrow:function(evt,node){var _bf7=this._getNext(node);if(_bf7&&_bf7.isTreeNode){this.focusNode(_bf7);}},_onUpArrow:function(evt,node){var _bf8=node.getPreviousSibling();if(_bf8){node=_bf8;while(node.isExpandable&&node.isExpanded&&node.hasChildren()){var _bf9=node.getChildren();node=_bf9[_bf9.length-1];}}else{var _bfa=node.getParent();if(!(!this.showRoot&&_bfa===this.rootNode)){node=_bfa;}}if(node&&node.isTreeNode){this.focusNode(node);}},_onRightArrow:function(evt,node){if(node.isExpandable&&!node.isExpanded){this._expandNode(node);}else{if(node.hasChildren()){node=node.getChildren()[0];if(node&&node.isTreeNode){this.focusNode(node);}}}},_onLeftArrow:function(evt,node){if(node.isExpandable&&node.isExpanded){this._collapseNode(node);}else{var _bfb=node.getParent();if(_bfb&&_bfb.isTreeNode&&!(!this.showRoot&&_bfb===this.rootNode)){this.focusNode(_bfb);}}},focusLastChild:function(){var node=this._getLast();if(node&&node.isTreeNode){this.focusNode(node);}},_getFirst:function(){return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];},_getLast:function(){var node=this.rootNode;while(node.isExpanded){var c=node.getChildren();if(!c.length){break;}node=c[c.length-1];}return node;},_getNext:function(node){if(node.isExpandable&&node.isExpanded&&node.hasChildren()){return node.getChildren()[0];}else{while(node&&node.isTreeNode){var _bfc=node.getNextSibling();if(_bfc){return _bfc;}node=node.getParent();}return null;}},childSelector:".dijitTreeRow",isExpandoNode:function(node,_bfd){return dom.isDescendant(node,_bfd.expandoNode)||dom.isDescendant(node,_bfd.expandoNodeText);},_onNodePress:function(_bfe,e){this.focusNode(_bfe);},__click:function(_bff,e,_c00,func){var _c01=e.target,_c02=this.isExpandoNode(_c01,_bff);if(_bff.isExpandable&&(_c00||_c02)){this._onExpandoClick({node:_bff});}else{this._publish("execute",{item:_bff.item,node:_bff,evt:e});this[func](_bff.item,_bff,e);this.focusNode(_bff);}e.stopPropagation();e.preventDefault();},_onClick:function(_c03,e){this.__click(_c03,e,this.openOnClick,"onClick");},_onDblClick:function(_c04,e){this.__click(_c04,e,this.openOnDblClick,"onDblClick");},_onExpandoClick:function(_c05){var node=_c05.node;this.focusNode(node);if(node.isExpanded){this._collapseNode(node);}else{this._expandNode(node);}},onClick:function(){},onDblClick:function(){},onOpen:function(){},onClose:function(){},_getNextNode:function(node){_ba7.deprecated(this.declaredClass+"::_getNextNode(node) is deprecated. Use _getNext(node) instead.","","2.0");return this._getNext(node);},_getRootOrFirstNode:function(){_ba7.deprecated(this.declaredClass+"::_getRootOrFirstNode() is deprecated. Use _getFirst() instead.","","2.0");return this._getFirst();},_collapseNode:function(node){if(node._expandNodeDeferred){delete node._expandNodeDeferred;}if(node.state=="Loading"){return;}if(node.isExpanded){var ret=node.collapse();this.onClose(node.item,node);this._state(node,false);this._startPaint(ret);return ret;}},_expandNode:function(node){if(node._expandNodeDeferred){return node._expandNodeDeferred;}var _c06=this.model,item=node.item,_c07=this;if(!node._loadDeferred){node.markProcessing();node._loadDeferred=new _ba1();_c06.getChildren(item,function(_c08){node.unmarkProcessing();node.setChildItems(_c08).then(function(){node._loadDeferred.resolve(_c08);});},function(err){console.error(_c07,": error loading "+node.label+" children: ",err);node._loadDeferred.reject(err);});}var def=node._loadDeferred.then(lang.hitch(this,function(){var def2=node.expand();this.onOpen(node.item,node);this._state(node,true);return def2;}));this._startPaint(def);return def;},focusNode:function(node){var tmp=[];for(var _c09=this.domNode;_c09&&_c09.tagName&&_c09.tagName.toUpperCase()!=="IFRAME";_c09=_c09.parentNode){tmp.push({domNode:_c09.contentWindow||_c09,scrollLeft:_c09.scrollLeft||0,scrollTop:_c09.scrollTop||0});}this.focusChild(node);this.defer(function(){for(var i=0,max=tmp.length;i<max;i++){tmp[i].domNode.scrollLeft=tmp[i].scrollLeft;tmp[i].domNode.scrollTop=tmp[i].scrollTop;}},0);},_onNodeMouseEnter:function(){},_onNodeMouseLeave:function(){},_onItemChange:function(item){var _c0a=this.model,_c0b=_c0a.getIdentity(item),_c0c=this._itemNodesMap[_c0b];if(_c0c){var _c0d=this.getLabel(item),_c0e=this.getTooltip(item);_b9d.forEach(_c0c,function(node){node.set({item:item,label:_c0d,tooltip:_c0e});node._updateItemClasses(item);});}},_onItemChildrenChange:function(_c0f,_c10){var _c11=this.model,_c12=_c11.getIdentity(_c0f),_c13=this._itemNodesMap[_c12];if(_c13){_b9d.forEach(_c13,function(_c14){_c14.setChildItems(_c10);});}},_onItemDelete:function(item){var _c15=this.model,_c16=_c15.getIdentity(item),_c17=this._itemNodesMap[_c16];if(_c17){_b9d.forEach(_c17,function(node){this.dndController.removeTreeNode(node);var _c18=node.getParent();if(_c18){_c18.removeChild(node);}if(this.lastFocusedChild&&!dom.isDescendant(this.lastFocusedChild.domNode,this.domNode)){delete this.lastFocusedChild;}if(this.focusedChild&&!dom.isDescendant(this.focusedChild.domNode,this.domNode)){this.focus();}node.destroyRecursive();},this);delete this._itemNodesMap[_c16];}},_initState:function(){this._openedNodes={};if(this.persist&&this.cookieName){var oreo=_b9f(this.cookieName);if(oreo){_b9d.forEach(oreo.split(","),function(item){this._openedNodes[item]=true;},this);}}},_state:function(node,_c19){if(!this.persist){return false;}var path=_b9d.map(node.getTreePath(),function(item){return this.model.getIdentity(item);},this).join("/");if(arguments.length===1){return this._openedNodes[path];}else{if(_c19){this._openedNodes[path]=true;}else{delete this._openedNodes[path];}this._saveExpandedNodes();}},_saveExpandedNodes:function(){if(this.persist&&this.cookieName){var ary=[];for(var id in this._openedNodes){ary.push(id);}_b9f(this.cookieName,ary.join(","),{expires:365});}},destroy:function(){if(this._curSearch){this._curSearch.timer.remove();delete this._curSearch;}if(this.rootNode){this.rootNode.destroyRecursive();}if(this.dndController&&!lang.isString(this.dndController)){this.dndController.destroy();}this.rootNode=null;this.inherited(arguments);},destroyRecursive:function(){this.destroy();},resize:function(_c1a){if(_c1a){_ba3.setMarginBox(this.domNode,_c1a);}this._nodePixelIndent=_ba3.position(this.tree.indentDetector).w||this._nodePixelIndent;this.expandChildrenDeferred.then(lang.hitch(this,function(){this.rootNode.set("indent",this.showRoot?0:-1);this._adjustWidths();}));},_outstandingPaintOperations:0,_startPaint:function(p){this._outstandingPaintOperations++;if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}var oc=lang.hitch(this,function(){this._outstandingPaintOperations--;if(this._outstandingPaintOperations<=0&&!this._adjustWidthsTimer&&this._started){this._adjustWidthsTimer=this.defer("_adjustWidths");}});when(p,oc,oc);},_adjustWidths:function(){if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}this.containerNode.style.width="auto";this.containerNode.style.width=this.domNode.scrollWidth>this.domNode.offsetWidth?"auto":"100%";},_createTreeNode:function(args){return new _bbc(args);},focus:function(){if(this.lastFocusedChild){this.focusNode(this.lastFocusedChild);}else{this.focusFirstChild();}}});if(has("dojo-bidi")){Tree.extend({_setTextDirAttr:function(_c1b){if(_c1b&&this.textDir!=_c1b){this._set("textDir",_c1b);this.rootNode.set("textDir",_c1b);}}});}Tree.PathError=_ba5("TreePathError");Tree._TreeNode=_bbc;return Tree;});},"dijit/tree/TreeStoreModel":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/_base/lang"],function(_c1c,_c1d,_c1e,lang){return _c1e("dijit.tree.TreeStoreModel",null,{store:null,childrenAttrs:["children"],newItemIdAttr:"id",labelAttr:"",root:null,query:null,deferItemLoadingUntilExpand:false,constructor:function(args){lang.mixin(this,args);this.connects=[];var _c1f=this.store;if(!_c1f.getFeatures()["dojo.data.api.Identity"]){throw new Error("dijit.tree.TreeStoreModel: store must support dojo.data.Identity");}if(_c1f.getFeatures()["dojo.data.api.Notification"]){this.connects=this.connects.concat([_c1d.after(_c1f,"onNew",lang.hitch(this,"onNewItem"),true),_c1d.after(_c1f,"onDelete",lang.hitch(this,"onDeleteItem"),true),_c1d.after(_c1f,"onSet",lang.hitch(this,"onSetItem"),true)]);}},destroy:function(){var h;while(h=this.connects.pop()){h.remove();}},getRoot:function(_c20,_c21){if(this.root){_c20(this.root);}else{this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_c22){if(_c22.length!=1){throw new Error("dijit.tree.TreeStoreModel: root query returned "+_c22.length+" items, but must return exactly one");}this.root=_c22[0];_c20(this.root);}),onError:_c21});}},mayHaveChildren:function(item){return _c1c.some(this.childrenAttrs,function(attr){return this.store.hasAttribute(item,attr);},this);},getChildren:function(_c23,_c24,_c25){var _c26=this.store;if(!_c26.isItemLoaded(_c23)){var _c27=lang.hitch(this,arguments.callee);_c26.loadItem({item:_c23,onItem:function(_c28){_c27(_c28,_c24,_c25);},onError:_c25});return;}var _c29=[];for(var i=0;i<this.childrenAttrs.length;i++){var vals=_c26.getValues(_c23,this.childrenAttrs[i]);_c29=_c29.concat(vals);}var _c2a=0;if(!this.deferItemLoadingUntilExpand){_c1c.forEach(_c29,function(item){if(!_c26.isItemLoaded(item)){_c2a++;}});}if(_c2a==0){_c24(_c29);}else{_c1c.forEach(_c29,function(item,idx){if(!_c26.isItemLoaded(item)){_c26.loadItem({item:item,onItem:function(item){_c29[idx]=item;if(--_c2a==0){_c24(_c29);}},onError:_c25});}});}},isItem:function(_c2b){return this.store.isItem(_c2b);},fetchItemByIdentity:function(_c2c){this.store.fetchItemByIdentity(_c2c);},getIdentity:function(item){return this.store.getIdentity(item);},getLabel:function(item){if(this.labelAttr){return this.store.getValue(item,this.labelAttr);}else{return this.store.getLabel(item);}},newItem:function(args,_c2d,_c2e){var _c2f={parent:_c2d,attribute:this.childrenAttrs[0]},_c30;if(this.newItemIdAttr&&args[this.newItemIdAttr]){this.fetchItemByIdentity({identity:args[this.newItemIdAttr],scope:this,onItem:function(item){if(item){this.pasteItem(item,null,_c2d,true,_c2e);}else{_c30=this.store.newItem(args,_c2f);if(_c30&&(_c2e!=undefined)){this.pasteItem(_c30,_c2d,_c2d,false,_c2e);}}}});}else{_c30=this.store.newItem(args,_c2f);if(_c30&&(_c2e!=undefined)){this.pasteItem(_c30,_c2d,_c2d,false,_c2e);}}},pasteItem:function(_c31,_c32,_c33,_c34,_c35){var _c36=this.store,_c37=this.childrenAttrs[0];if(_c32){_c1c.forEach(this.childrenAttrs,function(attr){if(_c36.containsValue(_c32,attr,_c31)){if(!_c34){var _c38=_c1c.filter(_c36.getValues(_c32,attr),function(x){return x!=_c31;});_c36.setValues(_c32,attr,_c38);}_c37=attr;}});}if(_c33){if(typeof _c35=="number"){var _c39=_c36.getValues(_c33,_c37).slice();_c39.splice(_c35,0,_c31);_c36.setValues(_c33,_c37,_c39);}else{_c36.setValues(_c33,_c37,_c36.getValues(_c33,_c37).concat(_c31));}}},onChange:function(){},onChildrenChange:function(){},onDelete:function(){},onNewItem:function(item,_c3a){if(!_c3a){return;}this.getChildren(_c3a.item,lang.hitch(this,function(_c3b){this.onChildrenChange(_c3a.item,_c3b);}));},onDeleteItem:function(item){this.onDelete(item);},onSetItem:function(item,_c3c){if(_c1c.indexOf(this.childrenAttrs,_c3c)!=-1){this.getChildren(item,lang.hitch(this,function(_c3d){this.onChildrenChange(item,_c3d);}));}else{this.onChange(item);}}});});},"dijit/tree/ForestStoreModel":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","./TreeStoreModel"],function(_c3e,_c3f,_c40,lang,_c41){return _c3f("dijit.tree.ForestStoreModel",_c41,{rootId:"$root$",rootLabel:"ROOT",query:null,constructor:function(_c42){this.root={store:this,root:true,id:_c42.rootId,label:_c42.rootLabel,children:_c42.rootChildren};},mayHaveChildren:function(item){return item===this.root||this.inherited(arguments);},getChildren:function(_c43,_c44,_c45){if(_c43===this.root){if(this.root.children){_c44(this.root.children);}else{this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_c46){this.root.children=_c46;_c44(_c46);}),onError:_c45});}}else{this.inherited(arguments);}},isItem:function(_c47){return (_c47===this.root)?true:this.inherited(arguments);},fetchItemByIdentity:function(_c48){if(_c48.identity==this.root.id){var _c49=_c48.scope||_c40.global;if(_c48.onItem){_c48.onItem.call(_c49,this.root);}}else{this.inherited(arguments);}},getIdentity:function(item){return (item===this.root)?this.root.id:this.inherited(arguments);},getLabel:function(item){return (item===this.root)?this.root.label:this.inherited(arguments);},newItem:function(args,_c4a,_c4b){if(_c4a===this.root){this.onNewRootItem(args);return this.store.newItem(args);}else{return this.inherited(arguments);}},onNewRootItem:function(){},pasteItem:function(_c4c,_c4d,_c4e,_c4f,_c50){if(_c4d===this.root){if(!_c4f){this.onLeaveRoot(_c4c);}}this.inherited(arguments,[_c4c,_c4d===this.root?null:_c4d,_c4e===this.root?null:_c4e,_c4f,_c50]);if(_c4e===this.root){this.onAddToRoot(_c4c);}},onAddToRoot:function(item){},onLeaveRoot:function(item){},_requeryTop:function(){var _c51=this.root.children||[];this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_c52){this.root.children=_c52;if(_c51.length!=_c52.length||_c3e.some(_c51,function(item,idx){return _c52[idx]!=item;})){this.onChildrenChange(this.root,_c52);}})});},onNewItem:function(item,_c53){this._requeryTop();this.inherited(arguments);},onDeleteItem:function(item){if(_c3e.indexOf(this.root.children,item)!=-1){this._requeryTop();}this.inherited(arguments);},onSetItem:function(item,_c54,_c55,_c56){this._requeryTop();this.inherited(arguments);}});});},"dijit/tree/_dndSelector":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/dnd/common","dojo/dom","dojo/mouse","dojo/on","dojo/touch","../a11yclick","./_dndContainer"],function(_c57,_c58,_c59,lang,_c5a,dom,_c5b,on,_c5c,_c5d,_c5e){return _c58("dijit.tree._dndSelector",_c5e,{constructor:function(){this.selection={};this.anchor=null;this.events.push(on(this.tree.domNode,_c5c.press,lang.hitch(this,"onMouseDown")),on(this.tree.domNode,_c5c.release,lang.hitch(this,"onMouseUp")),on(this.tree.domNode,_c5c.move,lang.hitch(this,"onMouseMove")),on(this.tree.domNode,_c5d.press,lang.hitch(this,"onClickPress")),on(this.tree.domNode,_c5d.release,lang.hitch(this,"onClickRelease")));},singular:false,getSelectedTreeNodes:function(){var _c5f=[],sel=this.selection;for(var i in sel){_c5f.push(sel[i]);}return _c5f;},selectNone:function(){this.setSelection([]);return this;},destroy:function(){this.inherited(arguments);this.selection=this.anchor=null;},addTreeNode:function(node,_c60){this.setSelection(this.getSelectedTreeNodes().concat([node]));if(_c60){this.anchor=node;}return node;},removeTreeNode:function(node){var _c61=_c57.filter(this.getSelectedTreeNodes(),function(_c62){return !dom.isDescendant(_c62.domNode,node.domNode);});this.setSelection(_c61);return node;},isTreeNodeSelected:function(node){return node.id&&!!this.selection[node.id];},setSelection:function(_c63){var _c64=this.getSelectedTreeNodes();_c57.forEach(this._setDifference(_c64,_c63),lang.hitch(this,function(node){node.setSelected(false);if(this.anchor==node){delete this.anchor;}delete this.selection[node.id];}));_c57.forEach(this._setDifference(_c63,_c64),lang.hitch(this,function(node){node.setSelected(true);this.selection[node.id]=node;}));this._updateSelectionProperties();},_setDifference:function(xs,ys){_c57.forEach(ys,function(y){y.__exclude__=true;});var ret=_c57.filter(xs,function(x){return !x.__exclude__;});_c57.forEach(ys,function(y){delete y["__exclude__"];});return ret;},_updateSelectionProperties:function(){var _c65=this.getSelectedTreeNodes();var _c66=[],_c67=[];_c57.forEach(_c65,function(node){var ary=node.getTreePath();_c67.push(node);_c66.push(ary);},this);var _c68=_c57.map(_c67,function(node){return node.item;});this.tree._set("paths",_c66);this.tree._set("path",_c66[0]||[]);this.tree._set("selectedNodes",_c67);this.tree._set("selectedNode",_c67[0]||null);this.tree._set("selectedItems",_c68);this.tree._set("selectedItem",_c68[0]||null);},onClickPress:function(e){if(this.current&&this.current.isExpandable&&this.tree.isExpandoNode(e.target,this.current)){return;}if(e.type=="mousedown"&&_c5b.isLeft(e)){e.preventDefault();}var _c69=e.type=="keydown"?this.tree.focusedChild:this.current;if(!_c69){return;}var copy=_c5a.getCopyKeyState(e),id=_c69.id;if(!this.singular&&!e.shiftKey&&this.selection[id]){this._doDeselect=true;return;}else{this._doDeselect=false;}this.userSelect(_c69,copy,e.shiftKey);},onClickRelease:function(e){if(!this._doDeselect){return;}this._doDeselect=false;this.userSelect(e.type=="keyup"?this.tree.focusedChild:this.current,_c5a.getCopyKeyState(e),e.shiftKey);},onMouseMove:function(){this._doDeselect=false;},onMouseDown:function(){},onMouseUp:function(){},_compareNodes:function(n1,n2){if(n1===n2){return 0;}if("sourceIndex" in document.documentElement){return n1.sourceIndex-n2.sourceIndex;}else{if("compareDocumentPosition" in document.documentElement){return n1.compareDocumentPosition(n2)&2?1:-1;}else{if(document.createRange){var r1=doc.createRange();r1.setStartBefore(n1);var r2=doc.createRange();r2.setStartBefore(n2);return r1.compareBoundaryPoints(r1.END_TO_END,r2);}else{throw Error("dijit.tree._compareNodes don't know how to compare two different nodes in this browser");}}}},userSelect:function(node,_c6a,_c6b){if(this.singular){if(this.anchor==node&&_c6a){this.selectNone();}else{this.setSelection([node]);this.anchor=node;}}else{if(_c6b&&this.anchor){var cr=this._compareNodes(this.anchor.rowNode,node.rowNode),_c6c,end,_c6d=this.anchor;if(cr<0){_c6c=_c6d;end=node;}else{_c6c=node;end=_c6d;}var _c6e=[];while(_c6c!=end){_c6e.push(_c6c);_c6c=this.tree._getNext(_c6c);}_c6e.push(end);this.setSelection(_c6e);}else{if(this.selection[node.id]&&_c6a){this.removeTreeNode(node);}else{if(_c6a){this.addTreeNode(node,true);}else{this.setSelection([node]);this.anchor=node;}}}}},getItem:function(key){var _c6f=this.selection[key];return {data:_c6f,type:["treeNode"]};},forInSelectedItems:function(f,o){o=o||_c59.global;for(var id in this.selection){f.call(o,this.getItem(id),id,this);}}});});},"dijit/tree/_dndContainer":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom-class","dojo/_base/lang","dojo/on","dojo/touch"],function(_c70,_c71,_c72,lang,on,_c73){return _c71("dijit.tree._dndContainer",null,{constructor:function(tree,_c74){this.tree=tree;this.node=tree.domNode;lang.mixin(this,_c74);this.containerState="";_c72.add(this.node,"dojoDndContainer");this.events=[on(this.node,_c73.enter,lang.hitch(this,"onOverEvent")),on(this.node,_c73.leave,lang.hitch(this,"onOutEvent")),_c70.after(this.tree,"_onNodeMouseEnter",lang.hitch(this,"onMouseOver"),true),_c70.after(this.tree,"_onNodeMouseLeave",lang.hitch(this,"onMouseOut"),true),on(this.node,"dragstart, selectstart",function(evt){evt.preventDefault();})];},destroy:function(){var h;while(h=this.events.pop()){h.remove();}this.node=this.parent=null;},onMouseOver:function(_c75){this.current=_c75;},onMouseOut:function(){this.current=null;},_changeState:function(type,_c76){var _c77="dojoDnd"+type;var _c78=type.toLowerCase()+"State";_c72.replace(this.node,_c77+_c76,_c77+this[_c78]);this[_c78]=_c76;},_addItemClass:function(node,type){_c72.add(node,"dojoDndItem"+type);},_removeItemClass:function(node,type){_c72.remove(node,"dojoDndItem"+type);},onOverEvent:function(){this._changeState("Container","Over");},onOutEvent:function(){this._changeState("Container","");}});});},"dijit/tree/dndSource":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dnd/common","dojo/dom-class","dojo/dom-geometry","dojo/_base/lang","dojo/mouse","dojo/on","dojo/touch","dojo/topic","dojo/dnd/Manager","./_dndSelector"],function(_c79,_c7a,_c7b,_c7c,_c7d,lang,_c7e,on,_c7f,_c80,_c81,_c82){var _c83=_c7a("dijit.tree.dndSource",_c82,{isSource:true,accept:["text","treeNode"],copyOnly:false,dragThreshold:5,betweenThreshold:0,generateText:true,constructor:function(tree,_c84){if(!_c84){_c84={};}lang.mixin(this,_c84);var type=_c84.accept instanceof Array?_c84.accept:["text","treeNode"];this.accept=null;if(type.length){this.accept={};for(var i=0;i<type.length;++i){this.accept[type[i]]=1;}}this.isDragging=false;this.mouseDown=false;this.targetAnchor=null;this.targetBox=null;this.dropPosition="";this._lastX=0;this._lastY=0;this.sourceState="";if(this.isSource){_c7c.add(this.node,"dojoDndSource");}this.targetState="";if(this.accept){_c7c.add(this.node,"dojoDndTarget");}this.topics=[_c80.subscribe("/dnd/source/over",lang.hitch(this,"onDndSourceOver")),_c80.subscribe("/dnd/start",lang.hitch(this,"onDndStart")),_c80.subscribe("/dnd/drop",lang.hitch(this,"onDndDrop")),_c80.subscribe("/dnd/cancel",lang.hitch(this,"onDndCancel"))];},checkAcceptance:function(){return true;},copyState:function(_c85){return this.copyOnly||_c85;},destroy:function(){this.inherited(arguments);var h;while(h=this.topics.pop()){h.remove();}this.targetAnchor=null;},_onDragMouse:function(e,_c86){var m=_c81.manager(),_c87=this.targetAnchor,_c88=this.current,_c89=this.dropPosition;var _c8a="Over";if(_c88&&this.betweenThreshold>0){if(!this.targetBox||_c87!=_c88){this.targetBox=_c7d.position(_c88.rowNode,true);}if((e.pageY-this.targetBox.y)<=this.betweenThreshold){_c8a="Before";}else{if((e.pageY-this.targetBox.y)>=(this.targetBox.h-this.betweenThreshold)){_c8a="After";}}}if(_c86||_c88!=_c87||_c8a!=_c89){if(_c87){this._removeItemClass(_c87.rowNode,_c89);}if(_c88){this._addItemClass(_c88.rowNode,_c8a);}if(!_c88){m.canDrop(false);}else{if(_c88==this.tree.rootNode&&_c8a!="Over"){m.canDrop(false);}else{var _c8b=false,_c8c=false;if(m.source==this){_c8c=(_c8a==="Over");for(var _c8d in this.selection){var _c8e=this.selection[_c8d];if(_c8e.item===_c88.item){_c8b=true;break;}if(_c8e.getParent().id!==_c88.id){_c8c=false;}}}m.canDrop(!_c8b&&!_c8c&&!this._isParentChildDrop(m.source,_c88.rowNode)&&this.checkItemAcceptance(_c88.rowNode,m.source,_c8a.toLowerCase()));}}this.targetAnchor=_c88;this.dropPosition=_c8a;}},onMouseMove:function(e){if(this.isDragging&&this.targetState=="Disabled"){return;}this.inherited(arguments);var m=_c81.manager();if(this.isDragging){this._onDragMouse(e);}else{if(this.mouseDown&&this.isSource&&(Math.abs(e.pageX-this._lastX)>=this.dragThreshold||Math.abs(e.pageY-this._lastY)>=this.dragThreshold)){var _c8f=this.getSelectedTreeNodes();if(_c8f.length){if(_c8f.length>1){var seen=this.selection,i=0,r=[],n,p;nextitem:while((n=_c8f[i++])){for(p=n.getParent();p&&p!==this.tree;p=p.getParent()){if(seen[p.id]){continue nextitem;}}r.push(n);}_c8f=r;}_c8f=_c79.map(_c8f,function(n){return n.domNode;});m.startDrag(this,_c8f,this.copyState(_c7b.getCopyKeyState(e)));this._onDragMouse(e,true);}}}},onMouseDown:function(e){if(e.type=="touchstart"||_c7e.isLeft(e)){this.mouseDown=true;this.mouseButton=e.button;this._lastX=e.pageX;this._lastY=e.pageY;}this.inherited(arguments);},onMouseUp:function(e){if(this.mouseDown){this.mouseDown=false;this.inherited(arguments);}},onMouseOut:function(){this.inherited(arguments);this._unmarkTargetAnchor();},checkItemAcceptance:function(){return true;},onDndSourceOver:function(_c90){if(this!=_c90){this.mouseDown=false;this._unmarkTargetAnchor();}else{if(this.isDragging){var m=_c81.manager();m.canDrop(false);}}},onDndStart:function(_c91,_c92,copy){if(this.isSource){this._changeState("Source",this==_c91?(copy?"Copied":"Moved"):"");}var _c93=this.checkAcceptance(_c91,_c92);this._changeState("Target",_c93?"":"Disabled");if(this==_c91){_c81.manager().overSource(this);}this.isDragging=true;},itemCreator:function(_c94){return _c79.map(_c94,function(node){return {"id":node.id,"name":node.textContent||node.innerText||""};});},onDndDrop:function(_c95,_c96,copy){if(this.containerState=="Over"){var tree=this.tree,_c97=tree.model,_c98=this.targetAnchor,_c99=false;this.isDragging=false;var _c9a;var _c9b;var _c9c;_c9a=(_c98&&_c98.item)||tree.item;if(this.dropPosition=="Before"||this.dropPosition=="After"){_c9a=(_c98.getParent()&&_c98.getParent().item)||tree.item;_c9b=_c98.getIndexInParent();if(this.dropPosition=="After"){_c9b=_c98.getIndexInParent()+1;_c9c=_c98.getNextSibling()&&_c98.getNextSibling().item;}else{_c9c=_c98.item;}}else{_c9a=(_c98&&_c98.item)||tree.item;_c99=true;}var _c9d;_c79.forEach(_c96,function(node,idx){var _c9e=_c95.getItem(node.id);if(_c79.indexOf(_c9e.type,"treeNode")!=-1){var _c9f=_c9e.data,_ca0=_c9f.item,_ca1=_c9f.getParent().item;}if(_c95==this){if(typeof _c9b=="number"){if(_c9a==_ca1&&_c9f.getIndexInParent()<_c9b){_c9b-=1;}}_c97.pasteItem(_ca0,_ca1,_c9a,copy,_c9b,_c9c);}else{if(_c97.isItem(_ca0)){_c97.pasteItem(_ca0,_ca1,_c9a,copy,_c9b,_c9c);}else{if(!_c9d){_c9d=this.itemCreator(_c96,_c98.rowNode,_c95);}_c97.newItem(_c9d[idx],_c9a,_c9b,_c9c);}}},this);if(_c99){this.tree._expandNode(_c98);}}this.onDndCancel();},onDndCancel:function(){this._unmarkTargetAnchor();this.isDragging=false;this.mouseDown=false;delete this.mouseButton;this._changeState("Source","");this._changeState("Target","");},onOverEvent:function(){this.inherited(arguments);_c81.manager().overSource(this);},onOutEvent:function(){this._unmarkTargetAnchor();var m=_c81.manager();if(this.isDragging){m.canDrop(false);}m.outSource(this);this.inherited(arguments);},_isParentChildDrop:function(_ca2,_ca3){if(!_ca2.tree||_ca2.tree!=this.tree){return false;}var root=_ca2.tree.domNode;var ids=_ca2.selection;var node=_ca3.parentNode;while(node!=root&&!ids[node.id]){node=node.parentNode;}return node.id&&ids[node.id];},_unmarkTargetAnchor:function(){if(!this.targetAnchor){return;}this._removeItemClass(this.targetAnchor.rowNode,this.dropPosition);this.targetAnchor=null;this.targetBox=null;this.dropPosition=null;},_markDndStatus:function(copy){this._changeState("Source",copy?"Copied":"Moved");}});return _c83;});},"dojo/dnd/Manager":function(){define(["../_base/array","../_base/declare","../_base/lang","../_base/window","../dom-class","../Evented","../has","../keys","../on","../topic","../touch","./common","./autoscroll","./Avatar"],function(_ca4,_ca5,lang,win,_ca6,_ca7,has,keys,on,_ca8,_ca9,dnd,_caa,_cab){var _cac=_ca5("dojo.dnd.Manager",[_ca7],{constructor:function(){this.avatar=null;this.source=null;this.nodes=[];this.copy=true;this.target=null;this.canDropFlag=false;this.events=[];},OFFSET_X:has("touch")?4:16,OFFSET_Y:has("touch")?4:16,overSource:function(_cad){if(this.avatar){this.target=(_cad&&_cad.targetState!="Disabled")?_cad:null;this.canDropFlag=Boolean(this.target);this.avatar.update();}_ca8.publish("/dnd/source/over",_cad);},outSource:function(_cae){if(this.avatar){if(this.target==_cae){this.target=null;this.canDropFlag=false;this.avatar.update();_ca8.publish("/dnd/source/over",null);}}else{_ca8.publish("/dnd/source/over",null);}},startDrag:function(_caf,_cb0,copy){_caa.autoScrollStart(win.doc);this.source=_caf;this.nodes=_cb0;this.copy=Boolean(copy);this.avatar=this.makeAvatar();win.body().appendChild(this.avatar.node);_ca8.publish("/dnd/start",_caf,_cb0,this.copy);function _cb1(e){e.preventDefault();e.stopPropagation();};this.events=[on(win.doc,_ca9.move,lang.hitch(this,"onMouseMove")),on(win.doc,_ca9.release,lang.hitch(this,"onMouseUp")),on(win.doc,"keydown",lang.hitch(this,"onKeyDown")),on(win.doc,"keyup",lang.hitch(this,"onKeyUp")),on(win.doc,"dragstart",_cb1),on(win.body(),"selectstart",_cb1)];var c="dojoDnd"+(copy?"Copy":"Move");_ca6.add(win.body(),c);},canDrop:function(flag){var _cb2=Boolean(this.target&&flag);if(this.canDropFlag!=_cb2){this.canDropFlag=_cb2;this.avatar.update();}},stopDrag:function(){_ca6.remove(win.body(),["dojoDndCopy","dojoDndMove"]);_ca4.forEach(this.events,function(_cb3){_cb3.remove();});this.events=[];this.avatar.destroy();this.avatar=null;this.source=this.target=null;this.nodes=[];},makeAvatar:function(){return new _cab(this);},updateAvatar:function(){this.avatar.update();},onMouseMove:function(e){var a=this.avatar;if(a){_caa.autoScrollNodes(e);var s=a.node.style;s.left=(e.pageX+this.OFFSET_X)+"px";s.top=(e.pageY+this.OFFSET_Y)+"px";var copy=Boolean(this.source.copyState(dnd.getCopyKeyState(e)));if(this.copy!=copy){this._setCopyStatus(copy);}}if(has("touch")){e.preventDefault();}},onMouseUp:function(e){if(this.avatar){if(this.target&&this.canDropFlag){var copy=Boolean(this.source.copyState(dnd.getCopyKeyState(e)));_ca8.publish("/dnd/drop/before",this.source,this.nodes,copy,this.target,e);_ca8.publish("/dnd/drop",this.source,this.nodes,copy,this.target,e);}else{_ca8.publish("/dnd/cancel");}this.stopDrag();}},onKeyDown:function(e){if(this.avatar){switch(e.keyCode){case keys.CTRL:var copy=Boolean(this.source.copyState(true));if(this.copy!=copy){this._setCopyStatus(copy);}break;case keys.ESCAPE:_ca8.publish("/dnd/cancel");this.stopDrag();break;}}},onKeyUp:function(e){if(this.avatar&&e.keyCode==keys.CTRL){var copy=Boolean(this.source.copyState(false));if(this.copy!=copy){this._setCopyStatus(copy);}}},_setCopyStatus:function(copy){this.copy=copy;this.source._markDndStatus(this.copy);this.updateAvatar();_ca6.replace(win.body(),"dojoDnd"+(this.copy?"Copy":"Move"),"dojoDnd"+(this.copy?"Move":"Copy"));}});dnd._manager=null;_cac.manager=dnd.manager=function(){if(!dnd._manager){dnd._manager=new _cac();}return dnd._manager;};return _cac;});},"dojo/dnd/Avatar":function(){define(["../_base/declare","../_base/window","../dom","../dom-attr","../dom-class","../dom-construct","../hccss","../query"],function(_cb4,win,dom,_cb5,_cb6,_cb7,has,_cb8){return _cb4("dojo.dnd.Avatar",null,{constructor:function(_cb9){this.manager=_cb9;this.construct();},construct:function(){var a=_cb7.create("table",{"class":"dojoDndAvatar",style:{position:"absolute",zIndex:"1999",margin:"0px"}}),_cba=this.manager.source,node,b=_cb7.create("tbody",null,a),tr=_cb7.create("tr",null,b),td=_cb7.create("td",null,tr),k=Math.min(5,this.manager.nodes.length),i=0;if(has("highcontrast")){_cb7.create("span",{id:"a11yIcon",innerHTML:this.manager.copy?"+":"<"},td);}_cb7.create("span",{innerHTML:_cba.generateText?this._generateText():""},td);_cb5.set(tr,{"class":"dojoDndAvatarHeader",style:{opacity:0.9}});for(;i<k;++i){if(_cba.creator){node=_cba._normalizedCreator(_cba.getItem(this.manager.nodes[i].id).data,"avatar").node;}else{node=this.manager.nodes[i].cloneNode(true);if(node.tagName.toLowerCase()=="tr"){var _cbb=_cb7.create("table"),_cbc=_cb7.create("tbody",null,_cbb);_cbc.appendChild(node);node=_cbb;}}node.id="";tr=_cb7.create("tr",null,b);td=_cb7.create("td",null,tr);td.appendChild(node);_cb5.set(tr,{"class":"dojoDndAvatarItem",style:{opacity:(9-i)/10}});}this.node=a;},destroy:function(){_cb7.destroy(this.node);this.node=false;},update:function(){_cb6.toggle(this.node,"dojoDndAvatarCanDrop",this.manager.canDropFlag);if(has("highcontrast")){var icon=dom.byId("a11yIcon");var text="+";if(this.manager.canDropFlag&&!this.manager.copy){text="< ";}else{if(!this.manager.canDropFlag&&!this.manager.copy){text="o";}else{if(!this.manager.canDropFlag){text="x";}}}icon.innerHTML=text;}_cb8(("tr.dojoDndAvatarHeader td span"+(has("highcontrast")?" span":"")),this.node).forEach(function(node){node.innerHTML=this.manager.source.generateText?this._generateText():"";},this);},_generateText:function(){return this.manager.nodes.length.toString();}});});},"url:dijit/templates/ColorPalette.html":"<div class=\"dijitInline dijitColorPalette\" role=\"grid\">\n\t<table data-dojo-attach-point=\"paletteTableNode\" class=\"dijitPaletteTable\" cellSpacing=\"0\" cellPadding=\"0\" role=\"presentation\">\n\t\t<tbody data-dojo-attach-point=\"gridNode\"></tbody>\n\t</table>\n</div>\n","url:dijit/templates/Dialog.html":"<div class=\"dijitDialog\" role=\"dialog\" aria-labelledby=\"${id}_title\">\n\t<div data-dojo-attach-point=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t\t<span data-dojo-attach-point=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\"\n\t\t\t\trole=\"heading\" level=\"1\"></span>\n\t\t<span data-dojo-attach-point=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" data-dojo-attach-event=\"ondijitclick: onCancel\" title=\"${buttonCancel}\" role=\"button\" tabindex=\"-1\">\n\t\t\t<span data-dojo-attach-point=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\n\t${!actionBarTemplate}\n</div>\n\n","url:dijit/form/templates/Button.html":"<span class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><span class=\"dijitReset dijitInline dijitButtonNode\"\n\t\tdata-dojo-attach-event=\"ondijitclick:__onClick\" role=\"presentation\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode,focusNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span class=\"dijitReset dijitToggleButtonIconChar\">&#x25CF;</span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\"\n\t\tdata-dojo-attach-event=\"onclick:_onClick\"\n\t\ttabIndex=\"-1\" aria-hidden=\"true\" data-dojo-attach-point=\"valueNode\"\n/></span>\n","url:dijit/form/templates/CheckBox.html":"<div class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><input\n\t \t${!nameAttrSetting} type=\"${type}\" role=\"${type}\" aria-checked=\"false\" ${checkedAttrSetting}\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\n\t\tdata-dojo-attach-point=\"focusNode\"\n\t \tdata-dojo-attach-event=\"ondijitclick:_onClick\"\n/></div>\n","url:dijit/form/templates/DropDownButton.html":"<span class=\"dijit dijitReset dijitInline\"\n\t><span class='dijitReset dijitInline dijitButtonNode'\n\t\tdata-dojo-attach-event=\"ondijitclick:__onClick\" data-dojo-attach-point=\"_buttonNode\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"focusNode,titleNode,_arrowWrapperNode,_popupStateNode\"\n\t\t\trole=\"button\" aria-haspopup=\"true\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\"\n\t\t\t\tdata-dojo-attach-point=\"iconNode\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonInner\"></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonChar\">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\" tabIndex=\"-1\"\n\t\tdata-dojo-attach-event=\"onclick:_onClick\" data-dojo-attach-point=\"valueNode\" aria-hidden=\"true\"\n/></span>\n","url:dijit/form/templates/ComboButton.html":"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tcellspacing='0' cellpadding='0' role=\"presentation\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonNode\" data-dojo-attach-point=\"buttonNode\" data-dojo-attach-event=\"ondijitclick:__onClick,onkeydown:_onButtonKeyDown\"\n\t\t><div id=\"${id}_button\" class=\"dijitReset dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" data-dojo-attach-point=\"containerNode\" role=\"presentation\"></div\n\t\t></div\n\t\t></td\n\t\t><td id=\"${id}_arrow\" class='dijitReset dijitRight dijitButtonNode dijitArrowButton'\n\t\t\tdata-dojo-attach-point=\"_popupStateNode,focusNode,_buttonNode\"\n\t\t\tdata-dojo-attach-event=\"onkeydown:_onArrowKeyDown\"\n\t\t\ttitle=\"${optionsTitle}\"\n\t\t\trole=\"button\" aria-haspopup=\"true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" role=\"presentation\">&#9660;</div\n\t\t></td\n\t\t><td style=\"display:none !important;\"\n\t\t\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" data-dojo-attach-point=\"valueNode\"\n\t\t\t\tclass=\"dijitOffScreen\" aria-hidden=\"true\" data-dojo-attach-event=\"onclick:_onClick\"\n\t\t/></td></tr></tbody\n></table>\n","url:dijit/form/templates/TextBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\" id=\"widget_${id}\" role=\"presentation\"\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n","url:dijit/templates/Tooltip.html":"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\" data-dojo-attach-event=\"mouseenter:onMouseEnter,mouseleave:onMouseLeave\"\n\t><div class=\"dijitTooltipConnector\" data-dojo-attach-point=\"connectorNode\"></div\n\t><div class=\"dijitTooltipContainer dijitTooltipContents\" data-dojo-attach-point=\"containerNode\" role='alert'></div\n></div>\n","url:dijit/form/templates/ValidationTextBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\" role=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n","url:dijit/form/templates/DropDownBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\"\n\trole=\"combobox\"\n\taria-haspopup=\"true\"\n\tdata-dojo-attach-point=\"_popupStateNode\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdata-dojo-attach-point=\"_buttonNode\" role=\"presentation\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"button presentation\" aria-hidden=\"true\"\n\t\t\t${_buttonInputDisabled}\n\t/></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' ${!nameAttrSetting} type=\"${type}\" autocomplete=\"off\"\n\t\t\tdata-dojo-attach-point=\"textbox,focusNode\" role=\"textbox\"\n\t/></div\n></div>\n","url:dijit/templates/Menu.html":"<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" role=\"menu\" tabIndex=\"${tabIndex}\"\n\t cellspacing=\"0\">\n\t<tbody class=\"dijitReset\" data-dojo-attach-point=\"containerNode\"></tbody>\n</table>\n","url:dijit/templates/MenuItem.html":"<tr class=\"dijitReset\" data-dojo-attach-point=\"focusNode\" role=\"menuitem\" tabIndex=\"-1\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitMenuItemIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,textDirNode\"\n\t\trole=\"presentation\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">\n\t\t<span data-dojo-attach-point=\"arrowWrapper\" style=\"visibility: hidden\">\n\t\t\t<span class=\"dijitInline dijitIcon dijitMenuExpand\"></span>\n\t\t\t<span class=\"dijitMenuExpandA11y\">+</span>\n\t\t</span>\n\t</td>\n</tr>\n","url:dijit/templates/MenuSeparator.html":"<tr class=\"dijitMenuSeparator\" role=\"separator\">\n\t<td class=\"dijitMenuSeparatorIconCell\">\n\t\t<div class=\"dijitMenuSeparatorTop\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n\t<td colspan=\"3\" class=\"dijitMenuSeparatorLabelCell\">\n\t\t<div class=\"dijitMenuSeparatorTop dijitMenuSeparatorLabel\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n</tr>\n","url:dijit/form/templates/Select.html":"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tdata-dojo-attach-point=\"_buttonNode,tableNode,focusNode,_popupStateNode\" cellspacing='0' cellpadding='0'\n\trole=\"listbox\" aria-haspopup=\"true\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents\" role=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitInputField dijitButtonText\" data-dojo-attach-point=\"containerNode,textDirNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitValidationContainer\"\n\t\t\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t/></div\n\t\t\t><input type=\"hidden\" ${!nameAttrSetting} data-dojo-attach-point=\"valueNode\" value=\"${value}\" aria-hidden=\"true\"\n\t\t/></td\n\t\t><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer\"\n\t\t\tdata-dojo-attach-point=\"titleNode\" role=\"presentation\"\n\t\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t\t${_buttonInputDisabled}\n\t\t/></td\n\t></tr></tbody\n></table>\n","url:dijit/templates/InlineEditBox.html":"<span data-dojo-attach-point=\"editNode\" role=\"presentation\" class=\"dijitReset dijitInline dijitOffScreen\"\n\t><span data-dojo-attach-point=\"editorPlaceholder\"></span\n\t><span data-dojo-attach-point=\"buttonContainer\"\n\t\t><button data-dojo-type=\"./form/Button\" data-dojo-props=\"label: '${buttonSave}', 'class': 'saveButton'\"\n\t\t\tdata-dojo-attach-point=\"saveButton\" data-dojo-attach-event=\"onClick:save\"></button\n\t\t><button data-dojo-type=\"./form/Button\" data-dojo-props=\"label: '${buttonCancel}', 'class': 'cancelButton'\"\n\t\t\tdata-dojo-attach-point=\"cancelButton\" data-dojo-attach-event=\"onClick:cancel\"></button\n\t></span\n></span>\n","url:dijit/templates/CheckedMenuItem.html":"<tr class=\"dijitReset\" data-dojo-attach-point=\"focusNode\" role=\"${role}\" tabIndex=\"-1\" aria-checked=\"${checked}\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<span class=\"dijitInline dijitIcon dijitMenuItemIcon dijitCheckedMenuItemIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t\t<span class=\"dijitMenuItemIconChar dijitCheckedMenuItemIconChar\">${!checkedChar}</span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,labelNode,textDirNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">&#160;</td>\n</tr>\n","url:dijit/layout/templates/AccordionButton.html":"<div data-dojo-attach-event='ondijitclick:_onTitleClick' class='dijitAccordionTitle' role=\"presentation\">\n\t<div data-dojo-attach-point='titleNode,focusNode' data-dojo-attach-event='onkeydown:_onTitleKeyDown'\n\t\t\tclass='dijitAccordionTitleFocus' role=\"tab\" aria-expanded=\"false\"\n\t\t><span class='dijitInline dijitAccordionArrow' role=\"presentation\"></span\n\t\t><span class='arrowTextUp' role=\"presentation\">+</span\n\t\t><span class='arrowTextDown' role=\"presentation\">-</span\n\t\t><span role=\"presentation\" class=\"dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t\t<span role=\"presentation\" data-dojo-attach-point='titleTextNode, textDirNode' class='dijitAccordionText'></span>\n\t</div>\n</div>\n","url:dijit/layout/templates/TabContainer.html":"<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" data-dojo-attach-point=\"tablistNode\"></div>\n\t<div data-dojo-attach-point=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" data-dojo-attach-point=\"containerNode\"></div>\n</div>\n","url:dijit/layout/templates/_TabButton.html":"<div role=\"presentation\" data-dojo-attach-point=\"titleNode,innerDiv,tabContent\" class=\"dijitTabInner dijitTabContent\">\n\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTabButtonIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t<span data-dojo-attach-point='containerNode,focusNode' class='tabLabel'></span>\n\t<span class=\"dijitInline dijitTabCloseButton dijitTabCloseIcon\" data-dojo-attach-point='closeNode'\n\t\t role=\"presentation\">\n\t\t<span data-dojo-attach-point='closeText' class='dijitTabCloseText'>[x]</span\n\t\t\t\t></span>\n</div>\n","url:dijit/layout/templates/ScrollingTabController.html":"<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerMenuButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_menuBtn\"\n\t\t data-dojo-props=\"containerId: '${containerId}', iconClass: 'dijitTabStripMenuIcon',\n\t\t\t\t\tdropDownPosition: ['below-alt', 'above-alt']\"\n\t\t data-dojo-attach-point=\"_menuBtn\" showLabel=\"false\" title=\"\">&#9660;</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_leftBtn\"\n\t\t data-dojo-props=\"iconClass:'dijitTabStripSlideLeftIcon', showLabel:false, title:''\"\n\t\t data-dojo-attach-point=\"_leftBtn\" data-dojo-attach-event=\"onClick: doSlideLeft\">&#9664;</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_rightBtn\"\n\t\t data-dojo-props=\"iconClass:'dijitTabStripSlideRightIcon', showLabel:false, title:''\"\n\t\t data-dojo-attach-point=\"_rightBtn\" data-dojo-attach-event=\"onClick: doSlideRight\">&#9654;</div>\n\t<div class='dijitTabListWrapper' data-dojo-attach-point='tablistWrapper'>\n\t\t<div role='tablist' data-dojo-attach-event='onkeydown:onkeydown'\n\t\t\t data-dojo-attach-point='containerNode' class='nowrapTabStrip'></div>\n\t</div>\n</div>","url:dijit/layout/templates/_ScrollingTabControllerButton.html":"<div data-dojo-attach-event=\"ondijitclick:_onClick\" class=\"dijitTabInnerDiv dijitTabContent dijitButtonContents\" data-dojo-attach-point=\"focusNode\" role=\"button\">\n\t<span role=\"presentation\" class=\"dijitInline dijitTabStripIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t<span data-dojo-attach-point=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n</div>","url:dijit/templates/ProgressBar.html":"<div class=\"dijitProgressBar dijitProgressBarEmpty\" role=\"progressbar\"\n\t><div data-dojo-attach-point=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\" role=\"presentation\"></div\n\t\t><span style=\"visibility:hidden\">&#160;</span\n\t></div\n\t><div data-dojo-attach-point=\"labelNode\" class=\"dijitProgressBarLabel\" id=\"${id}_label\"></div\n\t><span data-dojo-attach-point=\"indeterminateHighContrastImage\"\n\t\t class=\"dijitInline dijitProgressBarIndeterminateHighContrastImage\"></span\n></div>\n","url:dijit/templates/TooltipDialog.html":"<div role=\"alertdialog\" tabIndex=\"-1\">\n\t<div class=\"dijitTooltipContainer\" role=\"presentation\">\n\t\t<div data-dojo-attach-point=\"contentsNode\" class=\"dijitTooltipContents dijitTooltipFocusNode\">\n\t\t\t<div data-dojo-attach-point=\"containerNode\"></div>\n\t\t\t${!actionBarTemplate}\n\t\t</div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" role=\"presentation\" data-dojo-attach-point=\"connectorNode\"></div>\n</div>\n","url:dijit/templates/TreeNode.html":"<div class=\"dijitTreeNode\" role=\"presentation\"\n\t><div data-dojo-attach-point=\"rowNode\" class=\"dijitTreeRow\" role=\"presentation\"\n\t\t><span data-dojo-attach-point=\"expandoNode\" class=\"dijitInline dijitTreeExpando\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"expandoNodeText\" class=\"dijitExpandoText\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" role=\"presentation\">\n\t\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTreeIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span data-dojo-attach-point=\"labelNode,focusNode\" class=\"dijitTreeLabel\" role=\"treeitem\"\n\t\t\t\t tabindex=\"-1\" aria-selected=\"false\" id=\"${id}_label\"></span>\n\t\t</span\n\t></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeNodeContainer\" role=\"presentation\"\n\t\t style=\"display: none;\" aria-labelledby=\"${id}_label\"></div>\n</div>\n","url:dijit/templates/Tree.html":"<div role=\"tree\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" data-dojo-attach-point=\"indentDetector\"></div>\n\t<div class=\"dijitTreeExpando dijitTreeExpandoLoading\" data-dojo-attach-point=\"rootLoadingIndicator\"></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeContainer\" role=\"presentation\">\n\t</div>\n</div>\n","*now":function(r){r(["dojo/i18n!*preload*dojo/nls/tt-rss-layer*[\"ar\",\"ca\",\"cs\",\"da\",\"de\",\"el\",\"en-gb\",\"en-us\",\"es-es\",\"fi-fi\",\"fr-fr\",\"he-il\",\"hu\",\"it-it\",\"ja-jp\",\"ko-kr\",\"nl-nl\",\"nb\",\"pl\",\"pt-br\",\"pt-pt\",\"ru\",\"sk\",\"sl\",\"sv\",\"th\",\"tr\",\"zh-tw\",\"zh-cn\",\"ROOT\"]"]);}}});define("dojo/tt-rss-layer",[],1); \ No newline at end of file
+require({cache:{"dojo/_base/url":function(){define(["./kernel"],function(_1){var _2=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),_3=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),_4=function(){var n=null,_5=arguments,_6=[_5[0]];for(var i=1;i<_5.length;i++){if(!_5[i]){continue;}var _7=new _4(_5[i]+""),_8=new _4(_6[0]+"");if(_7.path==""&&!_7.scheme&&!_7.authority&&!_7.query){if(_7.fragment!=n){_8.fragment=_7.fragment;}_7=_8;}else{if(!_7.scheme){_7.scheme=_8.scheme;if(!_7.authority){_7.authority=_8.authority;if(_7.path.charAt(0)!="/"){var _9=_8.path.substring(0,_8.path.lastIndexOf("/")+1)+_7.path;var _a=_9.split("/");for(var j=0;j<_a.length;j++){if(_a[j]=="."){if(j==_a.length-1){_a[j]="";}else{_a.splice(j,1);j--;}}else{if(j>0&&!(j==1&&_a[0]=="")&&_a[j]==".."&&_a[j-1]!=".."){if(j==(_a.length-1)){_a.splice(j,1);_a[j-1]="";}else{_a.splice(j-1,2);j-=2;}}}}_7.path=_a.join("/");}}}}_6=[];if(_7.scheme){_6.push(_7.scheme,":");}if(_7.authority){_6.push("//",_7.authority);}_6.push(_7.path);if(_7.query){_6.push("?",_7.query);}if(_7.fragment){_6.push("#",_7.fragment);}}this.uri=_6.join("");var r=this.uri.match(_2);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(_3);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};_4.prototype.toString=function(){return this.uri;};return _1._Url=_4;});},"dojo/cache":function(){define(["./_base/kernel","./text"],function(_b){return _b.cache;});},"dojo/text":function(){define(["./_base/kernel","require","./has","./request"],function(_c,_d,_e,_f){var _10;if(1){_10=function(url,_11,_12){_f(url,{sync:!!_11,headers:{"X-Requested-With":null}}).then(_12);};}else{if(_d.getText){_10=_d.getText;}else{console.error("dojo/text plugin failed to load because loader does not support getText");}}var _13={},_14=function(_15){if(_15){_15=_15.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");var _16=_15.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_16){_15=_16[1];}}else{_15="";}return _15;},_17={},_18={};_c.cache=function(_19,url,_1a){var key;if(typeof _19=="string"){if(/\//.test(_19)){key=_19;_1a=url;}else{key=_d.toUrl(_19.replace(/\./g,"/")+(url?("/"+url):""));}}else{key=_19+"";_1a=url;}var val=(_1a!=undefined&&typeof _1a!="string")?_1a.value:_1a,_1b=_1a&&_1a.sanitize;if(typeof val=="string"){_13[key]=val;return _1b?_14(val):val;}else{if(val===null){delete _13[key];return null;}else{if(!(key in _13)){_10(key,true,function(_1c){_13[key]=_1c;});}return _1b?_14(_13[key]):_13[key];}}};return {dynamic:true,normalize:function(id,_1d){var _1e=id.split("!"),url=_1e[0];return (/^\./.test(url)?_1d(url):url)+(_1e[1]?"!"+_1e[1]:"");},load:function(id,_1f,_20){var _21=id.split("!"),_22=_21.length>1,_23=_21[0],url=_1f.toUrl(_21[0]),_24="url:"+url,_25=_17,_26=function(_27){_20(_22?_14(_27):_27);};if(_23 in _13){_25=_13[_23];}else{if(_1f.cache&&_24 in _1f.cache){_25=_1f.cache[_24];}else{if(url in _13){_25=_13[url];}}}if(_25===_17){if(_18[url]){_18[url].push(_26);}else{var _28=_18[url]=[_26];_10(url,!_1f.async,function(_29){_13[_23]=_13[url]=_29;for(var i=0;i<_28.length;){_28[i++](_29);}delete _18[url];});}}else{_26(_25);}}};});},"dojo/request":function(){define(["./request/default!"],function(_2a){return _2a;});},"dojo/request/default":function(){define(["exports","require","../has"],function(_2b,_2c,has){var _2d=has("config-requestProvider"),_2e;if(1||has("host-webworker")){_2e="./xhr";}else{if(0){_2e="./node";}}if(!_2d){_2d=_2e;}_2b.getPlatformDefaultId=function(){return _2e;};_2b.load=function(id,_2f,_30,_31){_2c([id=="platform"?_2e:_2d],function(_32){_30(_32);});};});},"dojo/parser":function(){define(["require","./_base/kernel","./_base/lang","./_base/array","./_base/config","./dom","./_base/window","./_base/url","./aspect","./promise/all","./date/stamp","./Deferred","./has","./query","./on","./ready"],function(_33,_34,_35,_36,_37,dom,_38,_39,_3a,all,_3b,_3c,has,_3d,don,_3e){new Date("X");function _3f(_40){return eval("("+_40+")");};var _41=0;_3a.after(_35,"extend",function(){_41++;},true);function _42(_43){var map=_43._nameCaseMap,_44=_43.prototype;if(!map||map._extendCnt<_41){map=_43._nameCaseMap={};for(var _45 in _44){if(_45.charAt(0)==="_"){continue;}map[_45.toLowerCase()]=_45;}map._extendCnt=_41;}return map;};function _46(_47,_48){if(!_48){_48=_33;}var _49=_48._dojoParserCtorMap||(_48._dojoParserCtorMap={});var ts=_47.join();if(!_49[ts]){var _4a=[];for(var i=0,l=_47.length;i<l;i++){var t=_47[i];_4a[_4a.length]=(_49[t]=_49[t]||(_35.getObject(t)||(~t.indexOf("/")&&_48(t))));}var _4b=_4a.shift();_49[ts]=_4a.length?(_4b.createSubclass?_4b.createSubclass(_4a):_4b.extend.apply(_4b,_4a)):_4b;}return _49[ts];};var _4c={_clearCache:function(){_41++;_ctorMap={};},_functionFromScript:function(_4d,_4e){var _4f="",_50="",_51=(_4d.getAttribute(_4e+"args")||_4d.getAttribute("args")),_52=_4d.getAttribute("with");var _53=(_51||"").split(/\s*,\s*/);if(_52&&_52.length){_36.forEach(_52.split(/\s*,\s*/),function(_54){_4f+="with("+_54+"){";_50+="}";});}return new Function(_53,_4f+_4d.innerHTML+_50);},instantiate:function(_55,_56,_57){_56=_56||{};_57=_57||{};var _58=(_57.scope||_34._scopeName)+"Type",_59="data-"+(_57.scope||_34._scopeName)+"-",_5a=_59+"type",_5b=_59+"mixins";var _5c=[];_36.forEach(_55,function(_5d){var _5e=_58 in _56?_56[_58]:_5d.getAttribute(_5a)||_5d.getAttribute(_58);if(_5e){var _5f=_5d.getAttribute(_5b),_60=_5f?[_5e].concat(_5f.split(/\s*,\s*/)):[_5e];_5c.push({node:_5d,types:_60});}});return this._instantiate(_5c,_56,_57);},_instantiate:function(_61,_62,_63,_64){var _65=_36.map(_61,function(obj){var _66=obj.ctor||_46(obj.types,_63.contextRequire);if(!_66){throw new Error("Unable to resolve constructor for: '"+obj.types.join()+"'");}return this.construct(_66,obj.node,_62,_63,obj.scripts,obj.inherited);},this);function _67(_68){if(!_62._started&&!_63.noStart){_36.forEach(_68,function(_69){if(typeof _69.startup==="function"&&!_69._started){_69.startup();}});}return _68;};if(_64){return all(_65).then(_67);}else{return _67(_65);}},construct:function(_6a,_6b,_6c,_6d,_6e,_6f){var _70=_6a&&_6a.prototype;_6d=_6d||{};var _71={};if(_6d.defaults){_35.mixin(_71,_6d.defaults);}if(_6f){_35.mixin(_71,_6f);}var _72;if(has("dom-attributes-explicit")){_72=_6b.attributes;}else{if(has("dom-attributes-specified-flag")){_72=_36.filter(_6b.attributes,function(a){return a.specified;});}else{var _73=/^input$|^img$/i.test(_6b.nodeName)?_6b:_6b.cloneNode(false),_74=_73.outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g,"").replace(/^\s*<[a-zA-Z0-9]*\s*/,"").replace(/\s*>.*$/,"");_72=_36.map(_74.split(/\s+/),function(_75){var _76=_75.toLowerCase();return {name:_75,value:(_6b.nodeName=="LI"&&_75=="value")||_76=="enctype"?_6b.getAttribute(_76):_6b.getAttributeNode(_76).value};});}}var _77=_6d.scope||_34._scopeName,_78="data-"+_77+"-",_79={};if(_77!=="dojo"){_79[_78+"props"]="data-dojo-props";_79[_78+"type"]="data-dojo-type";_79[_78+"mixins"]="data-dojo-mixins";_79[_77+"type"]="dojotype";_79[_78+"id"]="data-dojo-id";}var i=0,_7a,_7b=[],_7c,_7d;while(_7a=_72[i++]){var _7e=_7a.name,_7f=_7e.toLowerCase(),_80=_7a.value;switch(_79[_7f]||_7f){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":_7d=_80;break;case "data-dojo-id":case "jsid":_7c=_80;break;case "data-dojo-attach-point":case "dojoattachpoint":_71.dojoAttachPoint=_80;break;case "data-dojo-attach-event":case "dojoattachevent":_71.dojoAttachEvent=_80;break;case "class":_71["class"]=_6b.className;break;case "style":_71["style"]=_6b.style&&_6b.style.cssText;break;default:if(!(_7e in _70)){var map=_42(_6a);_7e=map[_7f]||_7e;}if(_7e in _70){switch(typeof _70[_7e]){case "string":_71[_7e]=_80;break;case "number":_71[_7e]=_80.length?Number(_80):NaN;break;case "boolean":_71[_7e]=_80.toLowerCase()!="false";break;case "function":if(_80===""||_80.search(/[^\w\.]+/i)!=-1){_71[_7e]=new Function(_80);}else{_71[_7e]=_35.getObject(_80,false)||new Function(_80);}_7b.push(_7e);break;default:var _81=_70[_7e];_71[_7e]=(_81&&"length" in _81)?(_80?_80.split(/\s*,\s*/):[]):(_81 instanceof Date)?(_80==""?new Date(""):_80=="now"?new Date():_3b.fromISOString(_80)):(_81 instanceof _39)?(_34.baseUrl+_80):_3f(_80);}}else{_71[_7e]=_80;}}}for(var j=0;j<_7b.length;j++){var _82=_7b[j].toLowerCase();_6b.removeAttribute(_82);_6b[_82]=null;}if(_7d){try{_7d=_3f.call(_6d.propsThis,"{"+_7d+"}");_35.mixin(_71,_7d);}catch(e){throw new Error(e.toString()+" in data-dojo-props='"+_7d+"'");}}_35.mixin(_71,_6c);if(!_6e){_6e=(_6a&&(_6a._noScript||_70._noScript)?[]:_3d("> script[type^='dojo/']",_6b));}var _83=[],_84=[],_85=[],ons=[];if(_6e){for(i=0;i<_6e.length;i++){var _86=_6e[i];_6b.removeChild(_86);var _87=(_86.getAttribute(_78+"event")||_86.getAttribute("event")),_88=_86.getAttribute(_78+"prop"),_89=_86.getAttribute(_78+"method"),_8a=_86.getAttribute(_78+"advice"),_8b=_86.getAttribute("type"),nf=this._functionFromScript(_86,_78);if(_87){if(_8b=="dojo/connect"){_83.push({method:_87,func:nf});}else{if(_8b=="dojo/on"){ons.push({event:_87,func:nf});}else{_71[_87]=nf;}}}else{if(_8b=="dojo/aspect"){_83.push({method:_89,advice:_8a,func:nf});}else{if(_8b=="dojo/watch"){_85.push({prop:_88,func:nf});}else{_84.push(nf);}}}}}var _8c=_6a.markupFactory||_70.markupFactory;var _8d=_8c?_8c(_71,_6b,_6a):new _6a(_71,_6b);function _8e(_8f){if(_7c){_35.setObject(_7c,_8f);}for(i=0;i<_83.length;i++){_3a[_83[i].advice||"after"](_8f,_83[i].method,_35.hitch(_8f,_83[i].func),true);}for(i=0;i<_84.length;i++){_84[i].call(_8f);}for(i=0;i<_85.length;i++){_8f.watch(_85[i].prop,_85[i].func);}for(i=0;i<ons.length;i++){don(_8f,ons[i].event,ons[i].func);}return _8f;};if(_8d.then){return _8d.then(_8e);}else{return _8e(_8d);}},scan:function(_90,_91){var _92=[],_93=[],_94={};var _95=(_91.scope||_34._scopeName)+"Type",_96="data-"+(_91.scope||_34._scopeName)+"-",_97=_96+"type",_98=_96+"textdir",_99=_96+"mixins";var _9a=_90.firstChild;var _9b=_91.inherited;if(!_9b){function _9c(_9d,_9e){return (_9d.getAttribute&&_9d.getAttribute(_9e))||(_9d.parentNode&&_9c(_9d.parentNode,_9e));};_9b={dir:_9c(_90,"dir"),lang:_9c(_90,"lang"),textDir:_9c(_90,_98)};for(var key in _9b){if(!_9b[key]){delete _9b[key];}}}var _9f={inherited:_9b};var _a0;var _a1;function _a2(_a3){if(!_a3.inherited){_a3.inherited={};var _a4=_a3.node,_a5=_a2(_a3.parent);var _a6={dir:_a4.getAttribute("dir")||_a5.dir,lang:_a4.getAttribute("lang")||_a5.lang,textDir:_a4.getAttribute(_98)||_a5.textDir};for(var key in _a6){if(_a6[key]){_a3.inherited[key]=_a6[key];}}}return _a3.inherited;};while(true){if(!_9a){if(!_9f||!_9f.node){break;}_9a=_9f.node.nextSibling;_a1=false;_9f=_9f.parent;_a0=_9f.scripts;continue;}if(_9a.nodeType!=1){_9a=_9a.nextSibling;continue;}if(_a0&&_9a.nodeName.toLowerCase()=="script"){_a7=_9a.getAttribute("type");if(_a7&&/^dojo\/\w/i.test(_a7)){_a0.push(_9a);}_9a=_9a.nextSibling;continue;}if(_a1){_9a=_9a.nextSibling;continue;}var _a7=_9a.getAttribute(_97)||_9a.getAttribute(_95);var _a8=_9a.firstChild;if(!_a7&&(!_a8||(_a8.nodeType==3&&!_a8.nextSibling))){_9a=_9a.nextSibling;continue;}var _a9;var _aa=null;if(_a7){var _ab=_9a.getAttribute(_99),_ac=_ab?[_a7].concat(_ab.split(/\s*,\s*/)):[_a7];try{_aa=_46(_ac,_91.contextRequire);}catch(e){}if(!_aa){_36.forEach(_ac,function(t){if(~t.indexOf("/")&&!_94[t]){_94[t]=true;_93[_93.length]=t;}});}var _ad=_aa&&!_aa.prototype._noScript?[]:null;_a9={types:_ac,ctor:_aa,parent:_9f,node:_9a,scripts:_ad};_a9.inherited=_a2(_a9);_92.push(_a9);}else{_a9={node:_9a,scripts:_a0,parent:_9f};}_a0=_ad;_a1=_9a.stopParser||(_aa&&_aa.prototype.stopParser&&!(_91.template));_9f=_a9;_9a=_a8;}var d=new _3c();if(_93.length){if(has("dojo-debug-messages")){console.warn("WARNING: Modules being Auto-Required: "+_93.join(", "));}var r=_91.contextRequire||_33;r(_93,function(){d.resolve(_36.filter(_92,function(_ae){if(!_ae.ctor){try{_ae.ctor=_46(_ae.types,_91.contextRequire);}catch(e){}}var _af=_ae.parent;while(_af&&!_af.types){_af=_af.parent;}var _b0=_ae.ctor&&_ae.ctor.prototype;_ae.instantiateChildren=!(_b0&&_b0.stopParser&&!(_91.template));_ae.instantiate=!_af||(_af.instantiate&&_af.instantiateChildren);return _ae.instantiate;}));});}else{d.resolve(_92);}return d.promise;},_require:function(_b1,_b2){var _b3=_3f("{"+_b1.innerHTML+"}"),_b4=[],_b5=[],d=new _3c();var _b6=(_b2&&_b2.contextRequire)||_33;for(var _b7 in _b3){_b4.push(_b7);_b5.push(_b3[_b7]);}_b6(_b5,function(){for(var i=0;i<_b4.length;i++){_35.setObject(_b4[i],arguments[i]);}d.resolve(arguments);});return d.promise;},_scanAmd:function(_b8,_b9){var _ba=new _3c(),_bb=_ba.promise;_ba.resolve(true);var _bc=this;_3d("script[type='dojo/require']",_b8).forEach(function(_bd){_bb=_bb.then(function(){return _bc._require(_bd,_b9);});_bd.parentNode.removeChild(_bd);});return _bb;},parse:function(_be,_bf){if(_be&&typeof _be!="string"&&!("nodeType" in _be)){_bf=_be;_be=_bf.rootNode;}var _c0=_be?dom.byId(_be):_38.body();_bf=_bf||{};var _c1=_bf.template?{template:true}:{},_c2=[],_c3=this;var p=this._scanAmd(_c0,_bf).then(function(){return _c3.scan(_c0,_bf);}).then(function(_c4){return _c3._instantiate(_c4,_c1,_bf,true);}).then(function(_c5){return _c2=_c2.concat(_c5);}).otherwise(function(e){console.error("dojo/parser::parse() error",e);throw e;});_35.mixin(_c2,p);return _c2;}};if(1){_34.parser=_4c;}if(_37.parseOnLoad){_3e(100,_4c,"parse");}return _4c;});},"dojo/promise/all":function(){define(["../_base/array","../_base/lang","../Deferred","../when"],function(_c6,_c7,_c8,_c9){"use strict";var _ca=_c6.some;return function all(_cb){var _cc,_c6;if(_c7.isArray(_cb)){_c6=_cb;}else{if(_cb&&typeof _cb==="object"){_cc=_cb;}}var _cd;var _ce=[];if(_cc){_c6=[];for(var key in _cc){if(Object.hasOwnProperty.call(_cc,key)){_ce.push(key);_c6.push(_cc[key]);}}_cd={};}else{if(_c6){_cd=[];}}if(!_c6||!_c6.length){return new _c8().resolve(_cd);}var _cf=new _c8();_cf.promise.always(function(){_cd=_ce=null;});var _d0=_c6.length;_ca(_c6,function(_d1,_d2){if(!_cc){_ce.push(_d2);}_c9(_d1,function(_d3){if(!_cf.isFulfilled()){_cd[_ce[_d2]]=_d3;if(--_d0===0){_cf.resolve(_cd);}}},_cf.reject);return _cf.isFulfilled();});return _cf.promise;};});},"dojo/date/stamp":function(){define(["../_base/lang","../_base/array"],function(_d4,_d5){var _d6={};_d4.setObject("dojo.date.stamp",_d6);_d6.fromISOString=function(_d7,_d8){if(!_d6._isoRegExp){_d6._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;}var _d9=_d6._isoRegExp.exec(_d7),_da=null;if(_d9){_d9.shift();if(_d9[1]){_d9[1]--;}if(_d9[6]){_d9[6]*=1000;}if(_d8){_d8=new Date(_d8);_d5.forEach(_d5.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(_db){return _d8["get"+_db]();}),function(_dc,_dd){_d9[_dd]=_d9[_dd]||_dc;});}_da=new Date(_d9[0]||1970,_d9[1]||0,_d9[2]||1,_d9[3]||0,_d9[4]||0,_d9[5]||0,_d9[6]||0);if(_d9[0]<100){_da.setFullYear(_d9[0]||1970);}var _de=0,_df=_d9[7]&&_d9[7].charAt(0);if(_df!="Z"){_de=((_d9[8]||0)*60)+(Number(_d9[9])||0);if(_df!="-"){_de*=-1;}}if(_df){_de-=_da.getTimezoneOffset();}if(_de){_da.setTime(_da.getTime()+_de*60000);}}return _da;};_d6.toISOString=function(_e0,_e1){var _e2=function(n){return (n<10)?"0"+n:n;};_e1=_e1||{};var _e3=[],_e4=_e1.zulu?"getUTC":"get",_e5="";if(_e1.selector!="time"){var _e6=_e0[_e4+"FullYear"]();_e5=["0000".substr((_e6+"").length)+_e6,_e2(_e0[_e4+"Month"]()+1),_e2(_e0[_e4+"Date"]())].join("-");}_e3.push(_e5);if(_e1.selector!="date"){var _e7=[_e2(_e0[_e4+"Hours"]()),_e2(_e0[_e4+"Minutes"]()),_e2(_e0[_e4+"Seconds"]())].join(":");var _e8=_e0[_e4+"Milliseconds"]();if(_e1.milliseconds){_e7+="."+(_e8<100?"0":"")+_e2(_e8);}if(_e1.zulu){_e7+="Z";}else{if(_e1.selector!="time"){var _e9=_e0.getTimezoneOffset();var _ea=Math.abs(_e9);_e7+=(_e9>0?"-":"+")+_e2(Math.floor(_ea/60))+":"+_e2(_ea%60);}}_e3.push(_e7);}return _e3.join("T");};return _d6;});},"dojo/node":function(){define(["./_base/kernel","./has","require"],function(_eb,has,_ec){var _ed=_eb.global.require&&_eb.global.require.nodeRequire;if(!_ed){throw new Error("Cannot find the Node.js require");}var _ee=_ed("module");return {load:function(id,_ef,_f0){if(_ee._findPath&&_ee._nodeModulePaths){var _f1=_ee._findPath(id,_ee._nodeModulePaths(_ef.toUrl(".")));if(_f1!==false){id=_f1;}}var _f2=define,_f3;define=undefined;try{_f3=_ed(id);}finally{define=_f2;}_f0(_f3);},normalize:function(id,_f4){if(id.charAt(0)==="."){id=_ec.toUrl(_f4("./"+id));}return id;}};});},"dojo/data/ItemFileWriteStore":function(){define(["../_base/lang","../_base/declare","../_base/array","../_base/json","../_base/kernel","./ItemFileReadStore","../date/stamp"],function(_f5,_f6,_f7,_f8,_f9,_fa,_fb){return _f6("dojo.data.ItemFileWriteStore",_fa,{constructor:function(_fc){this._features["dojo.data.api.Write"]=true;this._features["dojo.data.api.Notification"]=true;this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};if(!this._datatypeMap["Date"].serialize){this._datatypeMap["Date"].serialize=function(obj){return _fb.toISOString(obj,{zulu:true});};}if(_fc&&(_fc.referenceIntegrity===false)){this.referenceIntegrity=false;}this._saveInProgress=false;},referenceIntegrity:true,_assert:function(_fd){if(!_fd){throw new Error("assertion failed in ItemFileWriteStore");}},_getIdentifierAttribute:function(){return this.getFeatures()["dojo.data.api.Identity"];},newItem:function(_fe,_ff){this._assert(!this._saveInProgress);if(!this._loadFinished){this._forceLoad();}if(typeof _fe!="object"&&typeof _fe!="undefined"){throw new Error("newItem() was passed something other than an object");}var _100=null;var _101=this._getIdentifierAttribute();if(_101===Number){_100=this._arrayOfAllItems.length;}else{_100=_fe[_101];if(typeof _100==="undefined"){throw new Error("newItem() was not passed an identity for the new item");}if(_f5.isArray(_100)){throw new Error("newItem() was not passed an single-valued identity");}}if(this._itemsByIdentity){this._assert(typeof this._itemsByIdentity[_100]==="undefined");}this._assert(typeof this._pending._newItems[_100]==="undefined");this._assert(typeof this._pending._deletedItems[_100]==="undefined");var _102={};_102[this._storeRefPropName]=this;_102[this._itemNumPropName]=this._arrayOfAllItems.length;if(this._itemsByIdentity){this._itemsByIdentity[_100]=_102;_102[_101]=[_100];}this._arrayOfAllItems.push(_102);var _103=null;if(_ff&&_ff.parent&&_ff.attribute){_103={item:_ff.parent,attribute:_ff.attribute,oldValue:undefined};var _104=this.getValues(_ff.parent,_ff.attribute);if(_104&&_104.length>0){var _105=_104.slice(0,_104.length);if(_104.length===1){_103.oldValue=_104[0];}else{_103.oldValue=_104.slice(0,_104.length);}_105.push(_102);this._setValueOrValues(_ff.parent,_ff.attribute,_105,false);_103.newValue=this.getValues(_ff.parent,_ff.attribute);}else{this._setValueOrValues(_ff.parent,_ff.attribute,_102,false);_103.newValue=_102;}}else{_102[this._rootItemPropName]=true;this._arrayOfTopLevelItems.push(_102);}this._pending._newItems[_100]=_102;for(var key in _fe){if(key===this._storeRefPropName||key===this._itemNumPropName){throw new Error("encountered bug in ItemFileWriteStore.newItem");}var _106=_fe[key];if(!_f5.isArray(_106)){_106=[_106];}_102[key]=_106;if(this.referenceIntegrity){for(var i=0;i<_106.length;i++){var val=_106[i];if(this.isItem(val)){this._addReferenceToMap(val,_102,key);}}}}this.onNew(_102,_103);return _102;},_removeArrayElement:function(_107,_108){var _109=_f7.indexOf(_107,_108);if(_109!=-1){_107.splice(_109,1);return true;}return false;},deleteItem:function(item){this._assert(!this._saveInProgress);this._assertIsItem(item);var _10a=item[this._itemNumPropName];var _10b=this.getIdentity(item);if(this.referenceIntegrity){var _10c=this.getAttributes(item);if(item[this._reverseRefMap]){item["backup_"+this._reverseRefMap]=_f5.clone(item[this._reverseRefMap]);}_f7.forEach(_10c,function(_10d){_f7.forEach(this.getValues(item,_10d),function(_10e){if(this.isItem(_10e)){if(!item["backupRefs_"+this._reverseRefMap]){item["backupRefs_"+this._reverseRefMap]=[];}item["backupRefs_"+this._reverseRefMap].push({id:this.getIdentity(_10e),attr:_10d});this._removeReferenceFromMap(_10e,item,_10d);}},this);},this);var _10f=item[this._reverseRefMap];if(_10f){for(var _110 in _10f){var _111=null;if(this._itemsByIdentity){_111=this._itemsByIdentity[_110];}else{_111=this._arrayOfAllItems[_110];}if(_111){for(var _112 in _10f[_110]){var _113=this.getValues(_111,_112)||[];var _114=_f7.filter(_113,function(_115){return !(this.isItem(_115)&&this.getIdentity(_115)==_10b);},this);this._removeReferenceFromMap(item,_111,_112);if(_114.length<_113.length){this._setValueOrValues(_111,_112,_114,true);}}}}}}this._arrayOfAllItems[_10a]=null;item[this._storeRefPropName]=null;if(this._itemsByIdentity){delete this._itemsByIdentity[_10b];}this._pending._deletedItems[_10b]=item;if(item[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,item);}this.onDelete(item);return true;},setValue:function(item,_116,_117){return this._setValueOrValues(item,_116,_117,true);},setValues:function(item,_118,_119){return this._setValueOrValues(item,_118,_119,true);},unsetAttribute:function(item,_11a){return this._setValueOrValues(item,_11a,[],true);},_setValueOrValues:function(item,_11b,_11c,_11d){this._assert(!this._saveInProgress);this._assertIsItem(item);this._assert(_f5.isString(_11b));this._assert(typeof _11c!=="undefined");var _11e=this._getIdentifierAttribute();if(_11b==_11e){throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier.");}var _11f=this._getValueOrValues(item,_11b);var _120=this.getIdentity(item);if(!this._pending._modifiedItems[_120]){var _121={};for(var key in item){if((key===this._storeRefPropName)||(key===this._itemNumPropName)||(key===this._rootItemPropName)){_121[key]=item[key];}else{if(key===this._reverseRefMap){_121[key]=_f5.clone(item[key]);}else{_121[key]=item[key].slice(0,item[key].length);}}}this._pending._modifiedItems[_120]=_121;}var _122=false;if(_f5.isArray(_11c)&&_11c.length===0){_122=delete item[_11b];_11c=undefined;if(this.referenceIntegrity&&_11f){var _123=_11f;if(!_f5.isArray(_123)){_123=[_123];}for(var i=0;i<_123.length;i++){var _124=_123[i];if(this.isItem(_124)){this._removeReferenceFromMap(_124,item,_11b);}}}}else{var _125;if(_f5.isArray(_11c)){_125=_11c.slice(0,_11c.length);}else{_125=[_11c];}if(this.referenceIntegrity){if(_11f){var _123=_11f;if(!_f5.isArray(_123)){_123=[_123];}var map={};_f7.forEach(_123,function(_126){if(this.isItem(_126)){var id=this.getIdentity(_126);map[id.toString()]=true;}},this);_f7.forEach(_125,function(_127){if(this.isItem(_127)){var id=this.getIdentity(_127);if(map[id.toString()]){delete map[id.toString()];}else{this._addReferenceToMap(_127,item,_11b);}}},this);for(var rId in map){var _128;if(this._itemsByIdentity){_128=this._itemsByIdentity[rId];}else{_128=this._arrayOfAllItems[rId];}this._removeReferenceFromMap(_128,item,_11b);}}else{for(var i=0;i<_125.length;i++){var _124=_125[i];if(this.isItem(_124)){this._addReferenceToMap(_124,item,_11b);}}}}item[_11b]=_125;_122=true;}if(_11d){this.onSet(item,_11b,_11f,_11c);}return _122;},_addReferenceToMap:function(_129,_12a,_12b){var _12c=this.getIdentity(_12a);var _12d=_129[this._reverseRefMap];if(!_12d){_12d=_129[this._reverseRefMap]={};}var _12e=_12d[_12c];if(!_12e){_12e=_12d[_12c]={};}_12e[_12b]=true;},_removeReferenceFromMap:function(_12f,_130,_131){var _132=this.getIdentity(_130);var _133=_12f[this._reverseRefMap];var _134;if(_133){for(_134 in _133){if(_134==_132){delete _133[_134][_131];if(this._isEmpty(_133[_134])){delete _133[_134];}}}if(this._isEmpty(_133)){delete _12f[this._reverseRefMap];}}},_dumpReferenceMap:function(){var i;for(i=0;i<this._arrayOfAllItems.length;i++){var item=this._arrayOfAllItems[i];if(item&&item[this._reverseRefMap]){}}},_getValueOrValues:function(item,_135){var _136=undefined;if(this.hasAttribute(item,_135)){var _137=this.getValues(item,_135);if(_137.length==1){_136=_137[0];}else{_136=_137;}}return _136;},_flatten:function(_138){if(this.isItem(_138)){return {_reference:this.getIdentity(_138)};}else{if(typeof _138==="object"){for(var type in this._datatypeMap){var _139=this._datatypeMap[type];if(_f5.isObject(_139)&&!_f5.isFunction(_139)){if(_138 instanceof _139.type){if(!_139.serialize){throw new Error("ItemFileWriteStore: No serializer defined for type mapping: ["+type+"]");}return {_type:type,_value:_139.serialize(_138)};}}else{if(_138 instanceof _139){return {_type:type,_value:_138.toString()};}}}}return _138;}},_getNewFileContentString:function(){var _13a={};var _13b=this._getIdentifierAttribute();if(_13b!==Number){_13a.identifier=_13b;}if(this._labelAttr){_13a.label=this._labelAttr;}_13a.items=[];for(var i=0;i<this._arrayOfAllItems.length;++i){var item=this._arrayOfAllItems[i];if(item!==null){var _13c={};for(var key in item){if(key!==this._storeRefPropName&&key!==this._itemNumPropName&&key!==this._reverseRefMap&&key!==this._rootItemPropName){var _13d=this.getValues(item,key);if(_13d.length==1){_13c[key]=this._flatten(_13d[0]);}else{var _13e=[];for(var j=0;j<_13d.length;++j){_13e.push(this._flatten(_13d[j]));_13c[key]=_13e;}}}}_13a.items.push(_13c);}}var _13f=true;return _f8.toJson(_13a,_13f);},_isEmpty:function(_140){var _141=true;if(_f5.isObject(_140)){var i;for(i in _140){_141=false;break;}}else{if(_f5.isArray(_140)){if(_140.length>0){_141=false;}}}return _141;},save:function(_142){this._assert(!this._saveInProgress);this._saveInProgress=true;var self=this;var _143=function(){self._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};self._saveInProgress=false;if(_142&&_142.onComplete){var _144=_142.scope||_f9.global;_142.onComplete.call(_144);}};var _145=function(err){self._saveInProgress=false;if(_142&&_142.onError){var _146=_142.scope||_f9.global;_142.onError.call(_146,err);}};if(this._saveEverything){var _147=this._getNewFileContentString();this._saveEverything(_143,_145,_147);}if(this._saveCustom){this._saveCustom(_143,_145);}if(!this._saveEverything&&!this._saveCustom){_143();}},revert:function(){this._assert(!this._saveInProgress);var _148;for(_148 in this._pending._modifiedItems){var _149=this._pending._modifiedItems[_148];var _14a=null;if(this._itemsByIdentity){_14a=this._itemsByIdentity[_148];}else{_14a=this._arrayOfAllItems[_148];}_149[this._storeRefPropName]=this;for(var key in _14a){delete _14a[key];}_f5.mixin(_14a,_149);}var _14b;for(_148 in this._pending._deletedItems){_14b=this._pending._deletedItems[_148];_14b[this._storeRefPropName]=this;var _14c=_14b[this._itemNumPropName];if(_14b["backup_"+this._reverseRefMap]){_14b[this._reverseRefMap]=_14b["backup_"+this._reverseRefMap];delete _14b["backup_"+this._reverseRefMap];}this._arrayOfAllItems[_14c]=_14b;if(this._itemsByIdentity){this._itemsByIdentity[_148]=_14b;}if(_14b[this._rootItemPropName]){this._arrayOfTopLevelItems.push(_14b);}}for(_148 in this._pending._deletedItems){_14b=this._pending._deletedItems[_148];if(_14b["backupRefs_"+this._reverseRefMap]){_f7.forEach(_14b["backupRefs_"+this._reverseRefMap],function(_14d){var _14e;if(this._itemsByIdentity){_14e=this._itemsByIdentity[_14d.id];}else{_14e=this._arrayOfAllItems[_14d.id];}this._addReferenceToMap(_14e,_14b,_14d.attr);},this);delete _14b["backupRefs_"+this._reverseRefMap];}}for(_148 in this._pending._newItems){var _14f=this._pending._newItems[_148];_14f[this._storeRefPropName]=null;this._arrayOfAllItems[_14f[this._itemNumPropName]]=null;if(_14f[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_14f);}if(this._itemsByIdentity){delete this._itemsByIdentity[_148];}}this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};return true;},isDirty:function(item){if(item){var _150=this.getIdentity(item);return new Boolean(this._pending._newItems[_150]||this._pending._modifiedItems[_150]||this._pending._deletedItems[_150]).valueOf();}else{return !this._isEmpty(this._pending._newItems)||!this._isEmpty(this._pending._modifiedItems)||!this._isEmpty(this._pending._deletedItems);}},onSet:function(item,_151,_152,_153){},onNew:function(_154,_155){},onDelete:function(_156){},close:function(_157){if(this.clearOnClose){if(!this.isDirty()){this.inherited(arguments);}else{throw new Error("dojo.data.ItemFileWriteStore: There are unsaved changes present in the store. Please save or revert the changes before invoking close.");}}}});});},"dojo/data/ItemFileReadStore":function(){define(["../_base/kernel","../_base/lang","../_base/declare","../_base/array","../_base/xhr","../Evented","./util/filter","./util/simpleFetch","../date/stamp"],function(_158,lang,_159,_15a,xhr,_15b,_15c,_15d,_15e){var _15f=_159("dojo.data.ItemFileReadStore",[_15b],{constructor:function(_160){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_160.url;this._ccUrl=_160.url;this.url=_160.url;this._jsonData=_160.data;this.data=null;this._datatypeMap=_160.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_161){return _15e.fromISOString(_161);}};}this._features={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};this._itemsByIdentity=null;this._storeRefPropName="_S";this._itemNumPropName="_0";this._rootItemPropName="_RI";this._reverseRefMap="_RRM";this._loadInProgress=false;this._queuedFetches=[];if(_160.urlPreventCache!==undefined){this.urlPreventCache=_160.urlPreventCache?true:false;}if(_160.hierarchical!==undefined){this.hierarchical=_160.hierarchical?true:false;}if(_160.clearOnClose){this.clearOnClose=true;}if("failOk" in _160){this.failOk=_160.failOk?true:false;}},url:"",_ccUrl:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,failOk:false,hierarchical:true,_assertIsItem:function(item){if(!this.isItem(item)){throw new Error(this.declaredClass+": Invalid item argument.");}},_assertIsAttribute:function(_162){if(typeof _162!=="string"){throw new Error(this.declaredClass+": Invalid attribute argument.");}},getValue:function(item,_163,_164){var _165=this.getValues(item,_163);return (_165.length>0)?_165[0]:_164;},getValues:function(item,_166){this._assertIsItem(item);this._assertIsAttribute(_166);return (item[_166]||[]).slice(0);},getAttributes:function(item){this._assertIsItem(item);var _167=[];for(var key in item){if((key!==this._storeRefPropName)&&(key!==this._itemNumPropName)&&(key!==this._rootItemPropName)&&(key!==this._reverseRefMap)){_167.push(key);}}return _167;},hasAttribute:function(item,_168){this._assertIsItem(item);this._assertIsAttribute(_168);return (_168 in item);},containsValue:function(item,_169,_16a){var _16b=undefined;if(typeof _16a==="string"){_16b=_15c.patternToRegExp(_16a,false);}return this._containsValue(item,_169,_16a,_16b);},_containsValue:function(item,_16c,_16d,_16e){return _15a.some(this.getValues(item,_16c),function(_16f){if(_16f!==null&&!lang.isObject(_16f)&&_16e){if(_16f.toString().match(_16e)){return true;}}else{if(_16d===_16f){return true;}}});},isItem:function(_170){if(_170&&_170[this._storeRefPropName]===this){if(this._arrayOfAllItems[_170[this._itemNumPropName]]===_170){return true;}}return false;},isItemLoaded:function(_171){return this.isItem(_171);},loadItem:function(_172){this._assertIsItem(_172.item);},getFeatures:function(){return this._features;},getLabel:function(item){if(this._labelAttr&&this.isItem(item)){return this.getValue(item,this._labelAttr);}return undefined;},getLabelAttributes:function(item){if(this._labelAttr){return [this._labelAttr];}return null;},filter:function(_173,_174,_175){var _176=[],i,key;if(_173.query){var _177,_178=_173.queryOptions?_173.queryOptions.ignoreCase:false;var _179={};for(key in _173.query){_177=_173.query[key];if(typeof _177==="string"){_179[key]=_15c.patternToRegExp(_177,_178);}else{if(_177 instanceof RegExp){_179[key]=_177;}}}for(i=0;i<_174.length;++i){var _17a=true;var _17b=_174[i];if(_17b===null){_17a=false;}else{for(key in _173.query){_177=_173.query[key];if(!this._containsValue(_17b,key,_177,_179[key])){_17a=false;}}}if(_17a){_176.push(_17b);}}_175(_176,_173);}else{for(i=0;i<_174.length;++i){var item=_174[i];if(item!==null){_176.push(item);}}_175(_176,_173);}},_fetchItems:function(_17c,_17d,_17e){var self=this;if(this._loadFinished){this.filter(_17c,this._getItemsArray(_17c.queryOptions),_17d);}else{if(this._jsonFileUrl!==this._ccUrl){_158.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_17c,filter:lang.hitch(self,"filter"),findCallback:lang.hitch(self,_17d)});}else{this._loadInProgress=true;var _17f={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _180=xhr.get(_17f);_180.addCallback(function(data){try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;self.filter(_17c,self._getItemsArray(_17c.queryOptions),_17d);self._handleQueuedFetches();}catch(e){self._loadFinished=true;self._loadInProgress=false;_17e(e,_17c);}});_180.addErrback(function(_181){self._loadInProgress=false;_17e(_181,_17c);});var _182=null;if(_17c.abort){_182=_17c.abort;}_17c.abort=function(){var df=_180;if(df&&df.fired===-1){df.cancel();df=null;}if(_182){_182.call(_17c);}};}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;self.filter(_17c,this._getItemsArray(_17c.queryOptions),_17d);}catch(e){_17e(e,_17c);}}else{_17e(new Error(this.declaredClass+": No JSON source data was provided as either URL or a nested Javascript object."),_17c);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i<this._queuedFetches.length;i++){var _183=this._queuedFetches[i],_184=_183.args,_185=_183.filter,_186=_183.findCallback;if(_185){_185(_184,this._getItemsArray(_184.queryOptions),_186);}else{this.fetchItemByIdentity(_184);}}this._queuedFetches=[];}},_getItemsArray:function(_187){if(_187&&_187.deep){return this._arrayOfAllItems;}return this._arrayOfTopLevelItems;},close:function(_188){if(this.clearOnClose&&this._loadFinished&&!this._loadInProgress){if(((this._jsonFileUrl==""||this._jsonFileUrl==null)&&(this.url==""||this.url==null))&&this.data==null){}this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._itemsByIdentity=null;this._loadInProgress=false;this._queuedFetches=[];}},_getItemsFromLoadedData:function(_189){var _18a=false,self=this;function _18b(_18c){return (_18c!==null)&&(typeof _18c==="object")&&(!lang.isArray(_18c)||_18a)&&(!lang.isFunction(_18c))&&(_18c.constructor==Object||lang.isArray(_18c))&&(typeof _18c._reference==="undefined")&&(typeof _18c._type==="undefined")&&(typeof _18c._value==="undefined")&&self.hierarchical;};function _18d(_18e){self._arrayOfAllItems.push(_18e);for(var _18f in _18e){var _190=_18e[_18f];if(_190){if(lang.isArray(_190)){var _191=_190;for(var k=0;k<_191.length;++k){var _192=_191[k];if(_18b(_192)){_18d(_192);}}}else{if(_18b(_190)){_18d(_190);}}}}};this._labelAttr=_189.label;var i,item;this._arrayOfAllItems=[];this._arrayOfTopLevelItems=_189.items;for(i=0;i<this._arrayOfTopLevelItems.length;++i){item=this._arrayOfTopLevelItems[i];if(lang.isArray(item)){_18a=true;}_18d(item);item[this._rootItemPropName]=true;}var _193={},key;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){if(key!==this._rootItemPropName){var _194=item[key];if(_194!==null){if(!lang.isArray(_194)){item[key]=[_194];}}else{item[key]=[null];}}_193[key]=key;}}while(_193[this._storeRefPropName]){this._storeRefPropName+="_";}while(_193[this._itemNumPropName]){this._itemNumPropName+="_";}while(_193[this._reverseRefMap]){this._reverseRefMap+="_";}var _195;var _196=_189.identifier;if(_196){this._itemsByIdentity={};this._features["dojo.data.api.Identity"]=_196;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];_195=item[_196];var _197=_195[0];if(!Object.hasOwnProperty.call(this._itemsByIdentity,_197)){this._itemsByIdentity[_197]=item;}else{if(this._jsonFileUrl){throw new Error(this.declaredClass+": The json data as specified by: ["+this._jsonFileUrl+"] is malformed. Items within the list have identifier: ["+_196+"]. Value collided: ["+_197+"]");}else{if(this._jsonData){throw new Error(this.declaredClass+": The json data provided by the creation arguments is malformed. Items within the list have identifier: ["+_196+"]. Value collided: ["+_197+"]");}}}}}else{this._features["dojo.data.api.Identity"]=Number;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];item[this._storeRefPropName]=this;item[this._itemNumPropName]=i;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){_195=item[key];for(var j=0;j<_195.length;++j){_194=_195[j];if(_194!==null&&typeof _194=="object"){if(("_type" in _194)&&("_value" in _194)){var type=_194._type;var _198=this._datatypeMap[type];if(!_198){throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '"+type+"'");}else{if(lang.isFunction(_198)){_195[j]=new _198(_194._value);}else{if(lang.isFunction(_198.deserialize)){_195[j]=_198.deserialize(_194._value);}else{throw new Error("dojo.data.ItemFileReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function");}}}}if(_194._reference){var _199=_194._reference;if(!lang.isObject(_199)){_195[j]=this._getItemByIdentity(_199);}else{for(var k=0;k<this._arrayOfAllItems.length;++k){var _19a=this._arrayOfAllItems[k],_19b=true;for(var _19c in _199){if(_19a[_19c]!=_199[_19c]){_19b=false;}}if(_19b){_195[j]=_19a;}}}if(this.referenceIntegrity){var _19d=_195[j];if(this.isItem(_19d)){this._addReferenceToMap(_19d,item,key);}}}else{if(this.isItem(_194)){if(this.referenceIntegrity){this._addReferenceToMap(_194,item,key);}}}}}}}},_addReferenceToMap:function(_19e,_19f,_1a0){},getIdentity:function(item){var _1a1=this._features["dojo.data.api.Identity"];if(_1a1===Number){return item[this._itemNumPropName];}else{var _1a2=item[_1a1];if(_1a2){return _1a2[0];}}return null;},fetchItemByIdentity:function(_1a3){var item,_1a4;if(!this._loadFinished){var self=this;if(this._jsonFileUrl!==this._ccUrl){_158.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null&&this._jsonData==null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_1a3});}else{this._loadInProgress=true;var _1a5={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _1a6=xhr.get(_1a5);_1a6.addCallback(function(data){var _1a7=_1a3.scope?_1a3.scope:_158.global;try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;item=self._getItemByIdentity(_1a3.identity);if(_1a3.onItem){_1a3.onItem.call(_1a7,item);}self._handleQueuedFetches();}catch(error){self._loadInProgress=false;if(_1a3.onError){_1a3.onError.call(_1a7,error);}}});_1a6.addErrback(function(_1a8){self._loadInProgress=false;if(_1a3.onError){var _1a9=_1a3.scope?_1a3.scope:_158.global;_1a3.onError.call(_1a9,_1a8);}});}}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;item=self._getItemByIdentity(_1a3.identity);if(_1a3.onItem){_1a4=_1a3.scope?_1a3.scope:_158.global;_1a3.onItem.call(_1a4,item);}}}}else{item=this._getItemByIdentity(_1a3.identity);if(_1a3.onItem){_1a4=_1a3.scope?_1a3.scope:_158.global;_1a3.onItem.call(_1a4,item);}}},_getItemByIdentity:function(_1aa){var item=null;if(this._itemsByIdentity){if(Object.hasOwnProperty.call(this._itemsByIdentity,_1aa)){item=this._itemsByIdentity[_1aa];}}else{if(Object.hasOwnProperty.call(this._arrayOfAllItems,_1aa)){item=this._arrayOfAllItems[_1aa];}}if(item===undefined){item=null;}return item;},getIdentityAttributes:function(item){var _1ab=this._features["dojo.data.api.Identity"];if(_1ab===Number){return null;}else{return [_1ab];}},_forceLoad:function(){var self=this;if(this._jsonFileUrl!==this._ccUrl){_158.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){var _1ac={url:this._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk,sync:true};var _1ad=xhr.get(_1ac);_1ad.addCallback(function(data){try{if(self._loadInProgress!==true&&!self._loadFinished){self._getItemsFromLoadedData(data);self._loadFinished=true;}else{if(self._loadInProgress){throw new Error(this.declaredClass+": Unable to perform a synchronous load, an async load is in progress.");}}}catch(e){throw e;}});_1ad.addErrback(function(_1ae){throw _1ae;});}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;}}}});lang.extend(_15f,_15d);return _15f;});},"dojo/data/util/filter":function(){define(["../../_base/lang"],function(lang){var _1af={};lang.setObject("dojo.data.util.filter",_1af);_1af.patternToRegExp=function(_1b0,_1b1){var rxp="^";var c=null;for(var i=0;i<_1b0.length;i++){c=_1b0.charAt(i);switch(c){case "\\":rxp+=c;i++;rxp+=_1b0.charAt(i);break;case "*":rxp+=".*";break;case "?":rxp+=".";break;case "$":case "^":case "/":case "+":case ".":case "|":case "(":case ")":case "{":case "}":case "[":case "]":rxp+="\\";default:rxp+=c;}}rxp+="$";if(_1b1){return new RegExp(rxp,"mi");}else{return new RegExp(rxp,"m");}};return _1af;});},"dojo/data/util/simpleFetch":function(){define(["../../_base/lang","../../_base/kernel","./sorter"],function(lang,_1b2,_1b3){var _1b4={};lang.setObject("dojo.data.util.simpleFetch",_1b4);_1b4.errorHandler=function(_1b5,_1b6){if(_1b6.onError){var _1b7=_1b6.scope||_1b2.global;_1b6.onError.call(_1b7,_1b5,_1b6);}};_1b4.fetchHandler=function(_1b8,_1b9){var _1ba=_1b9.abort||null,_1bb=false,_1bc=_1b9.start?_1b9.start:0,_1bd=(_1b9.count&&(_1b9.count!==Infinity))?(_1bc+_1b9.count):_1b8.length;_1b9.abort=function(){_1bb=true;if(_1ba){_1ba.call(_1b9);}};var _1be=_1b9.scope||_1b2.global;if(!_1b9.store){_1b9.store=this;}if(_1b9.onBegin){_1b9.onBegin.call(_1be,_1b8.length,_1b9);}if(_1b9.sort){_1b8.sort(_1b3.createSortFunction(_1b9.sort,this));}if(_1b9.onItem){for(var i=_1bc;(i<_1b8.length)&&(i<_1bd);++i){var item=_1b8[i];if(!_1bb){_1b9.onItem.call(_1be,item,_1b9);}}}if(_1b9.onComplete&&!_1bb){var _1bf=null;if(!_1b9.onItem){_1bf=_1b8.slice(_1bc,_1bd);}_1b9.onComplete.call(_1be,_1bf,_1b9);}};_1b4.fetch=function(_1c0){_1c0=_1c0||{};if(!_1c0.store){_1c0.store=this;}this._fetchItems(_1c0,lang.hitch(this,"fetchHandler"),lang.hitch(this,"errorHandler"));return _1c0;};return _1b4;});},"dojo/data/util/sorter":function(){define(["../../_base/lang"],function(lang){var _1c1={};lang.setObject("dojo.data.util.sorter",_1c1);_1c1.basicComparator=function(a,b){var r=-1;if(a===null){a=undefined;}if(b===null){b=undefined;}if(a==b){r=0;}else{if(a>b||a==null){r=1;}}return r;};_1c1.createSortFunction=function(_1c2,_1c3){var _1c4=[];function _1c5(attr,dir,comp,s){return function(_1c6,_1c7){var a=s.getValue(_1c6,attr);var b=s.getValue(_1c7,attr);return dir*comp(a,b);};};var _1c8;var map=_1c3.comparatorMap;var bc=_1c1.basicComparator;for(var i=0;i<_1c2.length;i++){_1c8=_1c2[i];var attr=_1c8.attribute;if(attr){var dir=(_1c8.descending)?-1:1;var comp=bc;if(map){if(typeof attr!=="string"&&("toString" in attr)){attr=attr.toString();}comp=map[attr]||bc;}_1c4.push(_1c5(attr,dir,comp,_1c3));}}return function(rowA,rowB){var i=0;while(i<_1c4.length){var ret=_1c4[i++](rowA,rowB);if(ret!==0){return ret;}}return 0;};};return _1c1;});},"dojo/selector/acme":function(){define(["../dom","../sniff","../_base/array","../_base/lang","../_base/window"],function(dom,has,_1c9,lang,win){var trim=lang.trim;var each=_1c9.forEach;var _1ca=function(){return win.doc;};var _1cb=(_1ca().compatMode)=="BackCompat";var _1cc=">~+";var _1cd=false;var _1ce=function(){return true;};var _1cf=function(_1d0){if(_1cc.indexOf(_1d0.slice(-1))>=0){_1d0+=" * ";}else{_1d0+=" ";}var ts=function(s,e){return trim(_1d0.slice(s,e));};var _1d1=[];var _1d2=-1,_1d3=-1,_1d4=-1,_1d5=-1,_1d6=-1,inId=-1,_1d7=-1,_1d8,lc="",cc="",_1d9;var x=0,ql=_1d0.length,_1da=null,_1db=null;var _1dc=function(){if(_1d7>=0){var tv=(_1d7==x)?null:ts(_1d7,x);_1da[(_1cc.indexOf(tv)<0)?"tag":"oper"]=tv;_1d7=-1;}};var _1dd=function(){if(inId>=0){_1da.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _1de=function(){if(_1d6>=0){_1da.classes.push(ts(_1d6+1,x).replace(/\\/g,""));_1d6=-1;}};var _1df=function(){_1dd();_1dc();_1de();};var _1e0=function(){_1df();if(_1d5>=0){_1da.pseudos.push({name:ts(_1d5+1,x)});}_1da.loops=(_1da.pseudos.length||_1da.attrs.length||_1da.classes.length);_1da.oquery=_1da.query=ts(_1d9,x);_1da.otag=_1da.tag=(_1da["oper"])?null:(_1da.tag||"*");if(_1da.tag){_1da.tag=_1da.tag.toUpperCase();}if(_1d1.length&&(_1d1[_1d1.length-1].oper)){_1da.infixOper=_1d1.pop();_1da.query=_1da.infixOper.query+" "+_1da.query;}_1d1.push(_1da);_1da=null;};for(;lc=cc,cc=_1d0.charAt(x),x<ql;x++){if(lc=="\\"){continue;}if(!_1da){_1d9=x;_1da={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return _1cd?this.otag:this.tag;}};_1d7=x;}if(_1d8){if(cc==_1d8){_1d8=null;}continue;}else{if(cc=="'"||cc=="\""){_1d8=cc;continue;}}if(_1d2>=0){if(cc=="]"){if(!_1db.attr){_1db.attr=ts(_1d2+1,x);}else{_1db.matchFor=ts((_1d4||_1d2+1),x);}var cmf=_1db.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_1db.matchFor=cmf.slice(1,-1);}}if(_1db.matchFor){_1db.matchFor=_1db.matchFor.replace(/\\/g,"");}_1da.attrs.push(_1db);_1db=null;_1d2=_1d4=-1;}else{if(cc=="="){var _1e1=("|~^$*".indexOf(lc)>=0)?lc:"";_1db.type=_1e1+cc;_1db.attr=ts(_1d2+1,x-_1e1.length);_1d4=x+1;}}}else{if(_1d3>=0){if(cc==")"){if(_1d5>=0){_1db.value=ts(_1d3+1,x);}_1d5=_1d3=-1;}}else{if(cc=="#"){_1df();inId=x+1;}else{if(cc=="."){_1df();_1d6=x;}else{if(cc==":"){_1df();_1d5=x;}else{if(cc=="["){_1df();_1d2=x;_1db={};}else{if(cc=="("){if(_1d5>=0){_1db={name:ts(_1d5+1,x),value:null};_1da.pseudos.push(_1db);}_1d3=x;}else{if((cc==" ")&&(lc!=cc)){_1e0();}}}}}}}}}return _1d1;};var _1e2=function(_1e3,_1e4){if(!_1e3){return _1e4;}if(!_1e4){return _1e3;}return function(){return _1e3.apply(window,arguments)&&_1e4.apply(window,arguments);};};var _1e5=function(i,arr){var r=arr||[];if(i){r.push(i);}return r;};var _1e6=function(n){return (1==n.nodeType);};var _1e7="";var _1e8=function(elem,attr){if(!elem){return _1e7;}if(attr=="class"){return elem.className||_1e7;}if(attr=="for"){return elem.htmlFor||_1e7;}if(attr=="style"){return elem.style.cssText||_1e7;}return (_1cd?elem.getAttribute(attr):elem.getAttribute(attr,2))||_1e7;};var _1e9={"*=":function(attr,_1ea){return function(elem){return (_1e8(elem,attr).indexOf(_1ea)>=0);};},"^=":function(attr,_1eb){return function(elem){return (_1e8(elem,attr).indexOf(_1eb)==0);};},"$=":function(attr,_1ec){return function(elem){var ea=" "+_1e8(elem,attr);var _1ed=ea.lastIndexOf(_1ec);return _1ed>-1&&(_1ed==(ea.length-_1ec.length));};},"~=":function(attr,_1ee){var tval=" "+_1ee+" ";return function(elem){var ea=" "+_1e8(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_1ef){var _1f0=_1ef+"-";return function(elem){var ea=_1e8(elem,attr);return ((ea==_1ef)||(ea.indexOf(_1f0)==0));};},"=":function(attr,_1f1){return function(elem){return (_1e8(elem,attr)==_1f1);};}};var _1f2=_1ca().documentElement;var _1f3=!(_1f2.nextElementSibling||"nextElementSibling" in _1f2);var _1f4=!_1f3?"nextElementSibling":"nextSibling";var _1f5=!_1f3?"previousElementSibling":"previousSibling";var _1f6=(_1f3?_1e6:_1ce);var _1f7=function(node){while(node=node[_1f5]){if(_1f6(node)){return false;}}return true;};var _1f8=function(node){while(node=node[_1f4]){if(_1f6(node)){return false;}}return true;};var _1f9=function(node){var root=node.parentNode;root=root.nodeType!=7?root:root.nextSibling;var i=0,tret=root.children||root.childNodes,ci=(node["_i"]||node.getAttribute("_i")||-1),cl=(root["_l"]||(typeof root.getAttribute!=="undefined"?root.getAttribute("_l"):-1));if(!tret){return -1;}var l=tret.length;if(cl==l&&ci>=0&&cl>=0){return ci;}if(has("ie")&&typeof root.setAttribute!=="undefined"){root.setAttribute("_l",l);}else{root["_l"]=l;}ci=-1;for(var te=root["firstElementChild"]||root["firstChild"];te;te=te[_1f4]){if(_1f6(te)){if(has("ie")){te.setAttribute("_i",++i);}else{te["_i"]=++i;}if(node===te){ci=i;}}}return ci;};var _1fa=function(elem){return !((_1f9(elem))%2);};var _1fb=function(elem){return ((_1f9(elem))%2);};var _1fc={"checked":function(name,_1fd){return function(elem){return !!("checked" in elem?elem.checked:elem.selected);};},"disabled":function(name,_1fe){return function(elem){return elem.disabled;};},"enabled":function(name,_1ff){return function(elem){return !elem.disabled;};},"first-child":function(){return _1f7;},"last-child":function(){return _1f8;},"only-child":function(name,_200){return function(node){return _1f7(node)&&_1f8(node);};},"empty":function(name,_201){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt===1)||(nt==3)){return false;}}return true;};},"contains":function(name,_202){var cz=_202.charAt(0);if(cz=="\""||cz=="'"){_202=_202.slice(1,-1);}return function(elem){return (elem.innerHTML.indexOf(_202)>=0);};},"not":function(name,_203){var p=_1cf(_203)[0];var _204={el:1};if(p.tag!="*"){_204.tag=1;}if(!p.classes.length){_204.classes=1;}var ntf=_205(p,_204);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_206){var pi=parseInt;if(_206=="odd"){return _1fb;}else{if(_206=="even"){return _1fa;}}if(_206.indexOf("n")!=-1){var _207=_206.split("n",2);var pred=_207[0]?((_207[0]=="-")?-1:pi(_207[0])):1;var idx=_207[1]?pi(_207[1]):0;var lb=0,ub=-1;if(pred>0){if(idx<0){idx=(idx%pred)&&(pred+(idx%pred));}else{if(idx>0){if(idx>=pred){lb=idx-idx%pred;}idx=idx%pred;}}}else{if(pred<0){pred*=-1;if(idx>0){ub=idx;idx=idx%pred;}}}if(pred>0){return function(elem){var i=_1f9(elem);return (i>=lb)&&(ub<0||i<=ub)&&((i%pred)==idx);};}else{_206=idx;}}var _208=pi(_206);return function(elem){return (_1f9(elem)==_208);};}};var _209=(has("ie")<9||has("ie")==9&&has("quirks"))?function(cond){var clc=cond.toLowerCase();if(clc=="class"){cond="className";}return function(elem){return (_1cd?elem.getAttribute(cond):elem[cond]||elem[clc]);};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _205=function(_20a,_20b){if(!_20a){return _1ce;}_20b=_20b||{};var ff=null;if(!("el" in _20b)){ff=_1e2(ff,_1e6);}if(!("tag" in _20b)){if(_20a.tag!="*"){ff=_1e2(ff,function(elem){return (elem&&((_1cd?elem.tagName:elem.tagName.toUpperCase())==_20a.getTag()));});}}if(!("classes" in _20b)){each(_20a.classes,function(_20c,idx,arr){var re=new RegExp("(?:^|\\s)"+_20c+"(?:\\s|$)");ff=_1e2(ff,function(elem){return re.test(elem.className);});ff.count=idx;});}if(!("pseudos" in _20b)){each(_20a.pseudos,function(_20d){var pn=_20d.name;if(_1fc[pn]){ff=_1e2(ff,_1fc[pn](pn,_20d.value));}});}if(!("attrs" in _20b)){each(_20a.attrs,function(attr){var _20e;var a=attr.attr;if(attr.type&&_1e9[attr.type]){_20e=_1e9[attr.type](a,attr.matchFor);}else{if(a.length){_20e=_209(a);}}if(_20e){ff=_1e2(ff,_20e);}});}if(!("id" in _20b)){if(_20a.id){ff=_1e2(ff,function(elem){return (!!elem&&(elem.id==_20a.id));});}}if(!ff){if(!("default" in _20b)){ff=_1ce;}}return ff;};var _20f=function(_210){return function(node,ret,bag){while(node=node[_1f4]){if(_1f3&&(!_1e6(node))){continue;}if((!bag||_211(node,bag))&&_210(node)){ret.push(node);}break;}return ret;};};var _212=function(_213){return function(root,ret,bag){var te=root[_1f4];while(te){if(_1f6(te)){if(bag&&!_211(te,bag)){break;}if(_213(te)){ret.push(te);}}te=te[_1f4];}return ret;};};var _214=function(_215,_216){var _217=function(_218){var _219=[];try{_219=Array.prototype.slice.call(_218);}catch(e){for(var i=0,len=_218.length;i<len;i++){_219.push(_218[i]);}}return _219;};_215=_215||_1ce;return function(root,ret,bag){var te,x=0,tret=[];tret=_217(root.children||root.childNodes);if(_216){_1c9.forEach(tret,function(node){if(node.nodeType===1){tret=tret.concat(_217(node.getElementsByTagName("*")));}});}while(te=tret[x++]){if(_1f6(te)&&(!bag||_211(te,bag))&&(_215(te,x))){ret.push(te);}}return ret;};};var _21a=function(node,root){var pn=node.parentNode;while(pn){if(pn==root){break;}pn=pn.parentNode;}return !!pn;};var _21b={};var _21c=function(_21d){var _21e=_21b[_21d.query];if(_21e){return _21e;}var io=_21d.infixOper;var oper=(io?io.oper:"");var _21f=_205(_21d,{el:1});var qt=_21d.tag;var _220=("*"==qt);var ecs=_1ca()["getElementsByClassName"];if(!oper){if(_21d.id){_21f=(!_21d.loops&&_220)?_1ce:_205(_21d,{el:1,id:1});_21e=function(root,arr){var te=dom.byId(_21d.id,(root.ownerDocument||root));if(root.ownerDocument&&!_21a(root,root.ownerDocument)){var _221=root.nodeType===11?root.childNodes:[root];_1c9.some(_221,function(_222){var _223=_214(function(node){return node.id===_21d.id;},true)(_222,[]);if(_223.length){te=_223[0];return false;}});}if(!te||!_21f(te)){return;}if(9==root.nodeType){return _1e5(te,arr);}else{if(_21a(te,root)){return _1e5(te,arr);}}};}else{if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_21d.classes.length&&!_1cb){_21f=_205(_21d,{el:1,classes:1,id:1});var _224=_21d.classes.join(" ");_21e=function(root,arr,bag){var ret=_1e5(0,arr),te,x=0;var tret=root.getElementsByClassName(_224);while((te=tret[x++])){if(_21f(te,root)&&_211(te,bag)){ret.push(te);}}return ret;};}else{if(!_220&&!_21d.loops){_21e=function(root,arr,bag){var ret=_1e5(0,arr),te,x=0;var tag=_21d.getTag(),tret=tag?root.getElementsByTagName(tag):[];while((te=tret[x++])){if(_211(te,bag)){ret.push(te);}}return ret;};}else{_21f=_205(_21d,{el:1,tag:1,id:1});_21e=function(root,arr,bag){var ret=_1e5(0,arr),te,x=0;var tag=_21d.getTag(),tret=tag?root.getElementsByTagName(tag):[];while((te=tret[x++])){if(_21f(te,root)&&_211(te,bag)){ret.push(te);}}return ret;};}}}}else{var _225={el:1};if(_220){_225.tag=1;}_21f=_205(_21d,_225);if("+"==oper){_21e=_20f(_21f);}else{if("~"==oper){_21e=_212(_21f);}else{if(">"==oper){_21e=_214(_21f);}}}}return _21b[_21d.query]=_21e;};var _226=function(root,_227){var _228=_1e5(root),qp,x,te,qpl=_227.length,bag,ret;for(var i=0;i<qpl;i++){ret=[];qp=_227[i];x=_228.length-1;if(x>0){bag={};ret.nozip=true;}var gef=_21c(qp);for(var j=0;(te=_228[j]);j++){gef(te,ret,bag);}if(!ret.length){break;}_228=ret;}return ret;};var _229={},_22a={};var _22b=function(_22c){var _22d=_1cf(trim(_22c));if(_22d.length==1){var tef=_21c(_22d[0]);return function(root){var r=tef(root,[]);if(r){r.nozip=true;}return r;};}return function(root){return _226(root,_22d);};};var _22e=has("ie")?"commentStrip":"nozip";var qsa="querySelectorAll";var _22f=!!_1ca()[qsa];var _230=/\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g;var _231=function(_232,pre,ch,post){return ch?(pre?pre+" ":"")+ch+(post?" "+post:""):_232;};var _233=/([^[]*)([^\]]*])?/g;var _234=function(_235,_236,att){return _236.replace(_230,_231)+(att||"");};var _237=function(_238,_239){_238=_238.replace(_233,_234);if(_22f){var _23a=_22a[_238];if(_23a&&!_239){return _23a;}}var _23b=_229[_238];if(_23b){return _23b;}var qcz=_238.charAt(0);var _23c=(-1==_238.indexOf(" "));if((_238.indexOf("#")>=0)&&(_23c)){_239=true;}var _23d=(_22f&&(!_239)&&(_1cc.indexOf(qcz)==-1)&&(!has("ie")||(_238.indexOf(":")==-1))&&(!(_1cb&&(_238.indexOf(".")>=0)))&&(_238.indexOf(":contains")==-1)&&(_238.indexOf(":checked")==-1)&&(_238.indexOf("|=")==-1));if(_23d){var tq=(_1cc.indexOf(_238.charAt(_238.length-1))>=0)?(_238+" *"):_238;return _22a[_238]=function(root){if(9==root.nodeType||_23c){try{var r=root[qsa](tq);r[_22e]=true;return r;}catch(e){}}return _237(_238,true)(root);};}else{var _23e=_238.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g);return _229[_238]=((_23e.length<2)?_22b(_238):function(root){var _23f=0,ret=[],tp;while((tp=_23e[_23f++])){ret=ret.concat(_22b(tp)(root));}return ret;});}};var _240=0;var _241=has("ie")?function(node){if(_1cd){return (node.getAttribute("_uid")||node.setAttribute("_uid",++_240)||_240);}else{return node.uniqueID;}}:function(node){return (node._uid||(node._uid=++_240));};var _211=function(node,bag){if(!bag){return 1;}var id=_241(node);if(!bag[id]){return bag[id]=1;}return 0;};var _242="_zipIdx";var _243=function(arr){if(arr&&arr.nozip){return arr;}if(!arr||!arr.length){return [];}if(arr.length<2){return [arr[0]];}var ret=[];_240++;var x,te;if(has("ie")&&_1cd){var _244=_240+"";for(x=0;x<arr.length;x++){if((te=arr[x])&&te.getAttribute(_242)!=_244){ret.push(te);te.setAttribute(_242,_244);}}}else{if(has("ie")&&arr.commentStrip){try{for(x=0;x<arr.length;x++){if((te=arr[x])&&_1e6(te)){ret.push(te);}}}catch(e){}}else{for(x=0;x<arr.length;x++){if((te=arr[x])&&te[_242]!=_240){ret.push(te);te[_242]=_240;}}}}return ret;};var _245=function(_246,root){root=root||_1ca();var od=root.ownerDocument||root;_1cd=(od.createElement("div").tagName==="div");var r=_237(_246)(root);if(r&&r.nozip){return r;}return _243(r);};_245.filter=function(_247,_248,root){var _249=[],_24a=_1cf(_248),_24b=(_24a.length==1&&!/[^\w#\.]/.test(_248))?_205(_24a[0]):function(node){return _1c9.indexOf(_245(_248,dom.byId(root)),node)!=-1;};for(var x=0,te;te=_247[x];x++){if(_24b(te)){_249.push(te);}}return _249;};return _245;});},"dojo/selector/lite":function(){define(["../has","../_base/kernel"],function(has,dojo){"use strict";var _24c=document.createElement("div");var _24d=_24c.matches||_24c.webkitMatchesSelector||_24c.mozMatchesSelector||_24c.msMatchesSelector||_24c.oMatchesSelector;var _24e=_24c.querySelectorAll;var _24f=/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g;has.add("dom-matches-selector",!!_24d);has.add("dom-qsa",!!_24e);var _250=function(_251,root){if(_252&&_251.indexOf(",")>-1){return _252(_251,root);}var doc=root?root.ownerDocument||root:dojo.doc||document,_253=(_24e?/^([\w]*)#([\w\-]+$)|^(\.)([\w\-\*]+$)|^(\w+$)/:/^([\w]*)#([\w\-]+)(?:\s+(.*))?$|(?:^|(>|.+\s+))([\w\-\*]+)(\S*$)/).exec(_251);root=root||doc;if(_253){var _254=has("ie")===8&&has("quirks")?root.nodeType===doc.nodeType:root.parentNode!==null&&root.nodeType!==9&&root.parentNode===doc;if(_253[2]&&_254){var _255=dojo.byId?dojo.byId(_253[2],doc):doc.getElementById(_253[2]);if(!_255||(_253[1]&&_253[1]!=_255.tagName.toLowerCase())){return [];}if(root!=doc){var _256=_255;while(_256!=root){_256=_256.parentNode;if(!_256){return [];}}}return _253[3]?_250(_253[3],_255):[_255];}if(_253[3]&&root.getElementsByClassName){return root.getElementsByClassName(_253[4]);}var _255;if(_253[5]){_255=root.getElementsByTagName(_253[5]);if(_253[4]||_253[6]){_251=(_253[4]||"")+_253[6];}else{return _255;}}}if(_24e){if(root.nodeType===1&&root.nodeName.toLowerCase()!=="object"){return _257(root,_251,root.querySelectorAll);}else{return root.querySelectorAll(_251);}}else{if(!_255){_255=root.getElementsByTagName("*");}}var _258=[];for(var i=0,l=_255.length;i<l;i++){var node=_255[i];if(node.nodeType==1&&_259(node,_251,root)){_258.push(node);}}return _258;};var _257=function(_25a,_25b,_25c){var _25d=_25a,old=_25a.getAttribute("id"),nid=old||"__dojo__",_25e=_25a.parentNode,_25f=/^\s*[+~]/.test(_25b);if(_25f&&!_25e){return [];}if(!old){_25a.setAttribute("id",nid);}else{nid=nid.replace(/'/g,"\\$&");}if(_25f&&_25e){_25a=_25a.parentNode;}var _260=_25b.match(_24f);for(var i=0;i<_260.length;i++){_260[i]="[id='"+nid+"'] "+_260[i];}_25b=_260.join(",");try{return _25c.call(_25a,_25b);}finally{if(!old){_25d.removeAttribute("id");}}};if(!has("dom-matches-selector")){var _259=(function(){var _261=_24c.tagName=="div"?"toLowerCase":"toUpperCase";var _262={"":function(_263){_263=_263[_261]();return function(node){return node.tagName==_263;};},".":function(_264){var _265=" "+_264+" ";return function(node){return node.className.indexOf(_264)>-1&&(" "+node.className+" ").indexOf(_265)>-1;};},"#":function(id){return function(node){return node.id==id;};}};var _266={"^=":function(_267,_268){return _267.indexOf(_268)==0;},"*=":function(_269,_26a){return _269.indexOf(_26a)>-1;},"$=":function(_26b,_26c){return _26b.substring(_26b.length-_26c.length,_26b.length)==_26c;},"~=":function(_26d,_26e){return (" "+_26d+" ").indexOf(" "+_26e+" ")>-1;},"|=":function(_26f,_270){return (_26f+"-").indexOf(_270+"-")==0;},"=":function(_271,_272){return _271==_272;},"":function(_273,_274){return true;}};function attr(name,_275,type){var _276=_275.charAt(0);if(_276=="\""||_276=="'"){_275=_275.slice(1,-1);}_275=_275.replace(/\\/g,"");var _277=_266[type||""];return function(node){var _278=node.getAttribute(name);return _278&&_277(_278,_275);};};function _279(_27a){return function(node,root){while((node=node.parentNode)!=root){if(_27a(node,root)){return true;}}};};function _27b(_27c){return function(node,root){node=node.parentNode;return _27c?node!=root&&_27c(node,root):node==root;};};var _27d={};function and(_27e,next){return _27e?function(node,root){return next(node)&&_27e(node,root);}:next;};return function(node,_27f,root){var _280=_27d[_27f];if(!_280){if(_27f.replace(/(?:\s*([> ])\s*)|(#|\.)?((?:\\.|[\w-])+)|\[\s*([\w-]+)\s*(.?=)?\s*("(?:\\.|[^"])+"|'(?:\\.|[^'])+'|(?:\\.|[^\]])*)\s*\]/g,function(t,_281,type,_282,_283,_284,_285){if(_282){_280=and(_280,_262[type||""](_282.replace(/\\/g,"")));}else{if(_281){_280=(_281==" "?_279:_27b)(_280);}else{if(_283){_280=and(_280,attr(_283,_285,_284));}}}return "";})){throw new Error("Syntax error in query");}if(!_280){return true;}_27d[_27f]=_280;}return _280(node,root);};})();}if(!has("dom-qsa")){var _252=function(_286,root){var _287=_286.match(_24f);var _288=[];for(var i=0;i<_287.length;i++){_286=new String(_287[i].replace(/\s*$/,""));_286.indexOf=escape;var _289=_250(_286,root);for(var j=0,l=_289.length;j<l;j++){var node=_289[j];_288[node.sourceIndex]=node;}}var _28a=[];for(i in _288){_28a.push(_288[i]);}return _28a;};}_250.match=_24d?function(node,_28b,root){if(root&&root.nodeType!=9){return _257(root,_28b,function(_28c){return _24d.call(node,_28c);});}return _24d.call(node,_28b);}:_259;return _250;});},"dojo/Stateful":function(){define(["./_base/declare","./_base/lang","./_base/array","./when"],function(_28d,lang,_28e,when){return _28d("dojo.Stateful",null,{_attrPairNames:{},_getAttrNames:function(name){var apn=this._attrPairNames;if(apn[name]){return apn[name];}return (apn[name]={s:"_"+name+"Setter",g:"_"+name+"Getter"});},postscript:function(_28f){if(_28f){this.set(_28f);}},_get:function(name,_290){return typeof this[_290.g]==="function"?this[_290.g]():this[name];},get:function(name){return this._get(name,this._getAttrNames(name));},set:function(name,_291){if(typeof name==="object"){for(var x in name){if(name.hasOwnProperty(x)&&x!="_watchCallbacks"){this.set(x,name[x]);}}return this;}var _292=this._getAttrNames(name),_293=this._get(name,_292),_294=this[_292.s],_295;if(typeof _294==="function"){_295=_294.apply(this,Array.prototype.slice.call(arguments,1));}else{this[name]=_291;}if(this._watchCallbacks){var self=this;when(_295,function(){self._watchCallbacks(name,_293,_291);});}return this;},_changeAttrValue:function(name,_296){var _297=this.get(name);this[name]=_296;if(this._watchCallbacks){this._watchCallbacks(name,_297,_296);}return this;},watch:function(name,_298){var _299=this._watchCallbacks;if(!_299){var self=this;_299=this._watchCallbacks=function(name,_29a,_29b,_29c){var _29d=function(_29e){if(_29e){_29e=_29e.slice();for(var i=0,l=_29e.length;i<l;i++){_29e[i].call(self,name,_29a,_29b);}}};_29d(_299["_"+name]);if(!_29c){_29d(_299["*"]);}};}if(!_298&&typeof name==="function"){_298=name;name="*";}else{name="_"+name;}var _29f=_299[name];if(typeof _29f!=="object"){_29f=_299[name]=[];}_29f.push(_298);var _2a0={};_2a0.unwatch=_2a0.remove=function(){var _2a1=_28e.indexOf(_29f,_298);if(_2a1>-1){_29f.splice(_2a1,1);}};return _2a0;}});});},"dojo/string":function(){define(["./_base/kernel","./_base/lang"],function(_2a2,lang){var _2a3=/[&<>'"\/]/g;var _2a4={"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#x27;","/":"&#x2F;"};var _2a5={};lang.setObject("dojo.string",_2a5);_2a5.escape=function(str){if(!str){return "";}return str.replace(_2a3,function(c){return _2a4[c];});};_2a5.rep=function(str,num){if(num<=0||!str){return "";}var buf=[];for(;;){if(num&1){buf.push(str);}if(!(num>>=1)){break;}str+=str;}return buf.join("");};_2a5.pad=function(text,size,ch,end){if(!ch){ch="0";}var out=String(text),pad=_2a5.rep(ch,Math.ceil((size-out.length)/ch.length));return end?out+pad:pad+out;};_2a5.substitute=function(_2a6,map,_2a7,_2a8){_2a8=_2a8||_2a2.global;_2a7=_2a7?lang.hitch(_2a8,_2a7):function(v){return v;};return _2a6.replace(/\$\{([^\s\:\}]*)(?:\:([^\s\:\}]+))?\}/g,function(_2a9,key,_2aa){if(key==""){return "$";}var _2ab=lang.getObject(key,false,map);if(_2aa){_2ab=lang.getObject(_2aa,false,_2a8).call(_2a8,_2ab,key);}var _2ac=_2a7(_2ab,key);if(typeof _2ac==="undefined"){throw new Error("string.substitute could not find key \""+key+"\" in template");}return _2ac.toString();});};_2a5.trim=String.prototype.trim?lang.trim:function(str){str=str.replace(/^\s+/,"");for(var i=str.length-1;i>=0;i--){if(/\S/.test(str.charAt(i))){str=str.substring(0,i+1);break;}}return str;};return _2a5;});},"dojo/touch":function(){define(["./_base/kernel","./aspect","./dom","./dom-class","./_base/lang","./on","./has","./mouse","./domReady","./_base/window"],function(dojo,_2ad,dom,_2ae,lang,on,has,_2af,_2b0,win){var ios4=has("ios")<5;var _2b1=has("pointer-events")||has("MSPointer"),_2b2=(function(){var _2b3={};for(var type in {down:1,move:1,up:1,cancel:1,over:1,out:1}){_2b3[type]=has("MSPointer")?"MSPointer"+type.charAt(0).toUpperCase()+type.slice(1):"pointer"+type;}return _2b3;})();var _2b4=has("touch-events");var _2b5,_2b6,_2b7=false,_2b8,_2b9,_2ba,_2bb,_2bc,_2bd;var _2be;function _2bf(_2c0,_2c1,_2c2){if(_2b1&&_2c2){return function(node,_2c3){return on(node,_2c2,_2c3);};}else{if(_2b4){return function(node,_2c4){var _2c5=on(node,_2c1,function(evt){_2c4.call(this,evt);_2be=(new Date()).getTime();}),_2c6=on(node,_2c0,function(evt){if(!_2be||(new Date()).getTime()>_2be+1000){_2c4.call(this,evt);}});return {remove:function(){_2c5.remove();_2c6.remove();}};};}else{return function(node,_2c7){return on(node,_2c0,_2c7);};}}};function _2c8(node){do{if(node.dojoClick!==undefined){return node;}}while(node=node.parentNode);};function _2c9(e,_2ca,_2cb){if(_2af.isRight(e)){return;}var _2cc=_2c8(e.target);_2b6=!e.target.disabled&&_2cc&&_2cc.dojoClick;if(_2b6){_2b7=(_2b6=="useTarget");_2b8=(_2b7?_2cc:e.target);if(_2b7){e.preventDefault();}_2b9=e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX;_2ba=e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY;_2bb=(typeof _2b6=="object"?_2b6.x:(typeof _2b6=="number"?_2b6:0))||4;_2bc=(typeof _2b6=="object"?_2b6.y:(typeof _2b6=="number"?_2b6:0))||4;if(!_2b5){_2b5=true;function _2cd(e){if(_2b7){_2b6=dom.isDescendant(win.doc.elementFromPoint((e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX),(e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY)),_2b8);}else{_2b6=_2b6&&(e.changedTouches?e.changedTouches[0].target:e.target)==_2b8&&Math.abs((e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX)-_2b9)<=_2bb&&Math.abs((e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY)-_2ba)<=_2bc;}};win.doc.addEventListener(_2ca,function(e){if(_2af.isRight(e)){return;}_2cd(e);if(_2b7){e.preventDefault();}},true);win.doc.addEventListener(_2cb,function(e){if(_2af.isRight(e)){return;}_2cd(e);if(_2b6){_2bd=(new Date()).getTime();var _2ce=(_2b7?_2b8:e.target);if(_2ce.tagName==="LABEL"){_2ce=dom.byId(_2ce.getAttribute("for"))||_2ce;}var src=(e.changedTouches)?e.changedTouches[0]:e;function _2cf(type){var evt=document.createEvent("MouseEvents");evt._dojo_click=true;evt.initMouseEvent(type,true,true,e.view,e.detail,src.screenX,src.screenY,src.clientX,src.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,0,null);return evt;};var _2d0=_2cf("mousedown");var _2d1=_2cf("mouseup");var _2d2=_2cf("click");setTimeout(function(){on.emit(_2ce,"mousedown",_2d0);on.emit(_2ce,"mouseup",_2d1);on.emit(_2ce,"click",_2d2);_2bd=(new Date()).getTime();},0);}},true);function _2d3(type){win.doc.addEventListener(type,function(e){var _2d4=e.target;if(_2b6&&!e._dojo_click&&(new Date()).getTime()<=_2bd+1000&&!(_2d4.tagName=="INPUT"&&_2ae.contains(_2d4,"dijitOffScreen"))){e.stopPropagation();e.stopImmediatePropagation&&e.stopImmediatePropagation();if(type=="click"&&(_2d4.tagName!="INPUT"||(_2d4.type=="radio"&&(_2ae.contains(_2d4,"dijitCheckBoxInput")||_2ae.contains(_2d4,"mblRadioButton")))||(_2d4.type=="checkbox"&&(_2ae.contains(_2d4,"dijitCheckBoxInput")||_2ae.contains(_2d4,"mblCheckBox"))))&&_2d4.tagName!="TEXTAREA"&&_2d4.tagName!="AUDIO"&&_2d4.tagName!="VIDEO"){e.preventDefault();}}},true);};_2d3("click");_2d3("mousedown");_2d3("mouseup");}}};var _2d5;if(has("touch")){if(_2b1){_2b0(function(){win.doc.addEventListener(_2b2.down,function(evt){_2c9(evt,_2b2.move,_2b2.up);},true);});}else{_2b0(function(){_2d5=win.body();win.doc.addEventListener("touchstart",function(evt){_2be=(new Date()).getTime();var _2d6=_2d5;_2d5=evt.target;on.emit(_2d6,"dojotouchout",{relatedTarget:_2d5,bubbles:true});on.emit(_2d5,"dojotouchover",{relatedTarget:_2d6,bubbles:true});_2c9(evt,"touchmove","touchend");},true);function _2d7(evt){var _2d8=lang.delegate(evt,{bubbles:true});if(has("ios")>=6){_2d8.touches=evt.touches;_2d8.altKey=evt.altKey;_2d8.changedTouches=evt.changedTouches;_2d8.ctrlKey=evt.ctrlKey;_2d8.metaKey=evt.metaKey;_2d8.shiftKey=evt.shiftKey;_2d8.targetTouches=evt.targetTouches;}return _2d8;};on(win.doc,"touchmove",function(evt){_2be=(new Date()).getTime();var _2d9=win.doc.elementFromPoint(evt.pageX-(ios4?0:win.global.pageXOffset),evt.pageY-(ios4?0:win.global.pageYOffset));if(_2d9){if(_2d5!==_2d9){on.emit(_2d5,"dojotouchout",{relatedTarget:_2d9,bubbles:true});on.emit(_2d9,"dojotouchover",{relatedTarget:_2d5,bubbles:true});_2d5=_2d9;}if(!on.emit(_2d9,"dojotouchmove",_2d7(evt))){evt.preventDefault();}}});on(win.doc,"touchend",function(evt){_2be=(new Date()).getTime();var node=win.doc.elementFromPoint(evt.pageX-(ios4?0:win.global.pageXOffset),evt.pageY-(ios4?0:win.global.pageYOffset))||win.body();on.emit(node,"dojotouchend",_2d7(evt));});});}}var _2da={press:_2bf("mousedown","touchstart",_2b2.down),move:_2bf("mousemove","dojotouchmove",_2b2.move),release:_2bf("mouseup","dojotouchend",_2b2.up),cancel:_2bf(_2af.leave,"touchcancel",_2b1?_2b2.cancel:null),over:_2bf("mouseover","dojotouchover",_2b2.over),out:_2bf("mouseout","dojotouchout",_2b2.out),enter:_2af._eventHandler(_2bf("mouseover","dojotouchover",_2b2.over)),leave:_2af._eventHandler(_2bf("mouseout","dojotouchout",_2b2.out))};1&&(dojo.touch=_2da);return _2da;});},"dojo/uacss":function(){define(["./dom-geometry","./_base/lang","./domReady","./sniff","./_base/window"],function(_2db,lang,_2dc,has,_2dd){var html=_2dd.doc.documentElement,ie=has("ie"),_2de=has("trident"),_2df=has("opera"),maj=Math.floor,ff=has("ff"),_2e0=_2db.boxModel.replace(/-/,""),_2e1={"dj_quirks":has("quirks"),"dj_opera":_2df,"dj_khtml":has("khtml"),"dj_webkit":has("webkit"),"dj_safari":has("safari"),"dj_chrome":has("chrome"),"dj_edge":has("edge"),"dj_gecko":has("mozilla"),"dj_ios":has("ios"),"dj_android":has("android")};if(ie){_2e1["dj_ie"]=true;_2e1["dj_ie"+maj(ie)]=true;_2e1["dj_iequirks"]=has("quirks");}if(_2de){_2e1["dj_trident"]=true;_2e1["dj_trident"+maj(_2de)]=true;}if(ff){_2e1["dj_ff"+maj(ff)]=true;}_2e1["dj_"+_2e0]=true;var _2e2="";for(var clz in _2e1){if(_2e1[clz]){_2e2+=clz+" ";}}html.className=lang.trim(html.className+" "+_2e2);_2dc(function(){if(!_2db.isBodyLtr()){var _2e3="dj_rtl dijitRtl "+_2e2.replace(/ /g,"-rtl ");html.className=lang.trim(html.className+" "+_2e3+"dj_rtl dijitRtl "+_2e2.replace(/ /g,"-rtl "));}});return has;});},"dojo/window":function(){define(["./_base/lang","./sniff","./_base/window","./dom","./dom-geometry","./dom-style","./dom-construct"],function(lang,has,_2e4,dom,geom,_2e5,_2e6){has.add("rtl-adjust-position-for-verticalScrollBar",function(win,doc){var body=_2e4.body(doc),_2e7=_2e6.create("div",{style:{overflow:"scroll",overflowX:"visible",direction:"rtl",visibility:"hidden",position:"absolute",left:"0",top:"0",width:"64px",height:"64px"}},body,"last"),div=_2e6.create("div",{style:{overflow:"hidden",direction:"ltr"}},_2e7,"last"),ret=geom.position(div).x!=0;_2e7.removeChild(div);body.removeChild(_2e7);return ret;});has.add("position-fixed-support",function(win,doc){var body=_2e4.body(doc),_2e8=_2e6.create("span",{style:{visibility:"hidden",position:"fixed",left:"1px",top:"1px"}},body,"last"),_2e9=_2e6.create("span",{style:{position:"fixed",left:"0",top:"0"}},_2e8,"last"),ret=geom.position(_2e9).x!=geom.position(_2e8).x;_2e8.removeChild(_2e9);body.removeChild(_2e8);return ret;});var _2ea={getBox:function(doc){doc=doc||_2e4.doc;var _2eb=(doc.compatMode=="BackCompat")?_2e4.body(doc):doc.documentElement,_2ec=geom.docScroll(doc),w,h;if(has("touch")){var _2ed=_2ea.get(doc);w=_2ed.innerWidth||_2eb.clientWidth;h=_2ed.innerHeight||_2eb.clientHeight;}else{w=_2eb.clientWidth;h=_2eb.clientHeight;}return {l:_2ec.x,t:_2ec.y,w:w,h:h};},get:function(doc){if(has("ie")&&_2ea!==document.parentWindow){doc.parentWindow.execScript("document._parentWindow = window;","Javascript");var win=doc._parentWindow;doc._parentWindow=null;return win;}return doc.parentWindow||doc.defaultView;},scrollIntoView:function(node,pos){try{node=dom.byId(node);var doc=node.ownerDocument||_2e4.doc,body=_2e4.body(doc),html=doc.documentElement||body.parentNode,isIE=has("ie")||has("trident"),isWK=has("webkit");if(node==body||node==html){return;}if(!(has("mozilla")||isIE||isWK||has("opera")||has("trident")||has("edge"))&&("scrollIntoView" in node)){node.scrollIntoView(false);return;}var _2ee=doc.compatMode=="BackCompat",_2ef=Math.min(body.clientWidth||html.clientWidth,html.clientWidth||body.clientWidth),_2f0=Math.min(body.clientHeight||html.clientHeight,html.clientHeight||body.clientHeight),_2f1=(isWK||_2ee)?body:html,_2f2=pos||geom.position(node),el=node.parentNode,_2f3=function(el){return (isIE<=6||(isIE==7&&_2ee))?false:(has("position-fixed-support")&&(_2e5.get(el,"position").toLowerCase()=="fixed"));},self=this,_2f4=function(el,x,y){if(el.tagName=="BODY"||el.tagName=="HTML"){self.get(el.ownerDocument).scrollBy(x,y);}else{x&&(el.scrollLeft+=x);y&&(el.scrollTop+=y);}};if(_2f3(node)){return;}while(el){if(el==body){el=_2f1;}var _2f5=geom.position(el),_2f6=_2f3(el),rtl=_2e5.getComputedStyle(el).direction.toLowerCase()=="rtl";if(el==_2f1){_2f5.w=_2ef;_2f5.h=_2f0;if(_2f1==html&&(isIE||has("trident"))&&rtl){_2f5.x+=_2f1.offsetWidth-_2f5.w;}_2f5.x=0;_2f5.y=0;}else{var pb=geom.getPadBorderExtents(el);_2f5.w-=pb.w;_2f5.h-=pb.h;_2f5.x+=pb.l;_2f5.y+=pb.t;var _2f7=el.clientWidth,_2f8=_2f5.w-_2f7;if(_2f7>0&&_2f8>0){if(rtl&&has("rtl-adjust-position-for-verticalScrollBar")){_2f5.x+=_2f8;}_2f5.w=_2f7;}_2f7=el.clientHeight;_2f8=_2f5.h-_2f7;if(_2f7>0&&_2f8>0){_2f5.h=_2f7;}}if(_2f6){if(_2f5.y<0){_2f5.h+=_2f5.y;_2f5.y=0;}if(_2f5.x<0){_2f5.w+=_2f5.x;_2f5.x=0;}if(_2f5.y+_2f5.h>_2f0){_2f5.h=_2f0-_2f5.y;}if(_2f5.x+_2f5.w>_2ef){_2f5.w=_2ef-_2f5.x;}}var l=_2f2.x-_2f5.x,t=_2f2.y-_2f5.y,r=l+_2f2.w-_2f5.w,bot=t+_2f2.h-_2f5.h;var s,old;if(r*l>0&&(!!el.scrollLeft||el==_2f1||el.scrollWidth>el.offsetHeight)){s=Math[l<0?"max":"min"](l,r);if(rtl&&((isIE==8&&!_2ee)||has("trident")>=5)){s=-s;}old=el.scrollLeft;_2f4(el,s,0);s=el.scrollLeft-old;_2f2.x-=s;}if(bot*t>0&&(!!el.scrollTop||el==_2f1||el.scrollHeight>el.offsetHeight)){s=Math.ceil(Math[t<0?"max":"min"](t,bot));old=el.scrollTop;_2f4(el,0,s);s=el.scrollTop-old;_2f2.y-=s;}el=(el!=_2f1)&&!_2f6&&el.parentNode;}}catch(error){console.error("scrollIntoView: "+error);node.scrollIntoView(false);}}};1&&lang.setObject("dojo.window",_2ea);return _2ea;});},"dojo/NodeList-fx":function(){define(["./query","./_base/lang","./aspect","./_base/fx","./fx"],function(_2f9,lang,_2fa,_2fb,_2fc){var _2fd=_2f9.NodeList;lang.extend(_2fd,{_anim:function(obj,_2fe,args){args=args||{};var a=_2fc.combine(this.map(function(item){var _2ff={node:item};lang.mixin(_2ff,args);return obj[_2fe](_2ff);}));return args.auto?a.play()&&this:a;},wipeIn:function(args){return this._anim(_2fc,"wipeIn",args);},wipeOut:function(args){return this._anim(_2fc,"wipeOut",args);},slideTo:function(args){return this._anim(_2fc,"slideTo",args);},fadeIn:function(args){return this._anim(_2fb,"fadeIn",args);},fadeOut:function(args){return this._anim(_2fb,"fadeOut",args);},animateProperty:function(args){return this._anim(_2fb,"animateProperty",args);},anim:function(_300,_301,_302,_303,_304){var _305=_2fc.combine(this.map(function(item){return _2fb.animateProperty({node:item,properties:_300,duration:_301||350,easing:_302});}));if(_303){_2fa.after(_305,"onEnd",_303,true);}return _305.play(_304||0);}});return _2fd;});},"dojo/fx":function(){define(["./_base/lang","./Evented","./_base/kernel","./_base/array","./aspect","./_base/fx","./dom","./dom-style","./dom-geometry","./ready","require"],function(lang,_306,dojo,_307,_308,_309,dom,_30a,geom,_30b,_30c){if(!dojo.isAsync){_30b(0,function(){var _30d=["./fx/Toggler"];_30c(_30d);});}var _30e=dojo.fx={};var _30f={_fire:function(evt,args){if(this[evt]){this[evt].apply(this,args||[]);}return this;}};var _310=function(_311){this._index=-1;this._animations=_311||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;_307.forEach(this._animations,function(a){if(a){if(typeof a.duration!="undefined"){this.duration+=a.duration;}if(a.delay){this.duration+=a.delay;}}},this);};_310.prototype=new _306();lang.extend(_310,{_onAnimate:function(){this._fire("onAnimate",arguments);},_onEnd:function(){this._onAnimateCtx.remove();this._onEndCtx.remove();this._onAnimateCtx=this._onEndCtx=null;if(this._index+1==this._animations.length){this._fire("onEnd");}else{this._current=this._animations[++this._index];this._onAnimateCtx=_308.after(this._current,"onAnimate",lang.hitch(this,"_onAnimate"),true);this._onEndCtx=_308.after(this._current,"onEnd",lang.hitch(this,"_onEnd"),true);this._current.play(0,true);}},play:function(_312,_313){if(!this._current){this._current=this._animations[this._index=0];}if(!_313&&this._current.status()=="playing"){return this;}var _314=_308.after(this._current,"beforeBegin",lang.hitch(this,function(){this._fire("beforeBegin");}),true),_315=_308.after(this._current,"onBegin",lang.hitch(this,function(arg){this._fire("onBegin",arguments);}),true),_316=_308.after(this._current,"onPlay",lang.hitch(this,function(arg){this._fire("onPlay",arguments);_314.remove();_315.remove();_316.remove();}));if(this._onAnimateCtx){this._onAnimateCtx.remove();}this._onAnimateCtx=_308.after(this._current,"onAnimate",lang.hitch(this,"_onAnimate"),true);if(this._onEndCtx){this._onEndCtx.remove();}this._onEndCtx=_308.after(this._current,"onEnd",lang.hitch(this,"_onEnd"),true);this._current.play.apply(this._current,arguments);return this;},pause:function(){if(this._current){var e=_308.after(this._current,"onPause",lang.hitch(this,function(arg){this._fire("onPause",arguments);e.remove();}),true);this._current.pause();}return this;},gotoPercent:function(_317,_318){this.pause();var _319=this.duration*_317;this._current=null;_307.some(this._animations,function(a,_31a){if(_319<=a.duration){this._current=a;this._index=_31a;return true;}_319-=a.duration;return false;},this);if(this._current){this._current.gotoPercent(_319/this._current.duration);}if(_318){this.play();}return this;},stop:function(_31b){if(this._current){if(_31b){for(;this._index+1<this._animations.length;++this._index){this._animations[this._index].stop(true);}this._current=this._animations[this._index];}var e=_308.after(this._current,"onStop",lang.hitch(this,function(arg){this._fire("onStop",arguments);e.remove();}),true);this._current.stop();}return this;},status:function(){return this._current?this._current.status():"stopped";},destroy:function(){this.stop();if(this._onAnimateCtx){this._onAnimateCtx.remove();}if(this._onEndCtx){this._onEndCtx.remove();}}});lang.extend(_310,_30f);_30e.chain=function(_31c){return new _310(lang.isArray(_31c)?_31c:Array.prototype.slice.call(_31c,0));};var _31d=function(_31e){this._animations=_31e||[];this._connects=[];this._finished=0;this.duration=0;_307.forEach(_31e,function(a){var _31f=a.duration;if(a.delay){_31f+=a.delay;}if(this.duration<_31f){this.duration=_31f;}this._connects.push(_308.after(a,"onEnd",lang.hitch(this,"_onEnd"),true));},this);this._pseudoAnimation=new _309.Animation({curve:[0,1],duration:this.duration});var self=this;_307.forEach(["beforeBegin","onBegin","onPlay","onAnimate","onPause","onStop","onEnd"],function(evt){self._connects.push(_308.after(self._pseudoAnimation,evt,function(){self._fire(evt,arguments);},true));});};lang.extend(_31d,{_doAction:function(_320,args){_307.forEach(this._animations,function(a){a[_320].apply(a,args);});return this;},_onEnd:function(){if(++this._finished>this._animations.length){this._fire("onEnd");}},_call:function(_321,args){var t=this._pseudoAnimation;t[_321].apply(t,args);},play:function(_322,_323){this._finished=0;this._doAction("play",arguments);this._call("play",arguments);return this;},pause:function(){this._doAction("pause",arguments);this._call("pause",arguments);return this;},gotoPercent:function(_324,_325){var ms=this.duration*_324;_307.forEach(this._animations,function(a){a.gotoPercent(a.duration<ms?1:(ms/a.duration),_325);});this._call("gotoPercent",arguments);return this;},stop:function(_326){this._doAction("stop",arguments);this._call("stop",arguments);return this;},status:function(){return this._pseudoAnimation.status();},destroy:function(){this.stop();_307.forEach(this._connects,function(_327){_327.remove();});}});lang.extend(_31d,_30f);_30e.combine=function(_328){return new _31d(lang.isArray(_328)?_328:Array.prototype.slice.call(_328,0));};_30e.wipeIn=function(args){var node=args.node=dom.byId(args.node),s=node.style,o;var anim=_309.animateProperty(lang.mixin({properties:{height:{start:function(){o=s.overflow;s.overflow="hidden";if(s.visibility=="hidden"||s.display=="none"){s.height="1px";s.display="";s.visibility="";return 1;}else{var _329=_30a.get(node,"height");return Math.max(_329,1);}},end:function(){return node.scrollHeight;}}}},args));var fini=function(){s.height="auto";s.overflow=o;};_308.after(anim,"onStop",fini,true);_308.after(anim,"onEnd",fini,true);return anim;};_30e.wipeOut=function(args){var node=args.node=dom.byId(args.node),s=node.style,o;var anim=_309.animateProperty(lang.mixin({properties:{height:{end:1}}},args));_308.after(anim,"beforeBegin",function(){o=s.overflow;s.overflow="hidden";s.display="";},true);var fini=function(){s.overflow=o;s.height="auto";s.display="none";};_308.after(anim,"onStop",fini,true);_308.after(anim,"onEnd",fini,true);return anim;};_30e.slideTo=function(args){var node=args.node=dom.byId(args.node),top=null,left=null;var init=(function(n){return function(){var cs=_30a.getComputedStyle(n);var pos=cs.position;top=(pos=="absolute"?n.offsetTop:parseInt(cs.top)||0);left=(pos=="absolute"?n.offsetLeft:parseInt(cs.left)||0);if(pos!="absolute"&&pos!="relative"){var ret=geom.position(n,true);top=ret.y;left=ret.x;n.style.position="absolute";n.style.top=top+"px";n.style.left=left+"px";}};})(node);init();var anim=_309.animateProperty(lang.mixin({properties:{top:args.top||0,left:args.left||0}},args));_308.after(anim,"beforeBegin",init,true);return anim;};return _30e;});},"dojo/dnd/Moveable":function(){define(["../_base/array","../_base/declare","../_base/lang","../dom","../dom-class","../Evented","../has","../on","../topic","../touch","./common","./Mover","../_base/window"],function(_32a,_32b,lang,dom,_32c,_32d,has,on,_32e,_32f,dnd,_330,win){var _331;var _332=function(){};function _333(){if("touchAction" in document.body.style){_331="touchAction";}else{if("msTouchAction" in document.body.style){_331="msTouchAction";}}_332=function _332(node,_334){node.style[_331]=_334;};_332(arguments[0],arguments[1]);};if(has("touch-action")){_332=_333;}var _335=_32b("dojo.dnd.Moveable",[_32d],{handle:"",delay:0,skip:false,constructor:function(node,_336){this.node=dom.byId(node);_332(this.node,"none");if(!_336){_336={};}this.handle=_336.handle?dom.byId(_336.handle):null;if(!this.handle){this.handle=this.node;}this.delay=_336.delay>0?_336.delay:0;this.skip=_336.skip;this.mover=_336.mover?_336.mover:_330;this.events=[on(this.handle,_32f.press,lang.hitch(this,"onMouseDown")),on(this.handle,"dragstart",lang.hitch(this,"onSelectStart")),on(this.handle,"selectstart",lang.hitch(this,"onSelectStart"))];},markupFactory:function(_337,node,Ctor){return new Ctor(node,_337);},destroy:function(){_32a.forEach(this.events,function(_338){_338.remove();});_332(this.node,"");this.events=this.node=this.handle=null;},onMouseDown:function(e){if(this.skip&&dnd.isFormElement(e)){return;}if(this.delay){this.events.push(on(this.handle,_32f.move,lang.hitch(this,"onMouseMove")),on(this.handle.ownerDocument,_32f.release,lang.hitch(this,"onMouseUp")));this._lastX=e.pageX;this._lastY=e.pageY;}else{this.onDragDetected(e);}e.stopPropagation();e.preventDefault();},onMouseMove:function(e){if(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.pageY-this._lastY)>this.delay){this.onMouseUp(e);this.onDragDetected(e);}e.stopPropagation();e.preventDefault();},onMouseUp:function(e){for(var i=0;i<2;++i){this.events.pop().remove();}e.stopPropagation();e.preventDefault();},onSelectStart:function(e){if(!this.skip||!dnd.isFormElement(e)){e.stopPropagation();e.preventDefault();}},onDragDetected:function(e){new this.mover(this.node,e,this);},onMoveStart:function(_339){_32e.publish("/dnd/move/start",_339);_32c.add(win.body(),"dojoMove");_32c.add(this.node,"dojoMoveItem");},onMoveStop:function(_33a){_32e.publish("/dnd/move/stop",_33a);_32c.remove(win.body(),"dojoMove");_32c.remove(this.node,"dojoMoveItem");},onFirstMove:function(){},onMove:function(_33b,_33c){this.onMoving(_33b,_33c);var s=_33b.node.style;s.left=_33c.l+"px";s.top=_33c.t+"px";this.onMoved(_33b,_33c);},onMoving:function(){},onMoved:function(){}});return _335;});},"dojo/dnd/common":function(){define(["../sniff","../_base/kernel","../_base/lang","../dom"],function(has,_33d,lang,dom){var _33e=lang.getObject("dojo.dnd",true);_33e.getCopyKeyState=function(evt){return evt[has("mac")?"metaKey":"ctrlKey"];};_33e._uniqueId=0;_33e.getUniqueId=function(){var id;do{id=_33d._scopeName+"Unique"+(++_33e._uniqueId);}while(dom.byId(id));return id;};_33e._empty={};_33e.isFormElement=function(e){var t=e.target;if(t.nodeType==3){t=t.parentNode;}return " a button textarea input select option ".indexOf(" "+t.tagName.toLowerCase()+" ")>=0;};return _33e;});},"dojo/dnd/Mover":function(){define(["../_base/array","../_base/declare","../_base/lang","../sniff","../_base/window","../dom","../dom-geometry","../dom-style","../Evented","../on","../touch","./common","./autoscroll"],function(_33f,_340,lang,has,win,dom,_341,_342,_343,on,_344,dnd,_345){return _340("dojo.dnd.Mover",[_343],{constructor:function(node,e,host){this.node=dom.byId(node);this.marginBox={l:e.pageX,t:e.pageY};this.mouseButton=e.button;var h=(this.host=host),d=node.ownerDocument;function _346(e){e.preventDefault();e.stopPropagation();};this.events=[on(d,_344.move,lang.hitch(this,"onFirstMove")),on(d,_344.move,lang.hitch(this,"onMouseMove")),on(d,_344.release,lang.hitch(this,"onMouseUp")),on(d,"dragstart",_346),on(d.body,"selectstart",_346)];_345.autoScrollStart(d);if(h&&h.onMoveStart){h.onMoveStart(this);}},onMouseMove:function(e){_345.autoScroll(e);var m=this.marginBox;this.host.onMove(this,{l:m.l+e.pageX,t:m.t+e.pageY},e);e.preventDefault();e.stopPropagation();},onMouseUp:function(e){if(has("webkit")&&has("mac")&&this.mouseButton==2?e.button==0:this.mouseButton==e.button){this.destroy();}e.preventDefault();e.stopPropagation();},onFirstMove:function(e){var s=this.node.style,l,t,h=this.host;switch(s.position){case "relative":case "absolute":l=Math.round(parseFloat(s.left))||0;t=Math.round(parseFloat(s.top))||0;break;default:s.position="absolute";var m=_341.getMarginBox(this.node);var b=win.doc.body;var bs=_342.getComputedStyle(b);var bm=_341.getMarginBox(b,bs);var bc=_341.getContentBox(b,bs);l=m.l-(bc.l-bm.l);t=m.t-(bc.t-bm.t);break;}this.marginBox.l=l-this.marginBox.l;this.marginBox.t=t-this.marginBox.t;if(h&&h.onFirstMove){h.onFirstMove(this,e);}this.events.shift().remove();},destroy:function(){_33f.forEach(this.events,function(_347){_347.remove();});var h=this.host;if(h&&h.onMoveStop){h.onMoveStop(this);}this.events=this.node=this.host=null;}});});},"dojo/dnd/autoscroll":function(){define(["../_base/lang","../sniff","../_base/window","../dom-geometry","../dom-style","../window"],function(lang,has,win,_348,_349,_34a){var _34b={};lang.setObject("dojo.dnd.autoscroll",_34b);_34b.getViewport=_34a.getBox;_34b.V_TRIGGER_AUTOSCROLL=32;_34b.H_TRIGGER_AUTOSCROLL=32;_34b.V_AUTOSCROLL_VALUE=16;_34b.H_AUTOSCROLL_VALUE=16;var _34c,doc=win.doc,_34d=Infinity,_34e=Infinity;_34b.autoScrollStart=function(d){doc=d;_34c=_34a.getBox(doc);var html=win.body(doc).parentNode;_34d=Math.max(html.scrollHeight-_34c.h,0);_34e=Math.max(html.scrollWidth-_34c.w,0);};_34b.autoScroll=function(e){var v=_34c||_34a.getBox(doc),html=win.body(doc).parentNode,dx=0,dy=0;if(e.clientX<_34b.H_TRIGGER_AUTOSCROLL){dx=-_34b.H_AUTOSCROLL_VALUE;}else{if(e.clientX>v.w-_34b.H_TRIGGER_AUTOSCROLL){dx=Math.min(_34b.H_AUTOSCROLL_VALUE,_34e-html.scrollLeft);}}if(e.clientY<_34b.V_TRIGGER_AUTOSCROLL){dy=-_34b.V_AUTOSCROLL_VALUE;}else{if(e.clientY>v.h-_34b.V_TRIGGER_AUTOSCROLL){dy=Math.min(_34b.V_AUTOSCROLL_VALUE,_34d-html.scrollTop);}}window.scrollBy(dx,dy);};_34b._validNodes={"div":1,"p":1,"td":1};_34b._validOverflow={"auto":1,"scroll":1};_34b.autoScrollNodes=function(e){var b,t,w,h,rx,ry,dx=0,dy=0,_34f,_350;for(var n=e.target;n;){if(n.nodeType==1&&(n.tagName.toLowerCase() in _34b._validNodes)){var s=_349.getComputedStyle(n),_351=(s.overflowX.toLowerCase() in _34b._validOverflow),_352=(s.overflowY.toLowerCase() in _34b._validOverflow);if(_351||_352){b=_348.getContentBox(n,s);t=_348.position(n,true);}if(_351){w=Math.min(_34b.H_TRIGGER_AUTOSCROLL,b.w/2);rx=e.pageX-t.x;if(has("webkit")||has("opera")){rx+=win.body().scrollLeft;}dx=0;if(rx>0&&rx<b.w){if(rx<w){dx=-w;}else{if(rx>b.w-w){dx=w;}}_34f=n.scrollLeft;n.scrollLeft=n.scrollLeft+dx;}}if(_352){h=Math.min(_34b.V_TRIGGER_AUTOSCROLL,b.h/2);ry=e.pageY-t.y;if(has("webkit")||has("opera")){ry+=win.body().scrollTop;}dy=0;if(ry>0&&ry<b.h){if(ry<h){dy=-h;}else{if(ry>b.h-h){dy=h;}}_350=n.scrollTop;n.scrollTop=n.scrollTop+dy;}}if(dx||dy){return;}}try{n=n.parentNode;}catch(x){n=null;}}_34b.autoScroll(e);};return _34b;});},"dojo/dnd/move":function(){define(["../_base/declare","../dom-geometry","../dom-style","./common","./Mover","./Moveable"],function(_353,_354,_355,dnd,_356,_357){var _358=_353("dojo.dnd.move.constrainedMoveable",_357,{constraints:function(){},within:false,constructor:function(node,_359){if(!_359){_359={};}this.constraints=_359.constraints;this.within=_359.within;},onFirstMove:function(_35a){var c=this.constraintBox=this.constraints.call(this,_35a);c.r=c.l+c.w;c.b=c.t+c.h;if(this.within){var mb=_354.getMarginSize(_35a.node);c.r-=mb.w;c.b-=mb.h;}},onMove:function(_35b,_35c){var c=this.constraintBox,s=_35b.node.style;this.onMoving(_35b,_35c);_35c.l=_35c.l<c.l?c.l:c.r<_35c.l?c.r:_35c.l;_35c.t=_35c.t<c.t?c.t:c.b<_35c.t?c.b:_35c.t;s.left=_35c.l+"px";s.top=_35c.t+"px";this.onMoved(_35b,_35c);}});var _35d=_353("dojo.dnd.move.boxConstrainedMoveable",_358,{box:{},constructor:function(node,_35e){var box=_35e&&_35e.box;this.constraints=function(){return box;};}});var _35f=_353("dojo.dnd.move.parentConstrainedMoveable",_358,{area:"content",constructor:function(node,_360){var area=_360&&_360.area;this.constraints=function(){var n=this.node.parentNode,s=_355.getComputedStyle(n),mb=_354.getMarginBox(n,s);if(area=="margin"){return mb;}var t=_354.getMarginExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="border"){return mb;}t=_354.getBorderExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="padding"){return mb;}t=_354.getPadExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;return mb;};}});return {constrainedMoveable:_358,boxConstrainedMoveable:_35d,parentConstrainedMoveable:_35f};});},"dojo/dnd/TimedMoveable":function(){define(["../_base/declare","./Moveable"],function(_361,_362){var _363=_362.prototype.onMove;return _361("dojo.dnd.TimedMoveable",_362,{timeout:40,constructor:function(node,_364){if(!_364){_364={};}if(_364.timeout&&typeof _364.timeout=="number"&&_364.timeout>=0){this.timeout=_364.timeout;}},onMoveStop:function(_365){if(_365._timer){clearTimeout(_365._timer);_363.call(this,_365,_365._leftTop);}_362.prototype.onMoveStop.apply(this,arguments);},onMove:function(_366,_367){_366._leftTop=_367;if(!_366._timer){var _368=this;_366._timer=setTimeout(function(){_366._timer=null;_363.call(_368,_366,_366._leftTop);},this.timeout);}}});});},"dojo/fx/Toggler":function(){define(["../_base/lang","../_base/declare","../_base/fx","../aspect"],function(lang,_369,_36a,_36b){return _369("dojo.fx.Toggler",null,{node:null,showFunc:_36a.fadeIn,hideFunc:_36a.fadeOut,showDuration:200,hideDuration:200,constructor:function(args){var _36c=this;lang.mixin(_36c,args);_36c.node=args.node;_36c._showArgs=lang.mixin({},args);_36c._showArgs.node=_36c.node;_36c._showArgs.duration=_36c.showDuration;_36c.showAnim=_36c.showFunc(_36c._showArgs);_36c._hideArgs=lang.mixin({},args);_36c._hideArgs.node=_36c.node;_36c._hideArgs.duration=_36c.hideDuration;_36c.hideAnim=_36c.hideFunc(_36c._hideArgs);_36b.after(_36c.showAnim,"beforeBegin",lang.hitch(_36c.hideAnim,"stop",true),true);_36b.after(_36c.hideAnim,"beforeBegin",lang.hitch(_36c.showAnim,"stop",true),true);},show:function(_36d){return this.showAnim.play(_36d||0);},hide:function(_36e){return this.hideAnim.play(_36e||0);}});});},"dojo/html":function(){define(["./_base/kernel","./_base/lang","./_base/array","./_base/declare","./dom","./dom-construct","./parser"],function(_36f,lang,_370,_371,dom,_372,_373){var _374=0;var html={_secureForInnerHtml:function(cont){return cont.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"");},_emptyNode:_372.empty,_setNodeContent:function(node,cont){_372.empty(node);if(cont){if(typeof cont=="number"){cont=cont.toString();}if(typeof cont=="string"){cont=_372.toDom(cont,node.ownerDocument);}if(!cont.nodeType&&lang.isArrayLike(cont)){for(var _375=cont.length,i=0;i<cont.length;i=_375==cont.length?i+1:0){_372.place(cont[i],node,"last");}}else{_372.place(cont,node,"last");}}return node;},_ContentSetter:_371("dojo.html._ContentSetter",null,{node:"",content:"",id:"",cleanContent:false,extractContent:false,parseContent:false,parserScope:_36f._scopeName,startup:true,constructor:function(_376,node){lang.mixin(this,_376||{});node=this.node=dom.byId(this.node||node);if(!this.id){this.id=["Setter",(node)?node.id||node.tagName:"",_374++].join("_");}},set:function(cont,_377){if(undefined!==cont){this.content=cont;}if(typeof cont=="number"){cont=cont.toString();}if(_377){this._mixin(_377);}this.onBegin();this.setContent();var ret=this.onEnd();if(ret&&ret.then){return ret;}else{return this.node;}},setContent:function(){var node=this.node;if(!node){throw new Error(this.declaredClass+": setContent given no node");}try{node=html._setNodeContent(node,this.content);}catch(e){var _378=this.onContentError(e);try{node.innerHTML=_378;}catch(e){console.error("Fatal "+this.declaredClass+".setContent could not change content due to "+e.message,e);}}this.node=node;},empty:function(){if(this.parseDeferred){if(!this.parseDeferred.isResolved()){this.parseDeferred.cancel();}delete this.parseDeferred;}if(this.parseResults&&this.parseResults.length){_370.forEach(this.parseResults,function(w){if(w.destroy){w.destroy();}});delete this.parseResults;}_372.empty(this.node);},onBegin:function(){var cont=this.content;if(lang.isString(cont)){if(this.cleanContent){cont=html._secureForInnerHtml(cont);}if(this.extractContent){var _379=cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_379){cont=_379[1];}}}this.empty();this.content=cont;return this.node;},onEnd:function(){if(this.parseContent){this._parse();}return this.node;},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content;},onContentError:function(err){return "Error occurred setting content: "+err;},onExecError:function(err){return "Error occurred executing scripts: "+err;},_mixin:function(_37a){var _37b={},key;for(key in _37a){if(key in _37b){continue;}this[key]=_37a[key];}},_parse:function(){var _37c=this.node;try{var _37d={};_370.forEach(["dir","lang","textDir"],function(name){if(this[name]){_37d[name]=this[name];}},this);var self=this;this.parseDeferred=_373.parse({rootNode:_37c,noStart:!this.startup,inherited:_37d,scope:this.parserScope}).then(function(_37e){return self.parseResults=_37e;},function(e){self._onError("Content",e,"Error parsing in _ContentSetter#"+self.id);});}catch(e){this._onError("Content",e,"Error parsing in _ContentSetter#"+this.id);}},_onError:function(type,err,_37f){var _380=this["on"+type+"Error"].call(this,err);if(_37f){console.error(_37f,err);}else{if(_380){html._setNodeContent(this.node,_380,true);}}}}),set:function(node,cont,_381){if(undefined==cont){console.warn("dojo.html.set: no cont argument provided, using empty string");cont="";}if(typeof cont=="number"){cont=cont.toString();}if(!_381){return html._setNodeContent(node,cont,true);}else{var op=new html._ContentSetter(lang.mixin(_381,{content:cont,node:node}));return op.set();}}};lang.setObject("dojo.html",html);return html;});},"dojo/i18n":function(){define(["./_base/kernel","require","./has","./_base/array","./_base/config","./_base/lang","./_base/xhr","./json","module"],function(dojo,_382,has,_383,_384,lang,xhr,json,_385){has.add("dojo-preload-i18n-Api",1);1||has.add("dojo-v1x-i18n-Api",1);var _386=dojo.i18n={},_387=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,_388=function(root,_389,_38a,_38b){for(var _38c=[_38a+_38b],_38d=_389.split("-"),_38e="",i=0;i<_38d.length;i++){_38e+=(_38e?"-":"")+_38d[i];if(!root||root[_38e]){_38c.push(_38a+_38e+"/"+_38b);_38c.specificity=_38e;}}return _38c;},_38f={},_390=function(_391,_392,_393){_393=_393?_393.toLowerCase():dojo.locale;_391=_391.replace(/\./g,"/");_392=_392.replace(/\./g,"/");return (/root/i.test(_393))?(_391+"/nls/"+_392):(_391+"/nls/"+_393+"/"+_392);},_394=dojo.getL10nName=function(_395,_396,_397){return _395=_385.id+"!"+_390(_395,_396,_397);},_398=function(_399,_39a,_39b,_39c,_39d,load){_399([_39a],function(root){var _39e=lang.clone(root.root||root.ROOT),_39f=_388(!root._v1x&&root,_39d,_39b,_39c);_399(_39f,function(){for(var i=1;i<_39f.length;i++){_39e=lang.mixin(lang.clone(_39e),arguments[i]);}var _3a0=_39a+"/"+_39d;_38f[_3a0]=_39e;_39e.$locale=_39f.specificity;load();});});},_3a1=function(id,_3a2){return /^\./.test(id)?_3a2(id):id;},_3a3=function(_3a4){var list=_384.extraLocale||[];list=lang.isArray(list)?list:[list];list.push(_3a4);return list;},load=function(id,_3a5,load){var _3a6=_387.exec(id),_3a7=_3a6[1]+"/",_3a8=_3a6[5]||_3a6[4],_3a9=_3a7+_3a8,_3aa=(_3a6[5]&&_3a6[4]),_3ab=_3aa||dojo.locale||"",_3ac=_3a9+"/"+_3ab,_3ad=_3aa?[_3ab]:_3a3(_3ab),_3ae=_3ad.length,_3af=function(){if(!--_3ae){load(lang.delegate(_38f[_3ac]));}},_3b0=id.split("*"),_3b1=_3b0[1]=="preload";if(has("dojo-preload-i18n-Api")){if(_3b1){if(!_38f[id]){_38f[id]=1;_3bb(_3b0[2],json.parse(_3b0[3]),1,_3a5);}load(1);}if(_3b1||(_3d8(id,_3a5,load)&&!_38f[_3ac])){return;}}else{if(_3b1){load(1);return;}}_383.forEach(_3ad,function(_3b2){var _3b3=_3a9+"/"+_3b2;if(has("dojo-preload-i18n-Api")){_3b4(_3b3);}if(!_38f[_3b3]){_398(_3a5,_3a9,_3a7,_3a8,_3b2,_3af);}else{_3af();}});};if(has("dojo-preload-i18n-Api")||1){var _3b5=_386.normalizeLocale=function(_3b6){var _3b7=_3b6?_3b6.toLowerCase():dojo.locale;return _3b7=="root"?"ROOT":_3b7;},isXd=function(mid,_3b8){return (1&&1)?_3b8.isXdUrl(_382.toUrl(mid+".js")):true;},_3b9=0,_3ba=[],_3bb=_386._preloadLocalizations=function(_3bc,_3bd,_3be,_3bf){_3bf=_3bf||_382;function _3c0(mid,_3c1){if(isXd(mid,_3bf)||_3be){_3bf([mid],_3c1);}else{_3dd([mid],_3c1,_3bf);}};function _3c2(_3c3,func){var _3c4=_3c3.split("-");while(_3c4.length){if(func(_3c4.join("-"))){return;}_3c4.pop();}func("ROOT");};function _3c5(){_3b9++;};function _3c6(){--_3b9;while(!_3b9&&_3ba.length){load.apply(null,_3ba.shift());}};function _3c7(path,name,loc,_3c8){return _3c8.toAbsMid(path+name+"/"+loc);};function _3c9(_3ca){_3ca=_3b5(_3ca);_3c2(_3ca,function(loc){if(_383.indexOf(_3bd,loc)>=0){var mid=_3bc.replace(/\./g,"/")+"_"+loc;_3c5();_3c0(mid,function(_3cb){for(var p in _3cb){var _3cc=_3cb[p],_3cd=p.match(/(.+)\/([^\/]+)$/),_3ce,_3cf;if(!_3cd){continue;}_3ce=_3cd[2];_3cf=_3cd[1]+"/";if(!_3cc._localized){continue;}var _3d0;if(loc==="ROOT"){var root=_3d0=_3cc._localized;delete _3cc._localized;root.root=_3cc;_38f[_382.toAbsMid(p)]=root;}else{_3d0=_3cc._localized;_38f[_3c7(_3cf,_3ce,loc,_382)]=_3cc;}if(loc!==_3ca){function _3d1(_3d2,_3d3,_3d4,_3d5){var _3d6=[],_3d7=[];_3c2(_3ca,function(loc){if(_3d5[loc]){_3d6.push(_382.toAbsMid(_3d2+loc+"/"+_3d3));_3d7.push(_3c7(_3d2,_3d3,loc,_382));}});if(_3d6.length){_3c5();_3bf(_3d6,function(){for(var i=_3d6.length-1;i>=0;i--){_3d4=lang.mixin(lang.clone(_3d4),arguments[i]);_38f[_3d7[i]]=_3d4;}_38f[_3c7(_3d2,_3d3,_3ca,_382)]=lang.clone(_3d4);_3c6();});}else{_38f[_3c7(_3d2,_3d3,_3ca,_382)]=_3d4;}};_3d1(_3cf,_3ce,_3cc,_3d0);}}_3c6();});return true;}return false;});};_3c9();_383.forEach(dojo.config.extraLocale,_3c9);},_3d8=function(id,_3d9,load){if(_3b9){_3ba.push([id,_3d9,load]);}return _3b9;},_3b4=function(){};}if(1){var _3da={},_3db={},_3dc,_3dd=function(deps,_3de,_3df){var _3e0=[];_383.forEach(deps,function(mid){var url=_3df.toUrl(mid+".js");function load(text){if(!_3dc){_3dc=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},"+"\t require = function(){define.called = 1;};"+"try{"+"define.called = 0;"+"eval(__bundle);"+"if(define.called==1)"+"return __amdValue;"+"if((__checkForLegacyModules = __checkForLegacyModules(__mid)))"+"return __checkForLegacyModules;"+"}catch(e){}"+"try{"+"return eval('('+__bundle+')');"+"}catch(e){"+"return e;"+"}");}var _3e1=_3dc(text,_3b4,mid,_3da);if(_3e1===_3da){_3e0.push(_38f[url]=_3da.result);}else{if(_3e1 instanceof Error){console.error("failed to evaluate i18n bundle; url="+url,_3e1);_3e1={};}_3e0.push(_38f[url]=(/nls\/[^\/]+\/[^\/]+$/.test(url)?_3e1:{root:_3e1,_v1x:1}));}};if(_38f[url]){_3e0.push(_38f[url]);}else{var _3e2=_3df.syncLoadNls(mid);if(!_3e2){_3e2=_3b4(mid.replace(/nls\/([^\/]*)\/([^\/]*)$/,"nls/$2/$1"));}if(_3e2){_3e0.push(_3e2);}else{if(!xhr){try{_3df.getText(url,true,load);}catch(e){_3e0.push(_38f[url]={});}}else{xhr.get({url:url,sync:true,load:load,error:function(){_3e0.push(_38f[url]={});}});}}}});_3de&&_3de.apply(null,_3e0);};_3b4=function(_3e3){for(var _3e4,_3e5=_3e3.split("/"),_3e6=dojo.global[_3e5[0]],i=1;_3e6&&i<_3e5.length-1;_3e6=_3e6[_3e5[i++]]){}if(_3e6){_3e4=_3e6[_3e5[i]];if(!_3e4){_3e4=_3e6[_3e5[i].replace(/-/g,"_")];}if(_3e4){_38f[_3e3]=_3e4;}}return _3e4;};_386.getLocalization=function(_3e7,_3e8,_3e9){var _3ea,_3eb=_390(_3e7,_3e8,_3e9);if(_3db[_3eb]){return _3db[_3eb];}load(_3eb,(!isXd(_3eb,_382)?function(deps,_3ec){_3dd(deps,_3ec,_382);}:_382),function(_3ed){_3db[_3eb]=_3ed;_3ea=_3ed;});return _3ea;};}else{_386.getLocalization=function(_3ee,_3ef,_3f0){var key=_3ee.replace(/\./g,"/")+"/nls/"+_3ef+"/"+(_3f0||_384.locale);return this.cache[key];};}return lang.mixin(_386,{dynamic:true,normalize:_3a1,load:load,cache:_38f,getL10nName:_394});});},"dijit/dijit":function(){define(["./main","./_base","dojo/parser","./_Widget","./_TemplatedMixin","./_Container","./layout/_LayoutWidget","./form/_FormWidget","./form/_FormValueWidget"],function(_3f1){return _3f1;});},"dijit/main":function(){define(["dojo/_base/kernel"],function(dojo){return dojo.dijit;});},"dijit/_base":function(){define(["./main","./a11y","./WidgetSet","./_base/focus","./_base/manager","./_base/place","./_base/popup","./_base/scroll","./_base/sniff","./_base/typematic","./_base/wai","./_base/window"],function(_3f2){return _3f2._base;});},"dijit/a11y":function(){define(["dojo/_base/array","dojo/dom","dojo/dom-attr","dojo/dom-style","dojo/_base/lang","dojo/sniff","./main"],function(_3f3,dom,_3f4,_3f5,lang,has,_3f6){var _3f7;var a11y={_isElementShown:function(elem){var s=_3f5.get(elem);return (s.visibility!="hidden")&&(s.visibility!="collapsed")&&(s.display!="none")&&(_3f4.get(elem,"type")!="hidden");},hasDefaultTabStop:function(elem){switch(elem.nodeName.toLowerCase()){case "a":return _3f4.has(elem,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return true;case "iframe":var body;try{var _3f8=elem.contentDocument;if("designMode" in _3f8&&_3f8.designMode=="on"){return true;}body=_3f8.body;}catch(e1){try{body=elem.contentWindow.document.body;}catch(e2){return false;}}return body&&(body.contentEditable=="true"||(body.firstChild&&body.firstChild.contentEditable=="true"));default:return elem.contentEditable=="true";}},effectiveTabIndex:function(elem){if(_3f4.get(elem,"disabled")){return _3f7;}else{if(_3f4.has(elem,"tabIndex")){return +_3f4.get(elem,"tabIndex");}else{return a11y.hasDefaultTabStop(elem)?0:_3f7;}}},isTabNavigable:function(elem){return a11y.effectiveTabIndex(elem)>=0;},isFocusable:function(elem){return a11y.effectiveTabIndex(elem)>=-1;},_getTabNavigable:function(root){var _3f9,last,_3fa,_3fb,_3fc,_3fd,_3fe={};function _3ff(node){return node&&node.tagName.toLowerCase()=="input"&&node.type&&node.type.toLowerCase()=="radio"&&node.name&&node.name.toLowerCase();};var _400=a11y._isElementShown,_401=a11y.effectiveTabIndex;var _402=function(_403){for(var _404=_403.firstChild;_404;_404=_404.nextSibling){if(_404.nodeType!=1||(has("ie")<=9&&_404.scopeName!=="HTML")||!_400(_404)){continue;}var _405=_401(_404);if(_405>=0){if(_405==0){if(!_3f9){_3f9=_404;}last=_404;}else{if(_405>0){if(!_3fa||_405<_3fb){_3fb=_405;_3fa=_404;}if(!_3fc||_405>=_3fd){_3fd=_405;_3fc=_404;}}}var rn=_3ff(_404);if(_3f4.get(_404,"checked")&&rn){_3fe[rn]=_404;}}if(_404.nodeName.toUpperCase()!="SELECT"){_402(_404);}}};if(_400(root)){_402(root);}function rs(node){return _3fe[_3ff(node)]||node;};return {first:rs(_3f9),last:rs(last),lowest:rs(_3fa),highest:rs(_3fc)};},getFirstInTabbingOrder:function(root,doc){var _406=a11y._getTabNavigable(dom.byId(root,doc));return _406.lowest?_406.lowest:_406.first;},getLastInTabbingOrder:function(root,doc){var _407=a11y._getTabNavigable(dom.byId(root,doc));return _407.last?_407.last:_407.highest;}};1&&lang.mixin(_3f6,a11y);return a11y;});},"dijit/WidgetSet":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","./registry"],function(_408,_409,_40a,_40b){var _40c=_409("dijit.WidgetSet",null,{constructor:function(){this._hash={};this.length=0;},add:function(_40d){if(this._hash[_40d.id]){throw new Error("Tried to register widget with id=="+_40d.id+" but that id is already registered");}this._hash[_40d.id]=_40d;this.length++;},remove:function(id){if(this._hash[id]){delete this._hash[id];this.length--;}},forEach:function(func,_40e){_40e=_40e||_40a.global;var i=0,id;for(id in this._hash){func.call(_40e,this._hash[id],i++,this._hash);}return this;},filter:function(_40f,_410){_410=_410||_40a.global;var res=new _40c(),i=0,id;for(id in this._hash){var w=this._hash[id];if(_40f.call(_410,w,i++,this._hash)){res.add(w);}}return res;},byId:function(id){return this._hash[id];},byClass:function(cls){var res=new _40c(),id,_411;for(id in this._hash){_411=this._hash[id];if(_411.declaredClass==cls){res.add(_411);}}return res;},toArray:function(){var ar=[];for(var id in this._hash){ar.push(this._hash[id]);}return ar;},map:function(func,_412){return _408.map(this.toArray(),func,_412);},every:function(func,_413){_413=_413||_40a.global;var x=0,i;for(i in this._hash){if(!func.call(_413,this._hash[i],x++,this._hash)){return false;}}return true;},some:function(func,_414){_414=_414||_40a.global;var x=0,i;for(i in this._hash){if(func.call(_414,this._hash[i],x++,this._hash)){return true;}}return false;}});_408.forEach(["forEach","filter","byClass","map","every","some"],function(func){_40b[func]=_40c.prototype[func];});return _40c;});},"dijit/registry":function(){define(["dojo/_base/array","dojo/_base/window","./main"],function(_415,win,_416){var _417={},hash={};var _418={length:0,add:function(_419){if(hash[_419.id]){throw new Error("Tried to register widget with id=="+_419.id+" but that id is already registered");}hash[_419.id]=_419;this.length++;},remove:function(id){if(hash[id]){delete hash[id];this.length--;}},byId:function(id){return typeof id=="string"?hash[id]:id;},byNode:function(node){return hash[node.getAttribute("widgetId")];},toArray:function(){var ar=[];for(var id in hash){ar.push(hash[id]);}return ar;},getUniqueId:function(_41a){var id;do{id=_41a+"_"+(_41a in _417?++_417[_41a]:_417[_41a]=0);}while(hash[id]);return _416._scopeName=="dijit"?id:_416._scopeName+"_"+id;},findWidgets:function(root,_41b){var _41c=[];function _41d(root){for(var node=root.firstChild;node;node=node.nextSibling){if(node.nodeType==1){var _41e=node.getAttribute("widgetId");if(_41e){var _41f=hash[_41e];if(_41f){_41c.push(_41f);}}else{if(node!==_41b){_41d(node);}}}}};_41d(root);return _41c;},_destroyAll:function(){_416._curFocus=null;_416._prevFocus=null;_416._activeStack=[];_415.forEach(_418.findWidgets(win.body()),function(_420){if(!_420._destroyed){if(_420.destroyRecursive){_420.destroyRecursive();}else{if(_420.destroy){_420.destroy();}}}});},getEnclosingWidget:function(node){while(node){var id=node.nodeType==1&&node.getAttribute("widgetId");if(id){return hash[id];}node=node.parentNode;}return null;},_hash:hash};_416.registry=_418;return _418;});},"dijit/_base/focus":function(){define(["dojo/_base/array","dojo/dom","dojo/_base/lang","dojo/topic","dojo/_base/window","../focus","../selection","../main"],function(_421,dom,lang,_422,win,_423,_424,_425){var _426={_curFocus:null,_prevFocus:null,isCollapsed:function(){return _425.getBookmark().isCollapsed;},getBookmark:function(){var sel=win.global==window?_424:new _424.SelectionManager(win.global);return sel.getBookmark();},moveToBookmark:function(_427){var sel=win.global==window?_424:new _424.SelectionManager(win.global);return sel.moveToBookmark(_427);},getFocus:function(menu,_428){var node=!_423.curNode||(menu&&dom.isDescendant(_423.curNode,menu.domNode))?_425._prevFocus:_423.curNode;return {node:node,bookmark:node&&(node==_423.curNode)&&win.withGlobal(_428||win.global,_425.getBookmark),openedForWindow:_428};},_activeStack:[],registerIframe:function(_429){return _423.registerIframe(_429);},unregisterIframe:function(_42a){_42a&&_42a.remove();},registerWin:function(_42b,_42c){return _423.registerWin(_42b,_42c);},unregisterWin:function(_42d){_42d&&_42d.remove();}};_423.focus=function(_42e){if(!_42e){return;}var node="node" in _42e?_42e.node:_42e,_42f=_42e.bookmark,_430=_42e.openedForWindow,_431=_42f?_42f.isCollapsed:false;if(node){var _432=(node.tagName.toLowerCase()=="iframe")?node.contentWindow:node;if(_432&&_432.focus){try{_432.focus();}catch(e){}}_423._onFocusNode(node);}if(_42f&&win.withGlobal(_430||win.global,_425.isCollapsed)&&!_431){if(_430){_430.focus();}try{win.withGlobal(_430||win.global,_425.moveToBookmark,null,[_42f]);}catch(e2){}}};_423.watch("curNode",function(name,_433,_434){_425._curFocus=_434;_425._prevFocus=_433;if(_434){_422.publish("focusNode",_434);}});_423.watch("activeStack",function(name,_435,_436){_425._activeStack=_436;});_423.on("widget-blur",function(_437,by){_422.publish("widgetBlur",_437,by);});_423.on("widget-focus",function(_438,by){_422.publish("widgetFocus",_438,by);});lang.mixin(_425,_426);return _425;});},"dijit/focus":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/Evented","dojo/_base/lang","dojo/on","dojo/domReady","dojo/sniff","dojo/Stateful","dojo/_base/window","dojo/window","./a11y","./registry","./main"],function(_439,_43a,dom,_43b,_43c,_43d,_43e,lang,on,_43f,has,_440,win,_441,a11y,_442,_443){var _444;var _445;var _446=_43a([_440,_43e],{curNode:null,activeStack:[],constructor:function(){var _447=lang.hitch(this,function(node){if(dom.isDescendant(this.curNode,node)){this.set("curNode",null);}if(dom.isDescendant(this.prevNode,node)){this.set("prevNode",null);}});_439.before(_43d,"empty",_447);_439.before(_43d,"destroy",_447);},registerIframe:function(_448){return this.registerWin(_448.contentWindow,_448);},registerWin:function(_449,_44a){var _44b=this,body=_449.document&&_449.document.body;if(body){var _44c=has("pointer-events")?"pointerdown":has("MSPointer")?"MSPointerDown":has("touch-events")?"mousedown, touchstart":"mousedown";var mdh=on(_449.document,_44c,function(evt){if(evt&&evt.target&&evt.target.parentNode==null){return;}_44b._onTouchNode(_44a||evt.target,"mouse");});var fih=on(body,"focusin",function(evt){if(!evt.target.tagName){return;}var tag=evt.target.tagName.toLowerCase();if(tag=="#document"||tag=="body"){return;}if(a11y.isFocusable(evt.target)){_44b._onFocusNode(_44a||evt.target);}else{_44b._onTouchNode(_44a||evt.target);}});var foh=on(body,"focusout",function(evt){_44b._onBlurNode(_44a||evt.target);});return {remove:function(){mdh.remove();fih.remove();foh.remove();mdh=fih=foh=null;body=null;}};}},_onBlurNode:function(node){var now=(new Date()).getTime();if(now<_444+100){return;}if(this._clearFocusTimer){clearTimeout(this._clearFocusTimer);}this._clearFocusTimer=setTimeout(lang.hitch(this,function(){this.set("prevNode",this.curNode);this.set("curNode",null);}),0);if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);}if(now<_445+100){return;}this._clearActiveWidgetsTimer=setTimeout(lang.hitch(this,function(){delete this._clearActiveWidgetsTimer;this._setStack([]);}),0);},_onTouchNode:function(node,by){_445=(new Date()).getTime();if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);delete this._clearActiveWidgetsTimer;}if(_43c.contains(node,"dijitPopup")){node=node.firstChild;}var _44d=[];try{while(node){var _44e=_43b.get(node,"dijitPopupParent");if(_44e){node=_442.byId(_44e).domNode;}else{if(node.tagName&&node.tagName.toLowerCase()=="body"){if(node===win.body()){break;}node=_441.get(node.ownerDocument).frameElement;}else{var id=node.getAttribute&&node.getAttribute("widgetId"),_44f=id&&_442.byId(id);if(_44f&&!(by=="mouse"&&_44f.get("disabled"))){_44d.unshift(id);}node=node.parentNode;}}}}catch(e){}this._setStack(_44d,by);},_onFocusNode:function(node){if(!node){return;}if(node.nodeType==9){return;}_444=(new Date()).getTime();if(this._clearFocusTimer){clearTimeout(this._clearFocusTimer);delete this._clearFocusTimer;}this._onTouchNode(node);if(node==this.curNode){return;}this.set("prevNode",this.curNode);this.set("curNode",node);},_setStack:function(_450,by){var _451=this.activeStack,_452=_451.length-1,_453=_450.length-1;if(_450[_453]==_451[_452]){return;}this.set("activeStack",_450);var _454,i;for(i=_452;i>=0&&_451[i]!=_450[i];i--){_454=_442.byId(_451[i]);if(_454){_454._hasBeenBlurred=true;_454.set("focused",false);if(_454._focusManager==this){_454._onBlur(by);}this.emit("widget-blur",_454,by);}}for(i++;i<=_453;i++){_454=_442.byId(_450[i]);if(_454){_454.set("focused",true);if(_454._focusManager==this){_454._onFocus(by);}this.emit("widget-focus",_454,by);}}},focus:function(node){if(node){try{node.focus();}catch(e){}}}});var _455=new _446();_43f(function(){var _456=_455.registerWin(_441.get(document));if(has("ie")){on(window,"unload",function(){if(_456){_456.remove();_456=null;}});}});_443.focus=function(node){_455.focus(node);};for(var attr in _455){if(!/^_/.test(attr)){_443.focus[attr]=typeof _455[attr]=="function"?lang.hitch(_455,attr):_455[attr];}}_455.watch(function(attr,_457,_458){_443.focus[attr]=_458;});return _455;});},"dijit/selection":function(){define(["dojo/_base/array","dojo/dom","dojo/_base/lang","dojo/sniff","dojo/_base/window","dijit/focus"],function(_459,dom,lang,has,_45a,_45b){var _45c=function(win){var doc=win.document;this.getType=function(){if(doc.getSelection){var _45d="text";var oSel;try{oSel=win.getSelection();}catch(e){}if(oSel&&oSel.rangeCount==1){var _45e=oSel.getRangeAt(0);if((_45e.startContainer==_45e.endContainer)&&((_45e.endOffset-_45e.startOffset)==1)&&(_45e.startContainer.nodeType!=3)){_45d="control";}}return _45d;}else{return doc.selection.type.toLowerCase();}};this.getSelectedText=function(){if(doc.getSelection){var _45f=win.getSelection();return _45f?_45f.toString():"";}else{if(this.getType()=="control"){return null;}return doc.selection.createRange().text;}};this.getSelectedHtml=function(){if(doc.getSelection){var _460=win.getSelection();if(_460&&_460.rangeCount){var i;var html="";for(i=0;i<_460.rangeCount;i++){var frag=_460.getRangeAt(i).cloneContents();var div=doc.createElement("div");div.appendChild(frag);html+=div.innerHTML;}return html;}return null;}else{if(this.getType()=="control"){return null;}return doc.selection.createRange().htmlText;}};this.getSelectedElement=function(){if(this.getType()=="control"){if(doc.getSelection){var _461=win.getSelection();return _461.anchorNode.childNodes[_461.anchorOffset];}else{var _462=doc.selection.createRange();if(_462&&_462.item){return doc.selection.createRange().item(0);}}}return null;};this.getParentElement=function(){if(this.getType()=="control"){var p=this.getSelectedElement();if(p){return p.parentNode;}}else{if(doc.getSelection){var _463=doc.getSelection();if(_463){var node=_463.anchorNode;while(node&&(node.nodeType!=1)){node=node.parentNode;}return node;}}else{var r=doc.selection.createRange();r.collapse(true);return r.parentElement();}}return null;};this.hasAncestorElement=function(_464){return this.getAncestorElement.apply(this,arguments)!=null;};this.getAncestorElement=function(_465){var node=this.getSelectedElement()||this.getParentElement();return this.getParentOfType(node,arguments);};this.isTag=function(node,tags){if(node&&node.tagName){var _466=node.tagName.toLowerCase();for(var i=0;i<tags.length;i++){var _467=String(tags[i]).toLowerCase();if(_466==_467){return _467;}}}return "";};this.getParentOfType=function(node,tags){while(node){if(this.isTag(node,tags).length){return node;}node=node.parentNode;}return null;};this.collapse=function(_468){if(doc.getSelection){var _469=win.getSelection();if(_469.removeAllRanges){if(_468){_469.collapseToStart();}else{_469.collapseToEnd();}}else{_469.collapse(_468);}}else{var _46a=doc.selection.createRange();_46a.collapse(_468);_46a.select();}};this.remove=function(){var sel=doc.selection;if(doc.getSelection){sel=win.getSelection();sel.deleteFromDocument();return sel;}else{if(sel.type.toLowerCase()!="none"){sel.clear();}return sel;}};this.selectElementChildren=function(_46b,_46c){var _46d;_46b=dom.byId(_46b);if(doc.getSelection){var _46e=win.getSelection();if(has("opera")){if(_46e.rangeCount){_46d=_46e.getRangeAt(0);}else{_46d=doc.createRange();}_46d.setStart(_46b,0);_46d.setEnd(_46b,(_46b.nodeType==3)?_46b.length:_46b.childNodes.length);_46e.addRange(_46d);}else{_46e.selectAllChildren(_46b);}}else{_46d=_46b.ownerDocument.body.createTextRange();_46d.moveToElementText(_46b);if(!_46c){try{_46d.select();}catch(e){}}}};this.selectElement=function(_46f,_470){var _471;_46f=dom.byId(_46f);if(doc.getSelection){var _472=doc.getSelection();_471=doc.createRange();if(_472.removeAllRanges){if(has("opera")){if(_472.getRangeAt(0)){_471=_472.getRangeAt(0);}}_471.selectNode(_46f);_472.removeAllRanges();_472.addRange(_471);}}else{try{var tg=_46f.tagName?_46f.tagName.toLowerCase():"";if(tg==="img"||tg==="table"){_471=_45a.body(doc).createControlRange();}else{_471=_45a.body(doc).createRange();}_471.addElement(_46f);if(!_470){_471.select();}}catch(e){this.selectElementChildren(_46f,_470);}}};this.inSelection=function(node){if(node){var _473;var _474;if(doc.getSelection){var sel=win.getSelection();if(sel&&sel.rangeCount>0){_474=sel.getRangeAt(0);}if(_474&&_474.compareBoundaryPoints&&doc.createRange){try{_473=doc.createRange();_473.setStart(node,0);if(_474.compareBoundaryPoints(_474.START_TO_END,_473)===1){return true;}}catch(e){}}}else{_474=doc.selection.createRange();try{_473=node.ownerDocument.body.createTextRange();_473.moveToElementText(node);}catch(e2){}if(_474&&_473){if(_474.compareEndPoints("EndToStart",_473)===1){return true;}}}}return false;};this.getBookmark=function(){var bm,rg,tg,sel=doc.selection,cf=_45b.curNode;if(doc.getSelection){sel=win.getSelection();if(sel){if(sel.isCollapsed){tg=cf?cf.tagName:"";if(tg){tg=tg.toLowerCase();if(tg=="textarea"||(tg=="input"&&(!cf.type||cf.type.toLowerCase()=="text"))){sel={start:cf.selectionStart,end:cf.selectionEnd,node:cf,pRange:true};return {isCollapsed:(sel.end<=sel.start),mark:sel};}}bm={isCollapsed:true};if(sel.rangeCount){bm.mark=sel.getRangeAt(0).cloneRange();}}else{rg=sel.getRangeAt(0);bm={isCollapsed:false,mark:rg.cloneRange()};}}}else{if(sel){tg=cf?cf.tagName:"";tg=tg.toLowerCase();if(cf&&tg&&(tg=="button"||tg=="textarea"||tg=="input")){if(sel.type&&sel.type.toLowerCase()=="none"){return {isCollapsed:true,mark:null};}else{rg=sel.createRange();return {isCollapsed:rg.text&&rg.text.length?false:true,mark:{range:rg,pRange:true}};}}bm={};try{rg=sel.createRange();bm.isCollapsed=!(sel.type=="Text"?rg.htmlText.length:rg.length);}catch(e){bm.isCollapsed=true;return bm;}if(sel.type.toUpperCase()=="CONTROL"){if(rg.length){bm.mark=[];var i=0,len=rg.length;while(i<len){bm.mark.push(rg.item(i++));}}else{bm.isCollapsed=true;bm.mark=null;}}else{bm.mark=rg.getBookmark();}}else{console.warn("No idea how to store the current selection for this browser!");}}return bm;};this.moveToBookmark=function(_475){var mark=_475.mark;if(mark){if(doc.getSelection){var sel=win.getSelection();if(sel&&sel.removeAllRanges){if(mark.pRange){var n=mark.node;n.selectionStart=mark.start;n.selectionEnd=mark.end;}else{sel.removeAllRanges();sel.addRange(mark);}}else{console.warn("No idea how to restore selection for this browser!");}}else{if(doc.selection&&mark){var rg;if(mark.pRange){rg=mark.range;}else{if(lang.isArray(mark)){rg=doc.body.createControlRange();_459.forEach(mark,function(n){rg.addElement(n);});}else{rg=doc.body.createTextRange();rg.moveToBookmark(mark);}}rg.select();}}}};this.isCollapsed=function(){return this.getBookmark().isCollapsed;};};var _476=new _45c(window);_476.SelectionManager=_45c;return _476;});},"dijit/_base/manager":function(){define(["dojo/_base/array","dojo/_base/config","dojo/_base/lang","../registry","../main"],function(_477,_478,lang,_479,_47a){var _47b={};_477.forEach(["byId","getUniqueId","findWidgets","_destroyAll","byNode","getEnclosingWidget"],function(name){_47b[name]=_479[name];});lang.mixin(_47b,{defaultDuration:_478["defaultDuration"]||200});lang.mixin(_47a,_47b);return _47a;});},"dijit/_base/place":function(){define(["dojo/_base/array","dojo/_base/lang","dojo/window","../place","../main"],function(_47c,lang,_47d,_47e,_47f){var _480={};_480.getViewport=function(){return _47d.getBox();};_480.placeOnScreen=_47e.at;_480.placeOnScreenAroundElement=function(node,_481,_482,_483){var _484;if(lang.isArray(_482)){_484=_482;}else{_484=[];for(var key in _482){_484.push({aroundCorner:key,corner:_482[key]});}}return _47e.around(node,_481,_484,true,_483);};_480.placeOnScreenAroundNode=_480.placeOnScreenAroundElement;_480.placeOnScreenAroundRectangle=_480.placeOnScreenAroundElement;_480.getPopupAroundAlignment=function(_485,_486){var _487={};_47c.forEach(_485,function(pos){var ltr=_486;switch(pos){case "after":_487[_486?"BR":"BL"]=_486?"BL":"BR";break;case "before":_487[_486?"BL":"BR"]=_486?"BR":"BL";break;case "below-alt":ltr=!ltr;case "below":_487[ltr?"BL":"BR"]=ltr?"TL":"TR";_487[ltr?"BR":"BL"]=ltr?"TR":"TL";break;case "above-alt":ltr=!ltr;case "above":default:_487[ltr?"TL":"TR"]=ltr?"BL":"BR";_487[ltr?"TR":"TL"]=ltr?"BR":"BL";break;}});return _487;};lang.mixin(_47f,_480);return _47f;});},"dijit/place":function(){define(["dojo/_base/array","dojo/dom-geometry","dojo/dom-style","dojo/_base/kernel","dojo/_base/window","./Viewport","./main"],function(_488,_489,_48a,_48b,win,_48c,_48d){function _48e(node,_48f,_490,_491){var view=_48c.getEffectiveBox(node.ownerDocument);if(!node.parentNode||String(node.parentNode.tagName).toLowerCase()!="body"){win.body(node.ownerDocument).appendChild(node);}var best=null;_488.some(_48f,function(_492){var _493=_492.corner;var pos=_492.pos;var _494=0;var _495={w:{"L":view.l+view.w-pos.x,"R":pos.x-view.l,"M":view.w}[_493.charAt(1)],h:{"T":view.t+view.h-pos.y,"B":pos.y-view.t,"M":view.h}[_493.charAt(0)]};var s=node.style;s.left=s.right="auto";if(_490){var res=_490(node,_492.aroundCorner,_493,_495,_491);_494=typeof res=="undefined"?0:res;}var _496=node.style;var _497=_496.display;var _498=_496.visibility;if(_496.display=="none"){_496.visibility="hidden";_496.display="";}var bb=_489.position(node);_496.display=_497;_496.visibility=_498;var _499={"L":pos.x,"R":pos.x-bb.w,"M":Math.max(view.l,Math.min(view.l+view.w,pos.x+(bb.w>>1))-bb.w)}[_493.charAt(1)],_49a={"T":pos.y,"B":pos.y-bb.h,"M":Math.max(view.t,Math.min(view.t+view.h,pos.y+(bb.h>>1))-bb.h)}[_493.charAt(0)],_49b=Math.max(view.l,_499),_49c=Math.max(view.t,_49a),endX=Math.min(view.l+view.w,_499+bb.w),endY=Math.min(view.t+view.h,_49a+bb.h),_49d=endX-_49b,_49e=endY-_49c;_494+=(bb.w-_49d)+(bb.h-_49e);if(best==null||_494<best.overflow){best={corner:_493,aroundCorner:_492.aroundCorner,x:_49b,y:_49c,w:_49d,h:_49e,overflow:_494,spaceAvailable:_495};}return !_494;});if(best.overflow&&_490){_490(node,best.aroundCorner,best.corner,best.spaceAvailable,_491);}var top=best.y,side=best.x,body=win.body(node.ownerDocument);if(/relative|absolute/.test(_48a.get(body,"position"))){top-=_48a.get(body,"marginTop");side-=_48a.get(body,"marginLeft");}var s=node.style;s.top=top+"px";s.left=side+"px";s.right="auto";return best;};var _49f={"TL":"BR","TR":"BL","BL":"TR","BR":"TL"};var _4a0={at:function(node,pos,_4a1,_4a2,_4a3){var _4a4=_488.map(_4a1,function(_4a5){var c={corner:_4a5,aroundCorner:_49f[_4a5],pos:{x:pos.x,y:pos.y}};if(_4a2){c.pos.x+=_4a5.charAt(1)=="L"?_4a2.x:-_4a2.x;c.pos.y+=_4a5.charAt(0)=="T"?_4a2.y:-_4a2.y;}return c;});return _48e(node,_4a4,_4a3);},around:function(node,_4a6,_4a7,_4a8,_4a9){var _4aa;if(typeof _4a6=="string"||"offsetWidth" in _4a6||"ownerSVGElement" in _4a6){_4aa=_489.position(_4a6,true);if(/^(above|below)/.test(_4a7[0])){var _4ab=_489.getBorderExtents(_4a6),_4ac=_4a6.firstChild?_489.getBorderExtents(_4a6.firstChild):{t:0,l:0,b:0,r:0},_4ad=_489.getBorderExtents(node),_4ae=node.firstChild?_489.getBorderExtents(node.firstChild):{t:0,l:0,b:0,r:0};_4aa.y+=Math.min(_4ab.t+_4ac.t,_4ad.t+_4ae.t);_4aa.h-=Math.min(_4ab.t+_4ac.t,_4ad.t+_4ae.t)+Math.min(_4ab.b+_4ac.b,_4ad.b+_4ae.b);}}else{_4aa=_4a6;}if(_4a6.parentNode){var _4af=_48a.getComputedStyle(_4a6).position=="absolute";var _4b0=_4a6.parentNode;while(_4b0&&_4b0.nodeType==1&&_4b0.nodeName!="BODY"){var _4b1=_489.position(_4b0,true),pcs=_48a.getComputedStyle(_4b0);if(/relative|absolute/.test(pcs.position)){_4af=false;}if(!_4af&&/hidden|auto|scroll/.test(pcs.overflow)){var _4b2=Math.min(_4aa.y+_4aa.h,_4b1.y+_4b1.h);var _4b3=Math.min(_4aa.x+_4aa.w,_4b1.x+_4b1.w);_4aa.x=Math.max(_4aa.x,_4b1.x);_4aa.y=Math.max(_4aa.y,_4b1.y);_4aa.h=_4b2-_4aa.y;_4aa.w=_4b3-_4aa.x;}if(pcs.position=="absolute"){_4af=true;}_4b0=_4b0.parentNode;}}var x=_4aa.x,y=_4aa.y,_4b4="w" in _4aa?_4aa.w:(_4aa.w=_4aa.width),_4b5="h" in _4aa?_4aa.h:(_48b.deprecated("place.around: dijit/place.__Rectangle: { x:"+x+", y:"+y+", height:"+_4aa.height+", width:"+_4b4+" } has been deprecated. Please use { x:"+x+", y:"+y+", h:"+_4aa.height+", w:"+_4b4+" }","","2.0"),_4aa.h=_4aa.height);var _4b6=[];function push(_4b7,_4b8){_4b6.push({aroundCorner:_4b7,corner:_4b8,pos:{x:{"L":x,"R":x+_4b4,"M":x+(_4b4>>1)}[_4b7.charAt(1)],y:{"T":y,"B":y+_4b5,"M":y+(_4b5>>1)}[_4b7.charAt(0)]}});};_488.forEach(_4a7,function(pos){var ltr=_4a8;switch(pos){case "above-centered":push("TM","BM");break;case "below-centered":push("BM","TM");break;case "after-centered":ltr=!ltr;case "before-centered":push(ltr?"ML":"MR",ltr?"MR":"ML");break;case "after":ltr=!ltr;case "before":push(ltr?"TL":"TR",ltr?"TR":"TL");push(ltr?"BL":"BR",ltr?"BR":"BL");break;case "below-alt":ltr=!ltr;case "below":push(ltr?"BL":"BR",ltr?"TL":"TR");push(ltr?"BR":"BL",ltr?"TR":"TL");break;case "above-alt":ltr=!ltr;case "above":push(ltr?"TL":"TR",ltr?"BL":"BR");push(ltr?"TR":"TL",ltr?"BR":"BL");break;default:push(pos.aroundCorner,pos.corner);}});var _4b9=_48e(node,_4b6,_4a9,{w:_4b4,h:_4b5});_4b9.aroundNodePos=_4aa;return _4b9;}};return _48d.place=_4a0;});},"dijit/Viewport":function(){define(["dojo/Evented","dojo/on","dojo/domReady","dojo/sniff","dojo/window"],function(_4ba,on,_4bb,has,_4bc){var _4bd=new _4ba();var _4be;_4bb(function(){var _4bf=_4bc.getBox();_4bd._rlh=on(window,"resize",function(){var _4c0=_4bc.getBox();if(_4bf.h==_4c0.h&&_4bf.w==_4c0.w){return;}_4bf=_4c0;_4bd.emit("resize");});if(has("ie")==8){var _4c1=screen.deviceXDPI;setInterval(function(){if(screen.deviceXDPI!=_4c1){_4c1=screen.deviceXDPI;_4bd.emit("resize");}},500);}if(has("ios")){on(document,"focusin",function(evt){_4be=evt.target;});on(document,"focusout",function(evt){_4be=null;});}});_4bd.getEffectiveBox=function(doc){var box=_4bc.getBox(doc);var tag=_4be&&_4be.tagName&&_4be.tagName.toLowerCase();if(has("ios")&&_4be&&!_4be.readOnly&&(tag=="textarea"||(tag=="input"&&/^(color|email|number|password|search|tel|text|url)$/.test(_4be.type)))){box.h*=(orientation==0||orientation==180?0.66:0.4);var rect=_4be.getBoundingClientRect();box.h=Math.max(box.h,rect.top+rect.height);}return box;};return _4bd;});},"dijit/_base/popup":function(){define(["dojo/dom-class","dojo/_base/window","../popup","../BackgroundIframe"],function(_4c2,win,_4c3){var _4c4=_4c3._createWrapper;_4c3._createWrapper=function(_4c5){if(!_4c5.declaredClass){_4c5={_popupWrapper:(_4c5.parentNode&&_4c2.contains(_4c5.parentNode,"dijitPopup"))?_4c5.parentNode:null,domNode:_4c5,destroy:function(){},ownerDocument:_4c5.ownerDocument,ownerDocumentBody:win.body(_4c5.ownerDocument)};}return _4c4.call(this,_4c5);};var _4c6=_4c3.open;_4c3.open=function(args){if(args.orient&&typeof args.orient!="string"&&!("length" in args.orient)){var ary=[];for(var key in args.orient){ary.push({aroundCorner:key,corner:args.orient[key]});}args.orient=ary;}return _4c6.call(this,args);};return _4c3;});},"dijit/popup":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","./place","./BackgroundIframe","./Viewport","./main","dojo/touch"],function(_4c7,_4c8,_4c9,dom,_4ca,_4cb,_4cc,_4cd,has,keys,lang,on,_4ce,_4cf,_4d0,_4d1){function _4d2(){if(this._popupWrapper){_4cb.destroy(this._popupWrapper);delete this._popupWrapper;}};var _4d3=_4c9(null,{_stack:[],_beginZIndex:1000,_idGen:1,_repositionAll:function(){if(this._firstAroundNode){var _4d4=this._firstAroundPosition,_4d5=_4cc.position(this._firstAroundNode,true),dx=_4d5.x-_4d4.x,dy=_4d5.y-_4d4.y;if(dx||dy){this._firstAroundPosition=_4d5;for(var i=0;i<this._stack.length;i++){var _4d6=this._stack[i].wrapper.style;_4d6.top=(parseFloat(_4d6.top)+dy)+"px";if(_4d6.right=="auto"){_4d6.left=(parseFloat(_4d6.left)+dx)+"px";}else{_4d6.right=(parseFloat(_4d6.right)-dx)+"px";}}}this._aroundMoveListener=setTimeout(lang.hitch(this,"_repositionAll"),dx||dy?10:50);}},_createWrapper:function(_4d7){var _4d8=_4d7._popupWrapper,node=_4d7.domNode;if(!_4d8){_4d8=_4cb.create("div",{"class":"dijitPopup",style:{display:"none"},role:"region","aria-label":_4d7["aria-label"]||_4d7.label||_4d7.name||_4d7.id},_4d7.ownerDocumentBody);_4d8.appendChild(node);var s=node.style;s.display="";s.visibility="";s.position="";s.top="0px";_4d7._popupWrapper=_4d8;_4c8.after(_4d7,"destroy",_4d2,true);if("ontouchend" in document){on(_4d8,"touchend",function(evt){if(!/^(input|button|textarea)$/i.test(evt.target.tagName)){evt.preventDefault();}});}_4d8.dojoClick=true;}return _4d8;},moveOffScreen:function(_4d9){var _4da=this._createWrapper(_4d9);var ltr=_4cc.isBodyLtr(_4d9.ownerDocument),_4db={visibility:"hidden",top:"-9999px",display:""};_4db[ltr?"left":"right"]="-9999px";_4db[ltr?"right":"left"]="auto";_4cd.set(_4da,_4db);return _4da;},hide:function(_4dc){var _4dd=this._createWrapper(_4dc);_4cd.set(_4dd,{display:"none",height:"auto",overflowY:"visible",border:""});var node=_4dc.domNode;if("_originalStyle" in node){node.style.cssText=node._originalStyle;}},getTopPopup:function(){var _4de=this._stack;for(var pi=_4de.length-1;pi>0&&_4de[pi].parent===_4de[pi-1].widget;pi--){}return _4de[pi];},open:function(args){var _4df=this._stack,_4e0=args.popup,node=_4e0.domNode,_4e1=args.orient||["below","below-alt","above","above-alt"],ltr=args.parent?args.parent.isLeftToRight():_4cc.isBodyLtr(_4e0.ownerDocument),_4e2=args.around,id=(args.around&&args.around.id)?(args.around.id+"_dropdown"):("popup_"+this._idGen++);while(_4df.length&&(!args.parent||!dom.isDescendant(args.parent.domNode,_4df[_4df.length-1].widget.domNode))){this.close(_4df[_4df.length-1].widget);}var _4e3=this.moveOffScreen(_4e0);if(_4e0.startup&&!_4e0._started){_4e0.startup();}var _4e4,_4e5=_4cc.position(node);if("maxHeight" in args&&args.maxHeight!=-1){_4e4=args.maxHeight||Infinity;}else{var _4e6=_4d0.getEffectiveBox(this.ownerDocument),_4e7=_4e2?_4cc.position(_4e2,false):{y:args.y-(args.padding||0),h:(args.padding||0)*2};_4e4=Math.floor(Math.max(_4e7.y,_4e6.h-(_4e7.y+_4e7.h)));}if(_4e5.h>_4e4){var cs=_4cd.getComputedStyle(node),_4e8=cs.borderLeftWidth+" "+cs.borderLeftStyle+" "+cs.borderLeftColor;_4cd.set(_4e3,{overflowY:"scroll",height:_4e4+"px",border:_4e8});node._originalStyle=node.style.cssText;node.style.border="none";}_4ca.set(_4e3,{id:id,style:{zIndex:this._beginZIndex+_4df.length},"class":"dijitPopup "+(_4e0.baseClass||_4e0["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:args.parent?args.parent.id:""});if(_4df.length==0&&_4e2){this._firstAroundNode=_4e2;this._firstAroundPosition=_4cc.position(_4e2,true);this._aroundMoveListener=setTimeout(lang.hitch(this,"_repositionAll"),50);}if(has("config-bgIframe")&&!_4e0.bgIframe){_4e0.bgIframe=new _4cf(_4e3);}var _4e9=_4e0.orient?lang.hitch(_4e0,"orient"):null,best=_4e2?_4ce.around(_4e3,_4e2,_4e1,ltr,_4e9):_4ce.at(_4e3,args,_4e1=="R"?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],args.padding,_4e9);_4e3.style.visibility="visible";node.style.visibility="visible";var _4ea=[];_4ea.push(on(_4e3,"keydown",lang.hitch(this,function(evt){if(evt.keyCode==keys.ESCAPE&&args.onCancel){evt.stopPropagation();evt.preventDefault();args.onCancel();}else{if(evt.keyCode==keys.TAB){evt.stopPropagation();evt.preventDefault();var _4eb=this.getTopPopup();if(_4eb&&_4eb.onCancel){_4eb.onCancel();}}}})));if(_4e0.onCancel&&args.onCancel){_4ea.push(_4e0.on("cancel",args.onCancel));}_4ea.push(_4e0.on(_4e0.onExecute?"execute":"change",lang.hitch(this,function(){var _4ec=this.getTopPopup();if(_4ec&&_4ec.onExecute){_4ec.onExecute();}})));_4df.push({widget:_4e0,wrapper:_4e3,parent:args.parent,onExecute:args.onExecute,onCancel:args.onCancel,onClose:args.onClose,handlers:_4ea});if(_4e0.onOpen){_4e0.onOpen(best);}return best;},close:function(_4ed){var _4ee=this._stack;while((_4ed&&_4c7.some(_4ee,function(elem){return elem.widget==_4ed;}))||(!_4ed&&_4ee.length)){var top=_4ee.pop(),_4ef=top.widget,_4f0=top.onClose;if(_4ef.bgIframe){_4ef.bgIframe.destroy();delete _4ef.bgIframe;}if(_4ef.onClose){_4ef.onClose();}var h;while(h=top.handlers.pop()){h.remove();}if(_4ef&&_4ef.domNode){this.hide(_4ef);}if(_4f0){_4f0();}}if(_4ee.length==0&&this._aroundMoveListener){clearTimeout(this._aroundMoveListener);this._firstAroundNode=this._firstAroundPosition=this._aroundMoveListener=null;}}});return (_4d1.popup=new _4d3());});},"dijit/BackgroundIframe":function(){define(["require","./main","dojo/_base/config","dojo/dom-construct","dojo/dom-style","dojo/_base/lang","dojo/on","dojo/sniff"],function(_4f1,_4f2,_4f3,_4f4,_4f5,lang,on,has){has.add("config-bgIframe",(has("ie")||has("trident"))&&!/IEMobile\/10\.0/.test(navigator.userAgent));var _4f6=new function(){var _4f7=[];this.pop=function(){var _4f8;if(_4f7.length){_4f8=_4f7.pop();_4f8.style.display="";}else{if(has("ie")<9){var burl=_4f3["dojoBlankHtmlUrl"]||_4f1.toUrl("dojo/resources/blank.html")||"javascript:\"\"";var html="<iframe src='"+burl+"' role='presentation'"+" style='position: absolute; left: 0px; top: 0px;"+"z-index: -1; filter:Alpha(Opacity=\"0\");'>";_4f8=document.createElement(html);}else{_4f8=_4f4.create("iframe");_4f8.src="javascript:\"\"";_4f8.className="dijitBackgroundIframe";_4f8.setAttribute("role","presentation");_4f5.set(_4f8,"opacity",0.1);}_4f8.tabIndex=-1;}return _4f8;};this.push=function(_4f9){_4f9.style.display="none";_4f7.push(_4f9);};}();_4f2.BackgroundIframe=function(node){if(!node.id){throw new Error("no id");}if(has("config-bgIframe")){var _4fa=(this.iframe=_4f6.pop());node.appendChild(_4fa);if(has("ie")<7||has("quirks")){this.resize(node);this._conn=on(node,"resize",lang.hitch(this,"resize",node));}else{_4f5.set(_4fa,{width:"100%",height:"100%"});}}};lang.extend(_4f2.BackgroundIframe,{resize:function(node){if(this.iframe){_4f5.set(this.iframe,{width:node.offsetWidth+"px",height:node.offsetHeight+"px"});}},destroy:function(){if(this._conn){this._conn.remove();this._conn=null;}if(this.iframe){this.iframe.parentNode.removeChild(this.iframe);_4f6.push(this.iframe);delete this.iframe;}}});return _4f2.BackgroundIframe;});},"dijit/_base/scroll":function(){define(["dojo/window","../main"],function(_4fb,_4fc){_4fc.scrollIntoView=function(node,pos){_4fb.scrollIntoView(node,pos);};});},"dijit/_base/sniff":function(){define(["dojo/uacss"],function(){});},"dijit/_base/typematic":function(){define(["../typematic"],function(){});},"dijit/typematic":function(){define(["dojo/_base/array","dojo/_base/connect","dojo/_base/lang","dojo/on","dojo/sniff","./main"],function(_4fd,_4fe,lang,on,has,_4ff){var _500=(_4ff.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=Math.max(this._currentTimeout<0?this._initialDelay:(this._subsequentDelay>1?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay)),this._minDelay);this._timer=setTimeout(lang.hitch(this,"_fireEventAndReload"),this._currentTimeout);},trigger:function(evt,_501,node,_502,obj,_503,_504,_505){if(obj!=this._obj){this.stop();this._initialDelay=_504||500;this._subsequentDelay=_503||0.9;this._minDelay=_505||10;this._obj=obj;this._node=node;this._currentTimeout=-1;this._count=-1;this._callback=lang.hitch(_501,_502);this._evt={faux:true};for(var attr in evt){if(attr!="layerX"&&attr!="layerY"){var v=evt[attr];if(typeof v!="function"&&typeof v!="undefined"){this._evt[attr]=v;}}}this._fireEventAndReload();}},stop:function(){if(this._timer){clearTimeout(this._timer);this._timer=null;}if(this._obj){this._callback(-1,this._node,this._evt);this._obj=null;}},addKeyListener:function(node,_506,_507,_508,_509,_50a,_50b){var type="keyCode" in _506?"keydown":"charCode" in _506?"keypress":_4fe._keypress,attr="keyCode" in _506?"keyCode":"charCode" in _506?"charCode":"charOrCode";var _50c=[on(node,type,lang.hitch(this,function(evt){if(evt[attr]==_506[attr]&&(_506.ctrlKey===undefined||_506.ctrlKey==evt.ctrlKey)&&(_506.altKey===undefined||_506.altKey==evt.altKey)&&(_506.metaKey===undefined||_506.metaKey==(evt.metaKey||false))&&(_506.shiftKey===undefined||_506.shiftKey==evt.shiftKey)){evt.stopPropagation();evt.preventDefault();_500.trigger(evt,_507,node,_508,_506,_509,_50a,_50b);}else{if(_500._obj==_506){_500.stop();}}})),on(node,"keyup",lang.hitch(this,function(){if(_500._obj==_506){_500.stop();}}))];return {remove:function(){_4fd.forEach(_50c,function(h){h.remove();});}};},addMouseListener:function(node,_50d,_50e,_50f,_510,_511){var _512=[on(node,"mousedown",lang.hitch(this,function(evt){evt.preventDefault();_500.trigger(evt,_50d,node,_50e,node,_50f,_510,_511);})),on(node,"mouseup",lang.hitch(this,function(evt){if(this._obj){evt.preventDefault();}_500.stop();})),on(node,"mouseout",lang.hitch(this,function(evt){if(this._obj){evt.preventDefault();}_500.stop();})),on(node,"dblclick",lang.hitch(this,function(evt){evt.preventDefault();if(has("ie")<9){_500.trigger(evt,_50d,node,_50e,node,_50f,_510,_511);setTimeout(lang.hitch(this,_500.stop),50);}}))];return {remove:function(){_4fd.forEach(_512,function(h){h.remove();});}};},addListener:function(_513,_514,_515,_516,_517,_518,_519,_51a){var _51b=[this.addKeyListener(_514,_515,_516,_517,_518,_519,_51a),this.addMouseListener(_513,_516,_517,_518,_519,_51a)];return {remove:function(){_4fd.forEach(_51b,function(h){h.remove();});}};}});return _500;});},"dijit/_base/wai":function(){define(["dojo/dom-attr","dojo/_base/lang","../main","../hccss"],function(_51c,lang,_51d){var _51e={hasWaiRole:function(elem,role){var _51f=this.getWaiRole(elem);return role?(_51f.indexOf(role)>-1):(_51f.length>0);},getWaiRole:function(elem){return lang.trim((_51c.get(elem,"role")||"").replace("wairole:",""));},setWaiRole:function(elem,role){_51c.set(elem,"role",role);},removeWaiRole:function(elem,role){var _520=_51c.get(elem,"role");if(!_520){return;}if(role){var t=lang.trim((" "+_520+" ").replace(" "+role+" "," "));_51c.set(elem,"role",t);}else{elem.removeAttribute("role");}},hasWaiState:function(elem,_521){return elem.hasAttribute?elem.hasAttribute("aria-"+_521):!!elem.getAttribute("aria-"+_521);},getWaiState:function(elem,_522){return elem.getAttribute("aria-"+_522)||"";},setWaiState:function(elem,_523,_524){elem.setAttribute("aria-"+_523,_524);},removeWaiState:function(elem,_525){elem.removeAttribute("aria-"+_525);}};lang.mixin(_51d,_51e);return _51d;});},"dijit/hccss":function(){define(["dojo/dom-class","dojo/hccss","dojo/domReady","dojo/_base/window"],function(_526,has,_527,win){_527(function(){if(has("highcontrast")){_526.add(win.body(),"dijit_a11y");}});return has;});},"dojo/hccss":function(){define(["require","./_base/config","./dom-class","./dom-style","./has","./domReady","./_base/window"],function(_528,_529,_52a,_52b,has,_52c,win){has.add("highcontrast",function(){var div=win.doc.createElement("div");try{div.style.cssText="border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;"+"background-image: url(\""+(_529.blankGif||_528.toUrl("./resources/blank.gif"))+"\");";win.body().appendChild(div);var cs=_52b.getComputedStyle(div),_52d=cs.backgroundImage;return cs.borderTopColor==cs.borderRightColor||(_52d&&(_52d=="none"||_52d=="url(invalid-url:)"));}catch(e){console.warn("hccss: exception detecting high-contrast mode, document is likely hidden: "+e.toString());return false;}finally{if(has("ie")<=8){div.outerHTML="";}else{win.body().removeChild(div);}}});_52c(function(){if(has("highcontrast")){_52a.add(win.body(),"dj_a11y");}});return has;});},"dijit/_base/window":function(){define(["dojo/window","../main"],function(_52e,_52f){_52f.getDocumentWindow=function(doc){return _52e.get(doc);};});},"dijit/_Widget":function(){define(["dojo/aspect","dojo/_base/config","dojo/_base/connect","dojo/_base/declare","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/ready","./registry","./_WidgetBase","./_OnDijitClickMixin","./_FocusMixin","dojo/uacss","./hccss"],function(_530,_531,_532,_533,has,_534,lang,_535,_536,_537,_538,_539,_53a){function _53b(){};function _53c(_53d){return function(obj,_53e,_53f,_540){if(obj&&typeof _53e=="string"&&obj[_53e]==_53b){return obj.on(_53e.substring(2).toLowerCase(),lang.hitch(_53f,_540));}return _53d.apply(_532,arguments);};};_530.around(_532,"connect",_53c);if(_534.connect){_530.around(_534,"connect",_53c);}var _541=_533("dijit._Widget",[_538,_539,_53a],{onClick:_53b,onDblClick:_53b,onKeyDown:_53b,onKeyPress:_53b,onKeyUp:_53b,onMouseDown:_53b,onMouseMove:_53b,onMouseOut:_53b,onMouseOver:_53b,onMouseLeave:_53b,onMouseEnter:_53b,onMouseUp:_53b,constructor:function(_542){this._toConnect={};for(var name in _542){if(this[name]===_53b){this._toConnect[name.replace(/^on/,"").toLowerCase()]=_542[name];delete _542[name];}}},postCreate:function(){this.inherited(arguments);for(var name in this._toConnect){this.on(name,this._toConnect[name]);}delete this._toConnect;},on:function(type,func){if(this[this._onMap(type)]===_53b){return _532.connect(this.domNode,type.toLowerCase(),this,func);}return this.inherited(arguments);},_setFocusedAttr:function(val){this._focused=val;this._set("focused",val);},setAttribute:function(attr,_543){_534.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(attr,_543);},attr:function(name,_544){var args=arguments.length;if(args>=2||typeof name==="object"){return this.set.apply(this,arguments);}else{return this.get(name);}},getDescendants:function(){_534.deprecated(this.declaredClass+"::getDescendants() is deprecated. Use getChildren() instead.","","2.0");return this.containerNode?_535("[widgetId]",this.containerNode).map(_537.byNode):[];},_onShow:function(){this.onShow();},onShow:function(){},onHide:function(){},onClose:function(){return true;}});if(has("dijit-legacy-requires")){_536(0,function(){var _545=["dijit/_base"];require(_545);});}return _541;});},"dijit/_WidgetBase":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/config","dojo/_base/connect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/ready","dojo/Stateful","dojo/topic","dojo/_base/window","./Destroyable","dojo/has!dojo-bidi?./_BidiMixin","./registry"],function(_546,_547,_548,_549,_54a,_54b,dom,_54c,_54d,_54e,_54f,_550,has,_551,lang,on,_552,_553,_554,win,_555,_556,_557){has.add("dijit-legacy-requires",!_551.isAsync);has.add("dojo-bidi",false);if(has("dijit-legacy-requires")){_552(0,function(){var _558=["dijit/_base/manager"];_546(_558);});}var _559={};function _55a(obj){var ret={};for(var attr in obj){ret[attr.toLowerCase()]=true;}return ret;};function _55b(attr){return function(val){_54c[val?"set":"remove"](this.domNode,attr,val);this._set(attr,val);};};function _55c(a,b){return a===b||(a!==a&&b!==b);};var _55d=_54b("dijit._WidgetBase",[_553,_555],{id:"",_setIdAttr:"domNode",lang:"",_setLangAttr:_55b("lang"),dir:"",_setDirAttr:_55b("dir"),"class":"",_setClassAttr:{node:"domNode",type:"class"},_setTypeAttr:null,style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,ownerDocument:null,_setOwnerDocumentAttr:function(val){this._set("ownerDocument",val);},attributeMap:{},_blankGif:_549.blankGif||_546.toUrl("dojo/resources/blank.gif"),textDir:"",_introspect:function(){var ctor=this.constructor;if(!ctor._setterAttrs){var _55e=ctor.prototype,_55f=ctor._setterAttrs=[],_560=(ctor._onMap={});for(var name in _55e.attributeMap){_55f.push(name);}for(name in _55e){if(/^on/.test(name)){_560[name.substring(2).toLowerCase()]=name;}if(/^_set[A-Z](.*)Attr$/.test(name)){name=name.charAt(4).toLowerCase()+name.substr(5,name.length-9);if(!_55e.attributeMap||!(name in _55e.attributeMap)){_55f.push(name);}}}}},postscript:function(_561,_562){this.create(_561,_562);},create:function(_563,_564){this._introspect();this.srcNodeRef=dom.byId(_564);this._connects=[];this._supportingWidgets=[];if(this.srcNodeRef&&this.srcNodeRef.id&&(typeof this.srcNodeRef.id=="string")){this.id=this.srcNodeRef.id;}if(_563){this.params=_563;lang.mixin(this,_563);}this.postMixInProperties();if(!this.id){this.id=_557.getUniqueId(this.declaredClass.replace(/\./g,"_"));if(this.params){delete this.params.id;}}this.ownerDocument=this.ownerDocument||(this.srcNodeRef?this.srcNodeRef.ownerDocument:document);this.ownerDocumentBody=win.body(this.ownerDocument);_557.add(this);this.buildRendering();var _565;if(this.domNode){this._applyAttributes();var _566=this.srcNodeRef;if(_566&&_566.parentNode&&this.domNode!==_566){_566.parentNode.replaceChild(this.domNode,_566);_565=true;}this.domNode.setAttribute("widgetId",this.id);}this.postCreate();if(_565){delete this.srcNodeRef;}this._created=true;},_applyAttributes:function(){var _567={};for(var key in this.params||{}){_567[key]=this._get(key);}_547.forEach(this.constructor._setterAttrs,function(key){if(!(key in _567)){var val=this._get(key);if(val){this.set(key,val);}}},this);for(key in _567){this.set(key,_567[key]);}},postMixInProperties:function(){},buildRendering:function(){if(!this.domNode){this.domNode=this.srcNodeRef||this.ownerDocument.createElement("div");}if(this.baseClass){var _568=this.baseClass.split(" ");if(!this.isLeftToRight()){_568=_568.concat(_547.map(_568,function(name){return name+"Rtl";}));}_54d.add(this.domNode,_568);}},postCreate:function(){},startup:function(){if(this._started){return;}this._started=true;_547.forEach(this.getChildren(),function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}});},destroyRecursive:function(_569){this._beingDestroyed=true;this.destroyDescendants(_569);this.destroy(_569);},destroy:function(_56a){this._beingDestroyed=true;this.uninitialize();function _56b(w){if(w.destroyRecursive){w.destroyRecursive(_56a);}else{if(w.destroy){w.destroy(_56a);}}};_547.forEach(this._connects,lang.hitch(this,"disconnect"));_547.forEach(this._supportingWidgets,_56b);if(this.domNode){_547.forEach(_557.findWidgets(this.domNode,this.containerNode),_56b);}this.destroyRendering(_56a);_557.remove(this.id);this._destroyed=true;},destroyRendering:function(_56c){if(this.bgIframe){this.bgIframe.destroy(_56c);delete this.bgIframe;}if(this.domNode){if(_56c){_54c.remove(this.domNode,"widgetId");}else{_54e.destroy(this.domNode);}delete this.domNode;}if(this.srcNodeRef){if(!_56c){_54e.destroy(this.srcNodeRef);}delete this.srcNodeRef;}},destroyDescendants:function(_56d){_547.forEach(this.getChildren(),function(_56e){if(_56e.destroyRecursive){_56e.destroyRecursive(_56d);}});},uninitialize:function(){return false;},_setStyleAttr:function(_56f){var _570=this.domNode;if(lang.isObject(_56f)){_550.set(_570,_56f);}else{if(_570.style.cssText){_570.style.cssText+="; "+_56f;}else{_570.style.cssText=_56f;}}this._set("style",_56f);},_attrToDom:function(attr,_571,_572){_572=arguments.length>=3?_572:this.attributeMap[attr];_547.forEach(lang.isArray(_572)?_572:[_572],function(_573){var _574=this[_573.node||_573||"domNode"];var type=_573.type||"attribute";switch(type){case "attribute":if(lang.isFunction(_571)){_571=lang.hitch(this,_571);}var _575=_573.attribute?_573.attribute:(/^on[A-Z][a-zA-Z]*$/.test(attr)?attr.toLowerCase():attr);if(_574.tagName){_54c.set(_574,_575,_571);}else{_574.set(_575,_571);}break;case "innerText":_574.innerHTML="";_574.appendChild(this.ownerDocument.createTextNode(_571));break;case "textContent":_574.textContent=_571;break;case "innerHTML":_574.innerHTML=_571;break;case "class":_54d.replace(_574,_571,this[attr]);break;case "toggleClass":_54d.toggle(_574,_573.className||attr,_571);break;}},this);},get:function(name){var _576=this._getAttrNames(name);return this[_576.g]?this[_576.g]():this._get(name);},set:function(name,_577){if(typeof name==="object"){for(var x in name){this.set(x,name[x]);}return this;}var _578=this._getAttrNames(name),_579=this[_578.s];if(lang.isFunction(_579)){var _57a=_579.apply(this,Array.prototype.slice.call(arguments,1));}else{var _57b=this.focusNode&&!lang.isFunction(this.focusNode)?"focusNode":"domNode",tag=this[_57b]&&this[_57b].tagName,_57c=tag&&(_559[tag]||(_559[tag]=_55a(this[_57b]))),map=name in this.attributeMap?this.attributeMap[name]:_578.s in this?this[_578.s]:((_57c&&_578.l in _57c&&typeof _577!="function")||/^aria-|^data-|^role$/.test(name))?_57b:null;if(map!=null){this._attrToDom(name,_577,map);}this._set(name,_577);}return _57a||this;},_attrPairNames:{},_getAttrNames:function(name){var apn=this._attrPairNames;if(apn[name]){return apn[name];}var uc=name.replace(/^[a-z]|-[a-zA-Z]/g,function(c){return c.charAt(c.length-1).toUpperCase();});return (apn[name]={n:name+"Node",s:"_set"+uc+"Attr",g:"_get"+uc+"Attr",l:uc.toLowerCase()});},_set:function(name,_57d){var _57e=this[name];this[name]=_57d;if(this._created&&!_55c(_57e,_57d)){if(this._watchCallbacks){this._watchCallbacks(name,_57e,_57d);}this.emit("attrmodified-"+name,{detail:{prevValue:_57e,newValue:_57d}});}},_get:function(name){return this[name];},emit:function(type,_57f,_580){_57f=_57f||{};if(_57f.bubbles===undefined){_57f.bubbles=true;}if(_57f.cancelable===undefined){_57f.cancelable=true;}if(!_57f.detail){_57f.detail={};}_57f.detail.widget=this;var ret,_581=this["on"+type];if(_581){ret=_581.apply(this,_580?_580:[_57f]);}if(this._started&&!this._beingDestroyed){on.emit(this.domNode,type.toLowerCase(),_57f);}return ret;},on:function(type,func){var _582=this._onMap(type);if(_582){return _548.after(this,_582,func,true);}return this.own(on(this.domNode,type,func))[0];},_onMap:function(type){var ctor=this.constructor,map=ctor._onMap;if(!map){map=(ctor._onMap={});for(var attr in ctor.prototype){if(/^on/.test(attr)){map[attr.replace(/^on/,"").toLowerCase()]=attr;}}}return map[typeof type=="string"&&type.toLowerCase()];},toString:function(){return "[Widget "+this.declaredClass+", "+(this.id||"NO ID")+"]";},getChildren:function(){return this.containerNode?_557.findWidgets(this.containerNode):[];},getParent:function(){return _557.getEnclosingWidget(this.domNode.parentNode);},connect:function(obj,_583,_584){return this.own(_54a.connect(obj,_583,this,_584))[0];},disconnect:function(_585){_585.remove();},subscribe:function(t,_586){return this.own(_554.subscribe(t,lang.hitch(this,_586)))[0];},unsubscribe:function(_587){_587.remove();},isLeftToRight:function(){return this.dir?(this.dir.toLowerCase()=="ltr"):_54f.isBodyLtr(this.ownerDocument);},isFocusable:function(){return this.focus&&(_550.get(this.domNode,"display")!="none");},placeAt:function(_588,_589){var _58a=!_588.tagName&&_557.byId(_588);if(_58a&&_58a.addChild&&(!_589||typeof _589==="number")){_58a.addChild(this,_589);}else{var ref=_58a&&("domNode" in _58a)?(_58a.containerNode&&!/after|before|replace/.test(_589||"")?_58a.containerNode:_58a.domNode):dom.byId(_588,this.ownerDocument);_54e.place(this.domNode,ref,_589);if(!this._started&&(this.getParent()||{})._started){this.startup();}}return this;},defer:function(fcn,_58b){var _58c=setTimeout(lang.hitch(this,function(){if(!_58c){return;}_58c=null;if(!this._destroyed){lang.hitch(this,fcn)();}}),_58b||0);return {remove:function(){if(_58c){clearTimeout(_58c);_58c=null;}return null;}};}});if(has("dojo-bidi")){_55d.extend(_556);}return _55d;});},"dijit/Destroyable":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare"],function(_58d,_58e,_58f){return _58f("dijit.Destroyable",null,{destroy:function(_590){this._destroyed=true;},own:function(){var _591=["destroyRecursive","destroy","remove"];_58d.forEach(arguments,function(_592){var _593;var odh=_58e.before(this,"destroy",function(_594){_592[_593](_594);});var hdhs=[];function _595(){odh.remove();_58d.forEach(hdhs,function(hdh){hdh.remove();});};if(_592.then){_593="cancel";_592.then(_595,_595);}else{_58d.forEach(_591,function(_596){if(typeof _592[_596]==="function"){if(!_593){_593=_596;}hdhs.push(_58e.after(_592,_596,_595,true));}});}},this);return arguments;}});});},"dijit/_OnDijitClickMixin":function(){define(["dojo/on","dojo/_base/array","dojo/keys","dojo/_base/declare","dojo/has","./a11yclick"],function(on,_597,keys,_598,has,_599){var ret=_598("dijit._OnDijitClickMixin",null,{connect:function(obj,_59a,_59b){return this.inherited(arguments,[obj,_59a=="ondijitclick"?_599:_59a,_59b]);}});ret.a11yclick=_599;return ret;});},"dijit/a11yclick":function(){define(["dojo/keys","dojo/mouse","dojo/on","dojo/touch"],function(keys,_59c,on,_59d){function _59e(e){if((e.keyCode===keys.ENTER||e.keyCode===keys.SPACE)&&!/input|button|textarea/i.test(e.target.nodeName)){for(var node=e.target;node;node=node.parentNode){if(node.dojoClick){return true;}}}};var _59f;on(document,"keydown",function(e){if(_59e(e)){_59f=e.target;e.preventDefault();}else{_59f=null;}});on(document,"keyup",function(e){if(_59e(e)&&e.target==_59f){_59f=null;on.emit(e.target,"click",{cancelable:true,bubbles:true,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,altKey:e.altKey,_origType:e.type});}});var _5a0=function(node,_5a1){node.dojoClick=true;return on(node,"click",_5a1);};_5a0.click=_5a0;_5a0.press=function(node,_5a2){var _5a3=on(node,_59d.press,function(evt){if(evt.type=="mousedown"&&!_59c.isLeft(evt)){return;}_5a2(evt);}),_5a4=on(node,"keydown",function(evt){if(evt.keyCode===keys.ENTER||evt.keyCode===keys.SPACE){_5a2(evt);}});return {remove:function(){_5a3.remove();_5a4.remove();}};};_5a0.release=function(node,_5a5){var _5a6=on(node,_59d.release,function(evt){if(evt.type=="mouseup"&&!_59c.isLeft(evt)){return;}_5a5(evt);}),_5a7=on(node,"keyup",function(evt){if(evt.keyCode===keys.ENTER||evt.keyCode===keys.SPACE){_5a5(evt);}});return {remove:function(){_5a6.remove();_5a7.remove();}};};_5a0.move=_59d.move;return _5a0;});},"dijit/_FocusMixin":function(){define(["./focus","./_WidgetBase","dojo/_base/declare","dojo/_base/lang"],function(_5a8,_5a9,_5aa,lang){lang.extend(_5a9,{focused:false,onFocus:function(){},onBlur:function(){},_onFocus:function(){this.onFocus();},_onBlur:function(){this.onBlur();}});return _5aa("dijit._FocusMixin",null,{_focusManager:_5a8});});},"dijit/_TemplatedMixin":function(){define(["dojo/cache","dojo/_base/declare","dojo/dom-construct","dojo/_base/lang","dojo/on","dojo/sniff","dojo/string","./_AttachMixin"],function(_5ab,_5ac,_5ad,lang,on,has,_5ae,_5af){var _5b0=_5ac("dijit._TemplatedMixin",_5af,{templateString:null,templatePath:null,_skipNodeCache:false,searchContainerNode:true,_stringRepl:function(tmpl){var _5b1=this.declaredClass,_5b2=this;return _5ae.substitute(tmpl,this,function(_5b3,key){if(key.charAt(0)=="!"){_5b3=lang.getObject(key.substr(1),false,_5b2);}if(typeof _5b3=="undefined"){throw new Error(_5b1+" template:"+key);}if(_5b3==null){return "";}return key.charAt(0)=="!"?_5b3:this._escapeValue(""+_5b3);},this);},_escapeValue:function(val){return val.replace(/["'<>&]/g,function(val){return {"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#x27;"}[val];});},buildRendering:function(){if(!this._rendered){if(!this.templateString){this.templateString=_5ab(this.templatePath,{sanitize:true});}var _5b4=_5b0.getCachedTemplate(this.templateString,this._skipNodeCache,this.ownerDocument);var node;if(lang.isString(_5b4)){node=_5ad.toDom(this._stringRepl(_5b4),this.ownerDocument);if(node.nodeType!=1){throw new Error("Invalid template: "+_5b4);}}else{node=_5b4.cloneNode(true);}this.domNode=node;}this.inherited(arguments);if(!this._rendered){this._fillContent(this.srcNodeRef);}this._rendered=true;},_fillContent:function(_5b5){var dest=this.containerNode;if(_5b5&&dest){while(_5b5.hasChildNodes()){dest.appendChild(_5b5.firstChild);}}}});_5b0._templateCache={};_5b0.getCachedTemplate=function(_5b6,_5b7,doc){var _5b8=_5b0._templateCache;var key=_5b6;var _5b9=_5b8[key];if(_5b9){try{if(!_5b9.ownerDocument||_5b9.ownerDocument==(doc||document)){return _5b9;}}catch(e){}_5ad.destroy(_5b9);}_5b6=_5ae.trim(_5b6);if(_5b7||_5b6.match(/\$\{([^\}]+)\}/g)){return (_5b8[key]=_5b6);}else{var node=_5ad.toDom(_5b6,doc);if(node.nodeType!=1){throw new Error("Invalid template: "+_5b6);}return (_5b8[key]=node);}};if(has("ie")){on(window,"unload",function(){var _5ba=_5b0._templateCache;for(var key in _5ba){var _5bb=_5ba[key];if(typeof _5bb=="object"){_5ad.destroy(_5bb);}delete _5ba[key];}});}return _5b0;});},"dijit/_AttachMixin":function(){define(["require","dojo/_base/array","dojo/_base/connect","dojo/_base/declare","dojo/_base/lang","dojo/mouse","dojo/on","dojo/touch","./_WidgetBase"],function(_5bc,_5bd,_5be,_5bf,lang,_5c0,on,_5c1,_5c2){var _5c3=lang.delegate(_5c1,{"mouseenter":_5c0.enter,"mouseleave":_5c0.leave,"keypress":_5be._keypress});var _5c4;var _5c5=_5bf("dijit._AttachMixin",null,{constructor:function(){this._attachPoints=[];this._attachEvents=[];},buildRendering:function(){this.inherited(arguments);this._attachTemplateNodes(this.domNode);this._beforeFillContent();},_beforeFillContent:function(){},_attachTemplateNodes:function(_5c6){var node=_5c6;while(true){if(node.nodeType==1&&(this._processTemplateNode(node,function(n,p){return n.getAttribute(p);},this._attach)||this.searchContainerNode)&&node.firstChild){node=node.firstChild;}else{if(node==_5c6){return;}while(!node.nextSibling){node=node.parentNode;if(node==_5c6){return;}}node=node.nextSibling;}}},_processTemplateNode:function(_5c7,_5c8,_5c9){var ret=true;var _5ca=this.attachScope||this,_5cb=_5c8(_5c7,"dojoAttachPoint")||_5c8(_5c7,"data-dojo-attach-point");if(_5cb){var _5cc,_5cd=_5cb.split(/\s*,\s*/);while((_5cc=_5cd.shift())){if(lang.isArray(_5ca[_5cc])){_5ca[_5cc].push(_5c7);}else{_5ca[_5cc]=_5c7;}ret=(_5cc!="containerNode");this._attachPoints.push(_5cc);}}var _5ce=_5c8(_5c7,"dojoAttachEvent")||_5c8(_5c7,"data-dojo-attach-event");if(_5ce){var _5cf,_5d0=_5ce.split(/\s*,\s*/);var trim=lang.trim;while((_5cf=_5d0.shift())){if(_5cf){var _5d1=null;if(_5cf.indexOf(":")!=-1){var _5d2=_5cf.split(":");_5cf=trim(_5d2[0]);_5d1=trim(_5d2[1]);}else{_5cf=trim(_5cf);}if(!_5d1){_5d1=_5cf;}this._attachEvents.push(_5c9(_5c7,_5cf,lang.hitch(_5ca,_5d1)));}}}return ret;},_attach:function(node,type,func){type=type.replace(/^on/,"").toLowerCase();if(type=="dijitclick"){type=_5c4||(_5c4=_5bc("./a11yclick"));}else{type=_5c3[type]||type;}return on(node,type,func);},_detachTemplateNodes:function(){var _5d3=this.attachScope||this;_5bd.forEach(this._attachPoints,function(_5d4){delete _5d3[_5d4];});this._attachPoints=[];_5bd.forEach(this._attachEvents,function(_5d5){_5d5.remove();});this._attachEvents=[];},destroyRendering:function(){this._detachTemplateNodes();this.inherited(arguments);}});lang.extend(_5c2,{dojoAttachEvent:"",dojoAttachPoint:""});return _5c5;});},"dijit/_Container":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-construct","dojo/_base/kernel"],function(_5d6,_5d7,_5d8,_5d9){return _5d7("dijit._Container",null,{buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}},addChild:function(_5da,_5db){var _5dc=this.containerNode;if(_5db>0){_5dc=_5dc.firstChild;while(_5db>0){if(_5dc.nodeType==1){_5db--;}_5dc=_5dc.nextSibling;}if(_5dc){_5db="before";}else{_5dc=this.containerNode;_5db="last";}}_5d8.place(_5da.domNode,_5dc,_5db);if(this._started&&!_5da._started){_5da.startup();}},removeChild:function(_5dd){if(typeof _5dd=="number"){_5dd=this.getChildren()[_5dd];}if(_5dd){var node=_5dd.domNode;if(node&&node.parentNode){node.parentNode.removeChild(node);}}},hasChildren:function(){return this.getChildren().length>0;},_getSiblingOfChild:function(_5de,dir){var _5df=this.getChildren(),idx=_5d6.indexOf(_5df,_5de);return _5df[idx+dir];},getIndexOfChild:function(_5e0){return _5d6.indexOf(this.getChildren(),_5e0);}});});},"dijit/layout/_LayoutWidget":function(){define(["dojo/_base/lang","../_Widget","../_Container","../_Contained","../Viewport","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style"],function(lang,_5e1,_5e2,_5e3,_5e4,_5e5,_5e6,_5e7,_5e8){return _5e5("dijit.layout._LayoutWidget",[_5e1,_5e2,_5e3],{baseClass:"dijitLayoutContainer",isLayoutContainer:true,_setTitleAttr:null,buildRendering:function(){this.inherited(arguments);_5e6.add(this.domNode,"dijitContainer");},startup:function(){if(this._started){return;}this.inherited(arguments);var _5e9=this.getParent&&this.getParent();if(!(_5e9&&_5e9.isLayoutContainer)){this.resize();this.own(_5e4.on("resize",lang.hitch(this,"resize")));}},resize:function(_5ea,_5eb){var node=this.domNode;if(_5ea){_5e7.setMarginBox(node,_5ea);}var mb=_5eb||{};lang.mixin(mb,_5ea||{});if(!("h" in mb)||!("w" in mb)){mb=lang.mixin(_5e7.getMarginBox(node),mb);}var cs=_5e8.getComputedStyle(node);var me=_5e7.getMarginExtents(node,cs);var be=_5e7.getBorderExtents(node,cs);var bb=(this._borderBox={w:mb.w-(me.w+be.w),h:mb.h-(me.h+be.h)});var pe=_5e7.getPadExtents(node,cs);this._contentBox={l:_5e8.toPixelValue(node,cs.paddingLeft),t:_5e8.toPixelValue(node,cs.paddingTop),w:bb.w-pe.w,h:bb.h-pe.h};this.layout();},layout:function(){},_setupChild:function(_5ec){var cls=this.baseClass+"-child "+(_5ec.baseClass?this.baseClass+"-"+_5ec.baseClass:"");_5e6.add(_5ec.domNode,cls);},addChild:function(_5ed,_5ee){this.inherited(arguments);if(this._started){this._setupChild(_5ed);}},removeChild:function(_5ef){var cls=this.baseClass+"-child"+(_5ef.baseClass?" "+this.baseClass+"-"+_5ef.baseClass:"");_5e6.remove(_5ef.domNode,cls);this.inherited(arguments);}});});},"dijit/_Contained":function(){define(["dojo/_base/declare","./registry"],function(_5f0,_5f1){return _5f0("dijit._Contained",null,{_getSibling:function(_5f2){var p=this.getParent();return (p&&p._getSiblingOfChild&&p._getSiblingOfChild(this,_5f2=="previous"?-1:1))||null;},getPreviousSibling:function(){return this._getSibling("previous");},getNextSibling:function(){return this._getSibling("next");},getIndexInParent:function(){var p=this.getParent();if(!p||!p.getIndexOfChild){return -1;}return p.getIndexOfChild(this);}});});},"dijit/form/_FormWidget":function(){define(["dojo/_base/declare","dojo/sniff","dojo/_base/kernel","dojo/ready","../_Widget","../_CssStateMixin","../_TemplatedMixin","./_FormWidgetMixin"],function(_5f3,has,_5f4,_5f5,_5f6,_5f7,_5f8,_5f9){if(has("dijit-legacy-requires")){_5f5(0,function(){var _5fa=["dijit/form/_FormValueWidget"];require(_5fa);});}return _5f3("dijit.form._FormWidget",[_5f6,_5f8,_5f7,_5f9],{setDisabled:function(_5fb){_5f4.deprecated("setDisabled("+_5fb+") is deprecated. Use set('disabled',"+_5fb+") instead.","","2.0");this.set("disabled",_5fb);},setValue:function(_5fc){_5f4.deprecated("dijit.form._FormWidget:setValue("+_5fc+") is deprecated. Use set('value',"+_5fc+") instead.","","2.0");this.set("value",_5fc);},getValue:function(){_5f4.deprecated(this.declaredClass+"::getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},postMixInProperties:function(){this.nameAttrSetting=(this.name&&!has("msapp"))?("name=\""+this.name.replace(/"/g,"&quot;")+"\""):"";this.inherited(arguments);}});});},"dijit/_CssStateMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/has","dojo/_base/lang","dojo/on","dojo/domReady","dojo/touch","dojo/_base/window","./a11yclick","./registry"],function(_5fd,_5fe,dom,_5ff,has,lang,on,_600,_601,win,_602,_603){var _604=_5fe("dijit._CssStateMixin",[],{hovering:false,active:false,_applyAttributes:function(){this.inherited(arguments);_5fd.forEach(["disabled","readOnly","checked","selected","focused","state","hovering","active","_opened"],function(attr){this.watch(attr,lang.hitch(this,"_setStateClass"));},this);for(var ap in this.cssStateNodes||{}){this._trackMouseState(this[ap],this.cssStateNodes[ap]);}this._trackMouseState(this.domNode,this.baseClass);this._setStateClass();},_cssMouseEvent:function(_605){if(!this.disabled){switch(_605.type){case "mouseover":case "MSPointerOver":case "pointerover":this._set("hovering",true);this._set("active",this._mouseDown);break;case "mouseout":case "MSPointerOut":case "pointerout":this._set("hovering",false);this._set("active",false);break;case "mousedown":case "touchstart":case "MSPointerDown":case "pointerdown":case "keydown":this._set("active",true);break;case "mouseup":case "dojotouchend":case "MSPointerUp":case "pointerup":case "keyup":this._set("active",false);break;}}},_setStateClass:function(){var _606=this.baseClass.split(" ");function _607(_608){_606=_606.concat(_5fd.map(_606,function(c){return c+_608;}),"dijit"+_608);};if(!this.isLeftToRight()){_607("Rtl");}var _609=this.checked=="mixed"?"Mixed":(this.checked?"Checked":"");if(this.checked){_607(_609);}if(this.state){_607(this.state);}if(this.selected){_607("Selected");}if(this._opened){_607("Opened");}if(this.disabled){_607("Disabled");}else{if(this.readOnly){_607("ReadOnly");}else{if(this.active){_607("Active");}else{if(this.hovering){_607("Hover");}}}}if(this.focused){_607("Focused");}var tn=this.stateNode||this.domNode,_60a={};_5fd.forEach(tn.className.split(" "),function(c){_60a[c]=true;});if("_stateClasses" in this){_5fd.forEach(this._stateClasses,function(c){delete _60a[c];});}_5fd.forEach(_606,function(c){_60a[c]=true;});var _60b=[];for(var c in _60a){_60b.push(c);}tn.className=_60b.join(" ");this._stateClasses=_606;},_subnodeCssMouseEvent:function(node,_60c,evt){if(this.disabled||this.readOnly){return;}function _60d(_60e){_5ff.toggle(node,_60c+"Hover",_60e);};function _60f(_610){_5ff.toggle(node,_60c+"Active",_610);};function _611(_612){_5ff.toggle(node,_60c+"Focused",_612);};switch(evt.type){case "mouseover":case "MSPointerOver":case "pointerover":_60d(true);break;case "mouseout":case "MSPointerOut":case "pointerout":_60d(false);_60f(false);break;case "mousedown":case "touchstart":case "MSPointerDown":case "pointerdown":case "keydown":_60f(true);break;case "mouseup":case "MSPointerUp":case "pointerup":case "dojotouchend":case "keyup":_60f(false);break;case "focus":case "focusin":_611(true);break;case "blur":case "focusout":_611(false);break;}},_trackMouseState:function(node,_613){node._cssState=_613;}});_600(function(){function _614(evt,_615,_616){if(_616&&dom.isDescendant(_616,_615)){return;}for(var node=_615;node&&node!=_616;node=node.parentNode){if(node._cssState){var _617=_603.getEnclosingWidget(node);if(_617){if(node==_617.domNode){_617._cssMouseEvent(evt);}else{_617._subnodeCssMouseEvent(node,node._cssState,evt);}}}}};var body=win.body(),_618;on(body,_601.over,function(evt){_614(evt,evt.target,evt.relatedTarget);});on(body,_601.out,function(evt){_614(evt,evt.target,evt.relatedTarget);});on(body,_602.press,function(evt){_618=evt.target;_614(evt,_618);});on(body,_602.release,function(evt){_614(evt,_618);_618=null;});on(body,"focusin, focusout",function(evt){var node=evt.target;if(node._cssState&&!node.getAttribute("widgetId")){var _619=_603.getEnclosingWidget(node);if(_619){_619._subnodeCssMouseEvent(node,node._cssState,evt);}}});});return _604;});},"dijit/form/_FormWidgetMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/dom-style","dojo/_base/lang","dojo/mouse","dojo/on","dojo/sniff","dojo/window","../a11y"],function(_61a,_61b,_61c,_61d,lang,_61e,on,has,_61f,a11y){return _61b("dijit.form._FormWidgetMixin",null,{name:"",alt:"",value:"",type:"text","aria-label":"focusNode",tabIndex:"0",_setTabIndexAttr:"focusNode",disabled:false,intermediateChanges:false,scrollOnFocus:true,_setIdAttr:"focusNode",_setDisabledAttr:function(_620){this._set("disabled",_620);if(/^(button|input|select|textarea|optgroup|option|fieldset)$/i.test(this.focusNode.tagName)){_61c.set(this.focusNode,"disabled",_620);if(has("trident")&&"readOnly" in this){_61c.set(this.focusNode,"readonly",_620||this.readOnly);}}else{this.focusNode.setAttribute("aria-disabled",_620?"true":"false");}if(this.valueNode){_61c.set(this.valueNode,"disabled",_620);}if(_620){this._set("hovering",false);this._set("active",false);var _621="tabIndex" in this.attributeMap?this.attributeMap.tabIndex:("_setTabIndexAttr" in this)?this._setTabIndexAttr:"focusNode";_61a.forEach(lang.isArray(_621)?_621:[_621],function(_622){var node=this[_622];if(has("webkit")||a11y.hasDefaultTabStop(node)){node.setAttribute("tabIndex","-1");}else{node.removeAttribute("tabIndex");}},this);}else{if(this.tabIndex!=""){this.set("tabIndex",this.tabIndex);}}},_onFocus:function(by){if(by=="mouse"&&this.isFocusable()){var _623=this.own(on(this.focusNode,"focus",function(){_624.remove();_623.remove();}))[0];var _625=has("pointer-events")?"pointerup":has("MSPointer")?"MSPointerUp":has("touch-events")?"touchend, mouseup":"mouseup";var _624=this.own(on(this.ownerDocumentBody,_625,lang.hitch(this,function(evt){_624.remove();_623.remove();if(this.focused){if(evt.type=="touchend"){this.defer("focus");}else{this.focus();}}})))[0];}if(this.scrollOnFocus){this.defer(function(){_61f.scrollIntoView(this.domNode);});}this.inherited(arguments);},isFocusable:function(){return !this.disabled&&this.focusNode&&(_61d.get(this.domNode,"display")!="none");},focus:function(){if(!this.disabled&&this.focusNode.focus){try{this.focusNode.focus();}catch(e){}}},compare:function(val1,val2){if(typeof val1=="number"&&typeof val2=="number"){return (isNaN(val1)&&isNaN(val2))?0:val1-val2;}else{if(val1>val2){return 1;}else{if(val1<val2){return -1;}else{return 0;}}}},onChange:function(){},_onChangeActive:false,_handleOnChange:function(_626,_627){if(this._lastValueReported==undefined&&(_627===null||!this._onChangeActive)){this._resetValue=this._lastValueReported=_626;}this._pendingOnChange=this._pendingOnChange||(typeof _626!=typeof this._lastValueReported)||(this.compare(_626,this._lastValueReported)!=0);if((this.intermediateChanges||_627||_627===undefined)&&this._pendingOnChange){this._lastValueReported=_626;this._pendingOnChange=false;if(this._onChangeActive){if(this._onChangeHandle){this._onChangeHandle.remove();}this._onChangeHandle=this.defer(function(){this._onChangeHandle=null;this.onChange(_626);});}}},create:function(){this.inherited(arguments);this._onChangeActive=true;},destroy:function(){if(this._onChangeHandle){this._onChangeHandle.remove();this.onChange(this._lastValueReported);}this.inherited(arguments);}});});},"dijit/form/_FormValueWidget":function(){define(["dojo/_base/declare","dojo/sniff","./_FormWidget","./_FormValueMixin"],function(_628,has,_629,_62a){return _628("dijit.form._FormValueWidget",[_629,_62a],{_layoutHackIE7:function(){if(has("ie")==7){var _62b=this.domNode;var _62c=_62b.parentNode;var _62d=_62b.firstChild||_62b;var _62e=_62d.style.filter;var _62f=this;while(_62c&&_62c.clientHeight==0){(function ping(){var _630=_62f.connect(_62c,"onscroll",function(){_62f.disconnect(_630);_62d.style.filter=(new Date()).getMilliseconds();_62f.defer(function(){_62d.style.filter=_62e;});});})();_62c=_62c.parentNode;}}}});});},"dijit/form/_FormValueMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","./_FormWidgetMixin"],function(_631,_632,keys,lang,on,has,_633){return _631("dijit.form._FormValueMixin",_633,{readOnly:false,_setReadOnlyAttr:function(_634){if(has("trident")&&"disabled" in this){_632.set(this.focusNode,"readOnly",_634||this.disabled);}else{_632.set(this.focusNode,"readOnly",_634);}this._set("readOnly",_634);},postCreate:function(){this.inherited(arguments);if(this._resetValue===undefined){this._lastValueReported=this._resetValue=this.value;}},_setValueAttr:function(_635,_636){this._handleOnChange(_635,_636);},_handleOnChange:function(_637,_638){this._set("value",_637);this.inherited(arguments);},undo:function(){this._setValueAttr(this._lastValueReported,false);},reset:function(){this._hasBeenBlurred=false;this._setValueAttr(this._resetValue,true);}});});},"dijit/ColorPalette":function(){define(["require","dojo/text!./templates/ColorPalette.html","./_Widget","./_TemplatedMixin","./_PaletteMixin","./hccss","dojo/i18n","dojo/_base/Color","dojo/_base/declare","dojo/dom-construct","dojo/string","dojo/i18n!dojo/nls/colors","dojo/colors"],function(_639,_63a,_63b,_63c,_63d,has,i18n,_63e,_63f,_640,_641){var _642=_63f("dijit.ColorPalette",[_63b,_63c,_63d],{palette:"7x10",_palettes:{"7x10":[["white","seashell","cornsilk","lemonchiffon","lightyellow","palegreen","paleturquoise","lightcyan","lavender","plum"],["lightgray","pink","bisque","moccasin","khaki","lightgreen","lightseagreen","lightskyblue","cornflowerblue","violet"],["silver","lightcoral","sandybrown","orange","palegoldenrod","chartreuse","mediumturquoise","skyblue","mediumslateblue","orchid"],["gray","red","orangered","darkorange","yellow","limegreen","darkseagreen","royalblue","slateblue","mediumorchid"],["dimgray","crimson","chocolate","coral","gold","forestgreen","seagreen","blue","blueviolet","darkorchid"],["darkslategray","firebrick","saddlebrown","sienna","olive","green","darkcyan","mediumblue","darkslateblue","darkmagenta"],["black","darkred","maroon","brown","darkolivegreen","darkgreen","midnightblue","navy","indigo","purple"]],"3x4":[["white","lime","green","blue"],["silver","yellow","fuchsia","navy"],["gray","red","purple","black"]]},templateString:_63a,baseClass:"dijitColorPalette",_dyeFactory:function(_643,row,col,_644){return new this._dyeClass(_643,row,col,_644);},buildRendering:function(){this.inherited(arguments);this._dyeClass=_63f(_642._Color,{palette:this.palette});this._preparePalette(this._palettes[this.palette],i18n.getLocalization("dojo","colors",this.lang));}});_642._Color=_63f("dijit._Color",_63e,{template:"<span class='dijitInline dijitPaletteImg'>"+"<img src='${blankGif}' alt='${alt}' title='${title}' class='dijitColorPaletteSwatch' style='background-color: ${color}'/>"+"</span>",hcTemplate:"<span class='dijitInline dijitPaletteImg' style='position: relative; overflow: hidden; height: 12px; width: 14px;'>"+"<img src='${image}' alt='${alt}' title='${title}' style='position: absolute; left: ${left}px; top: ${top}px; ${size}'/>"+"</span>",_imagePaths:{"7x10":_639.toUrl("./themes/a11y/colors7x10.png"),"3x4":_639.toUrl("./themes/a11y/colors3x4.png")},constructor:function(_645,row,col,_646){this._title=_646;this._row=row;this._col=col;this.setColor(_63e.named[_645]);},getValue:function(){return this.toHex();},fillCell:function(cell,_647){var html=_641.substitute(has("highcontrast")?this.hcTemplate:this.template,{color:this.toHex(),blankGif:_647,alt:this._title,title:this._title,image:this._imagePaths[this.palette].toString(),left:this._col*-20-5,top:this._row*-20-5,size:this.palette=="7x10"?"height: 145px; width: 206px":"height: 64px; width: 86px"});_640.place(html,cell);}});return _642;});},"dijit/_PaletteMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/keys","dojo/_base/lang","dojo/on","./_CssStateMixin","./a11yclick","./focus","./typematic"],function(_648,_649,_64a,_64b,keys,lang,on,_64c,_64d,_64e,_64f){var _650=_648("dijit._PaletteMixin",_64c,{defaultTimeout:500,timeoutChangeRate:0.9,value:"",_selectedCell:-1,tabIndex:"0",cellClass:"dijitPaletteCell",dyeClass:null,_dyeFactory:function(_651){var _652=typeof this.dyeClass=="string"?lang.getObject(this.dyeClass):this.dyeClass;return new _652(_651);},_preparePalette:function(_653,_654){this._cells=[];var url=this._blankGif;this.own(on(this.gridNode,_64d,lang.hitch(this,"_onCellClick")));for(var row=0;row<_653.length;row++){var _655=_64b.create("tr",{tabIndex:"-1",role:"row"},this.gridNode);for(var col=0;col<_653[row].length;col++){var _656=_653[row][col];if(_656){var _657=this._dyeFactory(_656,row,col,_654[_656]);var _658=_64b.create("td",{"class":this.cellClass,tabIndex:"-1",title:_654[_656],role:"gridcell"},_655);_657.fillCell(_658,url);_658.idx=this._cells.length;this._cells.push({node:_658,dye:_657});}}}this._xDim=_653[0].length;this._yDim=_653.length;var _659={UP_ARROW:-this._xDim,DOWN_ARROW:this._xDim,RIGHT_ARROW:this.isLeftToRight()?1:-1,LEFT_ARROW:this.isLeftToRight()?-1:1};for(var key in _659){this.own(_64f.addKeyListener(this.domNode,{keyCode:keys[key],ctrlKey:false,altKey:false,shiftKey:false},this,function(){var _65a=_659[key];return function(_65b){this._navigateByKey(_65a,_65b);};}(),this.timeoutChangeRate,this.defaultTimeout));}},postCreate:function(){this.inherited(arguments);this._setCurrent(this._cells[0].node);},focus:function(){_64e.focus(this._currentFocus);},_onCellClick:function(evt){var _65c=evt.target;while(_65c.tagName!="TD"){if(!_65c.parentNode||_65c==this.gridNode){return;}_65c=_65c.parentNode;}var _65d=this._getDye(_65c).getValue();this._setCurrent(_65c);_64e.focus(_65c);this._setValueAttr(_65d,true);evt.stopPropagation();evt.preventDefault();},_setCurrent:function(node){if("_currentFocus" in this){_649.set(this._currentFocus,"tabIndex","-1");}this._currentFocus=node;if(node){_649.set(node,"tabIndex",this.tabIndex);}},_setValueAttr:function(_65e,_65f){if(this._selectedCell>=0){_64a.remove(this._cells[this._selectedCell].node,this.cellClass+"Selected");}this._selectedCell=-1;if(_65e){for(var i=0;i<this._cells.length;i++){if(_65e==this._cells[i].dye.getValue()){this._selectedCell=i;_64a.add(this._cells[i].node,this.cellClass+"Selected");break;}}}this._set("value",this._selectedCell>=0?_65e:null);if(_65f||_65f===undefined){this.onChange(_65e);}},onChange:function(){},_navigateByKey:function(_660,_661){if(_661==-1){return;}var _662=this._currentFocus.idx+_660;if(_662<this._cells.length&&_662>-1){var _663=this._cells[_662].node;this._setCurrent(_663);this.defer(lang.hitch(_64e,"focus",_663));}},_getDye:function(cell){return this._cells[cell.idx].dye;}});return _650;});},"dojo/colors":function(){define(["./_base/kernel","./_base/lang","./_base/Color","./_base/array"],function(dojo,lang,_664,_665){var _666={};lang.setObject("dojo.colors",_666);var _667=function(m1,m2,h){if(h<0){++h;}if(h>1){--h;}var h6=6*h;if(h6<1){return m1+(m2-m1)*h6;}if(2*h<1){return m2;}if(3*h<2){return m1+(m2-m1)*(2/3-h)*6;}return m1;};dojo.colorFromRgb=_664.fromRgb=function(_668,obj){var m=_668.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(m){var c=m[2].split(/\s*,\s*/),l=c.length,t=m[1],a;if((t=="rgb"&&l==3)||(t=="rgba"&&l==4)){var r=c[0];if(r.charAt(r.length-1)=="%"){a=_665.map(c,function(x){return parseFloat(x)*2.56;});if(l==4){a[3]=c[3];}return _664.fromArray(a,obj);}return _664.fromArray(c,obj);}if((t=="hsl"&&l==3)||(t=="hsla"&&l==4)){var H=((parseFloat(c[0])%360)+360)%360/360,S=parseFloat(c[1])/100,L=parseFloat(c[2])/100,m2=L<=0.5?L*(S+1):L+S-L*S,m1=2*L-m2;a=[_667(m1,m2,H+1/3)*256,_667(m1,m2,H)*256,_667(m1,m2,H-1/3)*256,1];if(l==4){a[3]=c[3];}return _664.fromArray(a,obj);}}return null;};var _669=function(c,low,high){c=Number(c);return isNaN(c)?high:c<low?low:c>high?high:c;};_664.prototype.sanitize=function(){var t=this;t.r=Math.round(_669(t.r,0,255));t.g=Math.round(_669(t.g,0,255));t.b=Math.round(_669(t.b,0,255));t.a=_669(t.a,0,1);return this;};_666.makeGrey=_664.makeGrey=function(g,a){return _664.fromArray([g,g,g,a]);};lang.mixin(_664.named,{"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"blanchedalmond":[255,235,205],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[220,20,60],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"oldlace":[253,245,230],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"whitesmoke":[245,245,245],"yellowgreen":[154,205,50]});return _664;});},"dijit/Dialog":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/Deferred","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/fx","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/ready","dojo/sniff","dojo/touch","dojo/window","dojo/dnd/Moveable","dojo/dnd/TimedMoveable","./focus","./_base/manager","./_Widget","./_TemplatedMixin","./_CssStateMixin","./form/_FormMixin","./_DialogMixin","./DialogUnderlay","./layout/ContentPane","./layout/utils","dojo/text!./templates/Dialog.html","./a11yclick","dojo/i18n!./nls/common"],function(_66a,_66b,_66c,_66d,_66e,dom,_66f,_670,_671,fx,i18n,keys,lang,on,_672,has,_673,_674,_675,_676,_677,_678,_679,_67a,_67b,_67c,_67d,_67e,_67f,_680,_681){var _682=new _66e();_682.resolve(true);function nop(){};var _683=_66d("dijit._DialogBase"+(has("dojo-bidi")?"_NoBidi":""),[_67a,_67c,_67d,_67b],{templateString:_681,baseClass:"dijitDialog",cssStateNodes:{closeButtonNode:"dijitDialogCloseIcon"},_setTitleAttr:{node:"titleNode",type:"innerHTML"},open:false,duration:_678.defaultDuration,refocus:true,autofocus:true,_firstFocusItem:null,_lastFocusItem:null,draggable:true,_setDraggableAttr:function(val){this._set("draggable",val);},maxRatio:0.9,closable:true,_setClosableAttr:function(val){this.closeButtonNode.style.display=val?"":"none";this._set("closable",val);},postMixInProperties:function(){var _684=i18n.getLocalization("dijit","common");lang.mixin(this,_684);this.inherited(arguments);},postCreate:function(){_671.set(this.domNode,{display:"none",position:"absolute"});this.ownerDocumentBody.appendChild(this.domNode);this.inherited(arguments);_66c.after(this,"onExecute",lang.hitch(this,"hide"),true);_66c.after(this,"onCancel",lang.hitch(this,"hide"),true);on(this.closeButtonNode,_673.press,function(e){e.stopPropagation();});this._modalconnects=[];},onLoad:function(){this.resize();this._position();if(this.autofocus&&_685.isTop(this)){this._getFocusItems();_677.focus(this._firstFocusItem);}this.inherited(arguments);},focus:function(){this._getFocusItems();_677.focus(this._firstFocusItem);},_endDrag:function(){var _686=_670.position(this.domNode),_687=_674.getBox(this.ownerDocument);_686.y=Math.min(Math.max(_686.y,0),(_687.h-_686.h));_686.x=Math.min(Math.max(_686.x,0),(_687.w-_686.w));this._relativePosition=_686;this._position();},_setup:function(){var node=this.domNode;if(this.titleBar&&this.draggable){this._moveable=new ((has("ie")==6)?_676:_675)(node,{handle:this.titleBar});_66c.after(this._moveable,"onMoveStop",lang.hitch(this,"_endDrag"),true);}else{_66f.add(node,"dijitDialogFixed");}this.underlayAttrs={dialogId:this.id,"class":_66b.map(this["class"].split(/\s/),function(s){return s+"_underlay";}).join(" "),_onKeyDown:lang.hitch(this,"_onKey"),ownerDocument:this.ownerDocument};},_size:function(){this.resize();},_position:function(){if(!_66f.contains(this.ownerDocumentBody,"dojoMove")){var node=this.domNode,_688=_674.getBox(this.ownerDocument),p=this._relativePosition,bb=_670.position(node),l=Math.floor(_688.l+(p?Math.min(p.x,_688.w-bb.w):(_688.w-bb.w)/2)),t=Math.floor(_688.t+(p?Math.min(p.y,_688.h-bb.h):(_688.h-bb.h)/2));_671.set(node,{left:l+"px",top:t+"px"});}},_onKey:function(evt){if(evt.keyCode==keys.TAB){this._getFocusItems();var node=evt.target;if(this._firstFocusItem==this._lastFocusItem){evt.stopPropagation();evt.preventDefault();}else{if(node==this._firstFocusItem&&evt.shiftKey){_677.focus(this._lastFocusItem);evt.stopPropagation();evt.preventDefault();}else{if(node==this._lastFocusItem&&!evt.shiftKey){_677.focus(this._firstFocusItem);evt.stopPropagation();evt.preventDefault();}}}}else{if(this.closable&&evt.keyCode==keys.ESCAPE){this.onCancel();evt.stopPropagation();evt.preventDefault();}}},show:function(){if(this.open){return _682.promise;}if(!this._started){this.startup();}if(!this._alreadyInitialized){this._setup();this._alreadyInitialized=true;}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();_685.hide(this);}var win=_674.get(this.ownerDocument);this._modalconnects.push(on(win,"scroll",lang.hitch(this,"resize",null)));this._modalconnects.push(on(this.domNode,"keydown",lang.hitch(this,"_onKey")));_671.set(this.domNode,{opacity:0,display:""});this._set("open",true);this._onShow();this.resize();this._position();var _689;this._fadeInDeferred=new _66e(lang.hitch(this,function(){_689.stop();delete this._fadeInDeferred;}));this._fadeInDeferred.then(undefined,nop);var _68a=this._fadeInDeferred.promise;_689=fx.fadeIn({node:this.domNode,duration:this.duration,beforeBegin:lang.hitch(this,function(){_685.show(this,this.underlayAttrs);}),onEnd:lang.hitch(this,function(){if(this.autofocus&&_685.isTop(this)){this._getFocusItems();_677.focus(this._firstFocusItem);}this._fadeInDeferred.resolve(true);delete this._fadeInDeferred;})}).play();return _68a;},hide:function(){if(!this._alreadyInitialized||!this.open){return _682.promise;}if(this._fadeInDeferred){this._fadeInDeferred.cancel();}var _68b;this._fadeOutDeferred=new _66e(lang.hitch(this,function(){_68b.stop();delete this._fadeOutDeferred;}));this._fadeOutDeferred.then(undefined,nop);this._fadeOutDeferred.then(lang.hitch(this,"onHide"));var _68c=this._fadeOutDeferred.promise;_68b=fx.fadeOut({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,function(){this.domNode.style.display="none";_685.hide(this);this._fadeOutDeferred.resolve(true);delete this._fadeOutDeferred;})}).play();if(this._scrollConnected){this._scrollConnected=false;}var h;while(h=this._modalconnects.pop()){h.remove();}if(this._relativePosition){delete this._relativePosition;}this._set("open",false);return _68c;},resize:function(dim){if(this.domNode.style.display!="none"){this._checkIfSingleChild();if(!dim){if(this._shrunk){if(this._singleChild){if(typeof this._singleChildOriginalStyle!="undefined"){this._singleChild.domNode.style.cssText=this._singleChildOriginalStyle;delete this._singleChildOriginalStyle;}}_66b.forEach([this.domNode,this.containerNode,this.titleBar,this.actionBarNode],function(node){if(node){_671.set(node,{position:"static",width:"auto",height:"auto"});}});this.domNode.style.position="absolute";}var _68d=_674.getBox(this.ownerDocument);_68d.w*=this.maxRatio;_68d.h*=this.maxRatio;var bb=_670.position(this.domNode);this._shrunk=false;if(bb.w>=_68d.w){dim={w:_68d.w};_670.setMarginBox(this.domNode,dim);bb=_670.position(this.domNode);this._shrunk=true;}if(bb.h>=_68d.h){if(!dim){dim={w:bb.w};}dim.h=_68d.h;this._shrunk=true;}if(dim){if(!dim.w){dim.w=bb.w;}if(!dim.h){dim.h=bb.h;}}}if(dim){_670.setMarginBox(this.domNode,dim);var _68e=[];if(this.titleBar){_68e.push({domNode:this.titleBar,region:"top"});}if(this.actionBarNode){_68e.push({domNode:this.actionBarNode,region:"bottom"});}var _68f={domNode:this.containerNode,region:"center"};_68e.push(_68f);var _690=_680.marginBox2contentBox(this.domNode,dim);_680.layoutChildren(this.domNode,_690,_68e);if(this._singleChild){var cb=_680.marginBox2contentBox(this.containerNode,_68f);this._singleChild.resize({w:cb.w,h:cb.h});}else{this.containerNode.style.overflow="auto";this._layoutChildren();}}else{this._layoutChildren();}if(!has("touch")&&!dim){this._position();}}},_layoutChildren:function(){_66b.forEach(this.getChildren(),function(_691){if(_691.resize){_691.resize();}});},destroy:function(){if(this._fadeInDeferred){this._fadeInDeferred.cancel();}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();}if(this._moveable){this._moveable.destroy();}var h;while(h=this._modalconnects.pop()){h.remove();}_685.hide(this);this.inherited(arguments);}});if(has("dojo-bidi")){_683=_66d("dijit._DialogBase",_683,{_setTitleAttr:function(_692){this._set("title",_692);this.titleNode.innerHTML=_692;this.applyTextDir(this.titleNode);},_setTextDirAttr:function(_693){if(this._created&&this.textDir!=_693){this._set("textDir",_693);this.set("title",this.title);}}});}var _694=_66d("dijit.Dialog",[_67f,_683],{});_694._DialogBase=_683;var _685=_694._DialogLevelManager={_beginZIndex:950,show:function(_695,_696){ds[ds.length-1].focus=_677.curNode;var _697=ds[ds.length-1].dialog?ds[ds.length-1].zIndex+2:_694._DialogLevelManager._beginZIndex;_671.set(_695.domNode,"zIndex",_697);_67e.show(_696,_697-1);ds.push({dialog:_695,underlayAttrs:_696,zIndex:_697});},hide:function(_698){if(ds[ds.length-1].dialog==_698){ds.pop();var pd=ds[ds.length-1];if(ds.length==1){_67e.hide();}else{_67e.show(pd.underlayAttrs,pd.zIndex-1);}if(_698.refocus){var _699=pd.focus;if(pd.dialog&&(!_699||!dom.isDescendant(_699,pd.dialog.domNode))){pd.dialog._getFocusItems();_699=pd.dialog._firstFocusItem;}if(_699){try{_699.focus();}catch(e){}}}}else{var idx=_66b.indexOf(_66b.map(ds,function(elem){return elem.dialog;}),_698);if(idx!=-1){ds.splice(idx,1);}}},isTop:function(_69a){return ds[ds.length-1].dialog==_69a;}};var ds=_694._dialogStack=[{dialog:null,focus:null,underlayAttrs:null}];_677.watch("curNode",function(attr,_69b,node){var _69c=ds[ds.length-1].dialog;if(node&&_69c&&!_69c._fadeOutDeferred&&node.ownerDocument==_69c.ownerDocument){do{if(node==_69c.domNode||_66f.contains(node,"dijitPopup")){return;}}while(node=node.parentNode);_69c.focus();}});if(has("dijit-legacy-requires")){_672(0,function(){var _69d=["dijit/TooltipDialog"];_66a(_69d);});}return _694;});},"dijit/form/_FormMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/window"],function(_69e,_69f,_6a0,lang,on,_6a1){return _69f("dijit.form._FormMixin",null,{state:"",_getDescendantFormWidgets:function(_6a2){var res=[];_69e.forEach(_6a2||this.getChildren(),function(_6a3){if("value" in _6a3){res.push(_6a3);}else{res=res.concat(this._getDescendantFormWidgets(_6a3.getChildren()));}},this);return res;},reset:function(){_69e.forEach(this._getDescendantFormWidgets(),function(_6a4){if(_6a4.reset){_6a4.reset();}});},validate:function(){var _6a5=false;return _69e.every(_69e.map(this._getDescendantFormWidgets(),function(_6a6){_6a6._hasBeenBlurred=true;var _6a7=_6a6.disabled||!_6a6.validate||_6a6.validate();if(!_6a7&&!_6a5){_6a1.scrollIntoView(_6a6.containerNode||_6a6.domNode);_6a6.focus();_6a5=true;}return _6a7;}),function(item){return item;});},setValues:function(val){_6a0.deprecated(this.declaredClass+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(obj){var map={};_69e.forEach(this._getDescendantFormWidgets(),function(_6a8){if(!_6a8.name){return;}var _6a9=map[_6a8.name]||(map[_6a8.name]=[]);_6a9.push(_6a8);});for(var name in map){if(!map.hasOwnProperty(name)){continue;}var _6aa=map[name],_6ab=lang.getObject(name,false,obj);if(_6ab===undefined){continue;}_6ab=[].concat(_6ab);if(typeof _6aa[0].checked=="boolean"){_69e.forEach(_6aa,function(w){w.set("value",_69e.indexOf(_6ab,w._get("value"))!=-1);});}else{if(_6aa[0].multiple){_6aa[0].set("value",_6ab);}else{_69e.forEach(_6aa,function(w,i){w.set("value",_6ab[i]);});}}}},getValues:function(){_6a0.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},_getValueAttr:function(){var obj={};_69e.forEach(this._getDescendantFormWidgets(),function(_6ac){var name=_6ac.name;if(!name||_6ac.disabled){return;}var _6ad=_6ac.get("value");if(typeof _6ac.checked=="boolean"){if(/Radio/.test(_6ac.declaredClass)){if(_6ad!==false){lang.setObject(name,_6ad,obj);}else{_6ad=lang.getObject(name,false,obj);if(_6ad===undefined){lang.setObject(name,null,obj);}}}else{var ary=lang.getObject(name,false,obj);if(!ary){ary=[];lang.setObject(name,ary,obj);}if(_6ad!==false){ary.push(_6ad);}}}else{var prev=lang.getObject(name,false,obj);if(typeof prev!="undefined"){if(lang.isArray(prev)){prev.push(_6ad);}else{lang.setObject(name,[prev,_6ad],obj);}}else{lang.setObject(name,_6ad,obj);}}});return obj;},isValid:function(){return this.state=="";},onValidStateChange:function(){},_getState:function(){var _6ae=_69e.map(this._descendants,function(w){return w.get("state")||"";});return _69e.indexOf(_6ae,"Error")>=0?"Error":_69e.indexOf(_6ae,"Incomplete")>=0?"Incomplete":"";},disconnectChildren:function(){},connectChildren:function(_6af){this._descendants=this._getDescendantFormWidgets();_69e.forEach(this._descendants,function(_6b0){if(!_6b0._started){_6b0.startup();}});if(!_6af){this._onChildChange();}},_onChildChange:function(attr){if(!attr||attr=="state"||attr=="disabled"){this._set("state",this._getState());}if(!attr||attr=="value"||attr=="disabled"||attr=="checked"){if(this._onChangeDelayTimer){this._onChangeDelayTimer.remove();}this._onChangeDelayTimer=this.defer(function(){delete this._onChangeDelayTimer;this._set("value",this.get("value"));},10);}},startup:function(){this.inherited(arguments);this._descendants=this._getDescendantFormWidgets();this.value=this.get("value");this.state=this._getState();var self=this;this.own(on(this.containerNode,"attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked",function(evt){if(evt.target==self.domNode){return;}self._onChildChange(evt.type.replace("attrmodified-",""));}));this.watch("state",function(attr,_6b1,_6b2){this.onValidStateChange(_6b2=="");});},destroy:function(){this.inherited(arguments);}});});},"dijit/_DialogMixin":function(){define(["dojo/_base/declare","./a11y"],function(_6b3,a11y){return _6b3("dijit._DialogMixin",null,{actionBarTemplate:"",execute:function(){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();this.execute(this.get("value"));},_getFocusItems:function(){var _6b4=a11y._getTabNavigable(this.domNode);this._firstFocusItem=_6b4.lowest||_6b4.first||this.closeButtonNode||this.domNode;this._lastFocusItem=_6b4.last||_6b4.highest||this._firstFocusItem;}});});},"dijit/DialogUnderlay":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/aspect","dojo/dom-attr","dojo/dom-style","dojo/on","dojo/window","./_Widget","./_TemplatedMixin","./BackgroundIframe","./Viewport","./main"],function(_6b5,lang,_6b6,_6b7,_6b8,on,_6b9,_6ba,_6bb,_6bc,_6bd,_6be){var _6bf=_6b5("dijit.DialogUnderlay",[_6ba,_6bb],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' tabIndex='-1' data-dojo-attach-point='node'></div></div>",dialogId:"","class":"",_modalConnects:[],_setDialogIdAttr:function(id){_6b7.set(this.node,"id",id+"_underlay");this._set("dialogId",id);},_setClassAttr:function(_6c0){this.node.className="dijitDialogUnderlay "+_6c0;this._set("class",_6c0);},postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKeyDown")));this.inherited(arguments);},layout:function(){var is=this.node.style,os=this.domNode.style;os.display="none";var _6c1=_6b9.getBox(this.ownerDocument);os.top=_6c1.t+"px";os.left=_6c1.l+"px";is.width=_6c1.w+"px";is.height=_6c1.h+"px";os.display="block";},show:function(){this.domNode.style.display="block";this.open=true;this.layout();this.bgIframe=new _6bc(this.domNode);var win=_6b9.get(this.ownerDocument);this._modalConnects=[_6bd.on("resize",lang.hitch(this,"layout")),on(win,"scroll",lang.hitch(this,"layout"))];},hide:function(){this.bgIframe.destroy();delete this.bgIframe;this.domNode.style.display="none";while(this._modalConnects.length){(this._modalConnects.pop()).remove();}this.open=false;},destroy:function(){while(this._modalConnects.length){(this._modalConnects.pop()).remove();}this.inherited(arguments);},_onKeyDown:function(){}});_6bf.show=function(_6c2,_6c3){var _6c4=_6bf._singleton;if(!_6c4||_6c4._destroyed){_6c4=_6be._underlay=_6bf._singleton=new _6bf(_6c2);}else{if(_6c2){_6c4.set(_6c2);}}_6b8.set(_6c4.domNode,"zIndex",_6c3);if(!_6c4.open){_6c4.show();}};_6bf.hide=function(){var _6c5=_6bf._singleton;if(_6c5&&!_6c5._destroyed){_6c5.hide();}};return _6bf;});},"dijit/layout/ContentPane":function(){define(["dojo/_base/kernel","dojo/_base/lang","../_Widget","../_Container","./_ContentPaneResizeMixin","dojo/string","dojo/html","dojo/_base/array","dojo/_base/declare","dojo/_base/Deferred","dojo/dom","dojo/dom-attr","dojo/dom-construct","dojo/_base/xhr","dojo/i18n","dojo/when","dojo/i18n!../nls/loading"],function(_6c6,lang,_6c7,_6c8,_6c9,_6ca,html,_6cb,_6cc,_6cd,dom,_6ce,_6cf,xhr,i18n,when){return _6cc("dijit.layout.ContentPane",[_6c7,_6c8,_6c9],{href:"",content:"",extractContent:false,parseOnLoad:true,parserScope:_6c6._scopeName,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>",isLoaded:false,baseClass:"dijitContentPane",ioArgs:{},onLoadDeferred:null,_setTitleAttr:null,stopParser:true,template:false,markupFactory:function(_6d0,node,ctor){var self=new ctor(_6d0,node);return !self.href&&self._contentSetter&&self._contentSetter.parseDeferred&&!self._contentSetter.parseDeferred.isFulfilled()?self._contentSetter.parseDeferred.then(function(){return self;}):self;},create:function(_6d1,_6d2){if((!_6d1||!_6d1.template)&&_6d2&&!("href" in _6d1)&&!("content" in _6d1)){_6d2=dom.byId(_6d2);var df=_6d2.ownerDocument.createDocumentFragment();while(_6d2.firstChild){df.appendChild(_6d2.firstChild);}_6d1=lang.delegate(_6d1,{content:df});}this.inherited(arguments,[_6d1,_6d2]);},postMixInProperties:function(){this.inherited(arguments);var _6d3=i18n.getLocalization("dijit","loading",this.lang);this.loadingMessage=_6ca.substitute(this.loadingMessage,_6d3);this.errorMessage=_6ca.substitute(this.errorMessage,_6d3);},buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}this.domNode.removeAttribute("title");},startup:function(){this.inherited(arguments);if(this._contentSetter){_6cb.forEach(this._contentSetter.parseResults,function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}},this);}},_startChildren:function(){_6cb.forEach(this.getChildren(),function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}});if(this._contentSetter){_6cb.forEach(this._contentSetter.parseResults,function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}},this);}},setHref:function(href){_6c6.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",href);},_setHrefAttr:function(href){this.cancel();this.onLoadDeferred=new _6cd(lang.hitch(this,"cancel"));this.onLoadDeferred.then(lang.hitch(this,"onLoad"));this._set("href",href);if(this.preload||(this._created&&this._isShown())){this._load();}else{this._hrefChanged=true;}return this.onLoadDeferred;},setContent:function(data){_6c6.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.","","2.0");this.set("content",data);},_setContentAttr:function(data){this._set("href","");this.cancel();this.onLoadDeferred=new _6cd(lang.hitch(this,"cancel"));if(this._created){this.onLoadDeferred.then(lang.hitch(this,"onLoad"));}this._setContent(data||"");this._isDownloaded=false;return this.onLoadDeferred;},_getContentAttr:function(){return this.containerNode.innerHTML;},cancel:function(){if(this._xhrDfd&&(this._xhrDfd.fired==-1)){this._xhrDfd.cancel();}delete this._xhrDfd;this.onLoadDeferred=null;},destroy:function(){this.cancel();this.inherited(arguments);},destroyRecursive:function(_6d4){if(this._beingDestroyed){return;}this.inherited(arguments);},_onShow:function(){this.inherited(arguments);if(this.href){if(!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow)){return this.refresh();}}},refresh:function(){this.cancel();this.onLoadDeferred=new _6cd(lang.hitch(this,"cancel"));this.onLoadDeferred.then(lang.hitch(this,"onLoad"));this._load();return this.onLoadDeferred;},_load:function(){this._setContent(this.onDownloadStart(),true);var self=this;var _6d5={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};if(lang.isObject(this.ioArgs)){lang.mixin(_6d5,this.ioArgs);}var hand=(this._xhrDfd=(this.ioMethod||xhr.get)(_6d5)),_6d6;hand.then(function(html){_6d6=html;try{self._isDownloaded=true;return self._setContent(html,false);}catch(err){self._onError("Content",err);}},function(err){if(!hand.canceled){self._onError("Download",err);}delete self._xhrDfd;return err;}).then(function(){self.onDownloadEnd();delete self._xhrDfd;return _6d6;});delete this._hrefChanged;},_onLoadHandler:function(data){this._set("isLoaded",true);try{this.onLoadDeferred.resolve(data);}catch(e){console.error("Error "+(this.widgetId||this.id)+" running custom onLoad code: "+e.message);}},_onUnloadHandler:function(){this._set("isLoaded",false);try{this.onUnload();}catch(e){console.error("Error "+this.widgetId+" running custom onUnload code: "+e.message);}},destroyDescendants:function(_6d7){if(this.isLoaded){this._onUnloadHandler();}var _6d8=this._contentSetter;_6cb.forEach(this.getChildren(),function(_6d9){if(_6d9.destroyRecursive){_6d9.destroyRecursive(_6d7);}else{if(_6d9.destroy){_6d9.destroy(_6d7);}}_6d9._destroyed=true;});if(_6d8){_6cb.forEach(_6d8.parseResults,function(_6da){if(!_6da._destroyed){if(_6da.destroyRecursive){_6da.destroyRecursive(_6d7);}else{if(_6da.destroy){_6da.destroy(_6d7);}}_6da._destroyed=true;}});delete _6d8.parseResults;}if(!_6d7){_6cf.empty(this.containerNode);}delete this._singleChild;},_setContent:function(cont,_6db){cont=this.preprocessContent(cont);this.destroyDescendants();var _6dc=this._contentSetter;if(!(_6dc&&_6dc instanceof html._ContentSetter)){_6dc=this._contentSetter=new html._ContentSetter({node:this.containerNode,_onError:lang.hitch(this,this._onError),onContentError:lang.hitch(this,function(e){var _6dd=this.onContentError(e);try{this.containerNode.innerHTML=_6dd;}catch(e){console.error("Fatal "+this.id+" could not change content due to "+e.message,e);}})});}var _6de=lang.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:!cont.domNode&&this.parseOnLoad,parserScope:this.parserScope,startup:false,dir:this.dir,lang:this.lang,textDir:this.textDir},this._contentSetterParams||{});var p=_6dc.set((lang.isObject(cont)&&cont.domNode)?cont.domNode:cont,_6de);var self=this;return when(p&&p.then?p:_6dc.parseDeferred,function(){delete self._contentSetterParams;if(!_6db){if(self._started){self._startChildren();self._scheduleLayout();}self._onLoadHandler(cont);}});},preprocessContent:function(_6df){return _6df;},_onError:function(type,err,_6e0){this.onLoadDeferred.reject(err);var _6e1=this["on"+type+"Error"].call(this,err);if(_6e0){console.error(_6e0,err);}else{if(_6e1){this._setContent(_6e1,true);}}},onLoad:function(){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage;},onContentError:function(){},onDownloadError:function(){return this.errorMessage;},onDownloadEnd:function(){}});});},"dijit/layout/_ContentPaneResizeMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang","dojo/query","../registry","../Viewport","./utils"],function(_6e2,_6e3,_6e4,_6e5,_6e6,lang,_6e7,_6e8,_6e9,_6ea){return _6e3("dijit.layout._ContentPaneResizeMixin",null,{doLayout:true,isLayoutContainer:true,startup:function(){if(this._started){return;}var _6eb=this.getParent();this._childOfLayoutWidget=_6eb&&_6eb.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;this.inherited(arguments);if(this._isShown()){this._onShow();}if(!this._childOfLayoutWidget){this.own(_6e9.on("resize",lang.hitch(this,"resize")));}},_checkIfSingleChild:function(){if(!this.doLayout){return;}var _6ec=[],_6ed=false;_6e7("> *",this.containerNode).some(function(node){var _6ee=_6e8.byNode(node);if(_6ee&&_6ee.resize){_6ec.push(_6ee);}else{if(!/script|link|style/i.test(node.nodeName)&&node.offsetHeight){_6ed=true;}}});this._singleChild=_6ec.length==1&&!_6ed?_6ec[0]:null;_6e4.toggle(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild);},resize:function(_6ef,_6f0){this._resizeCalled=true;this._scheduleLayout(_6ef,_6f0);},_scheduleLayout:function(_6f1,_6f2){if(this._isShown()){this._layout(_6f1,_6f2);}else{this._needLayout=true;this._changeSize=_6f1;this._resultSize=_6f2;}},_layout:function(_6f3,_6f4){delete this._needLayout;if(!this._wasShown&&this.open!==false){this._onShow();}if(_6f3){_6e5.setMarginBox(this.domNode,_6f3);}var cn=this.containerNode;if(cn===this.domNode){var mb=_6f4||{};lang.mixin(mb,_6f3||{});if(!("h" in mb)||!("w" in mb)){mb=lang.mixin(_6e5.getMarginBox(cn),mb);}this._contentBox=_6ea.marginBox2contentBox(cn,mb);}else{this._contentBox=_6e5.getContentBox(cn);}this._layoutChildren();},_layoutChildren:function(){this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){var cb=this._contentBox||_6e5.getContentBox(this.containerNode);this._singleChild.resize({w:cb.w,h:cb.h});}else{var _6f5=this.getChildren(),_6f6,i=0;while(_6f6=_6f5[i++]){if(_6f6.resize){_6f6.resize();}}}},_isShown:function(){if(this._childOfLayoutWidget){if(this._resizeCalled&&"open" in this){return this.open;}return this._resizeCalled;}else{if("open" in this){return this.open;}else{var node=this.domNode,_6f7=this.domNode.parentNode;return (node.style.display!="none")&&(node.style.visibility!="hidden")&&!_6e4.contains(node,"dijitHidden")&&_6f7&&_6f7.style&&(_6f7.style.display!="none");}}},_onShow:function(){this._wasShown=true;if(this._needLayout){this._layout(this._changeSize,this._resultSize);}this.inherited(arguments);}});});},"dijit/layout/utils":function(){define(["dojo/_base/array","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang"],function(_6f8,_6f9,_6fa,_6fb,lang){function _6fc(word){return word.substring(0,1).toUpperCase()+word.substring(1);};function size(_6fd,dim){var _6fe=_6fd.resize?_6fd.resize(dim):_6fa.setMarginBox(_6fd.domNode,dim);if(_6fe){lang.mixin(_6fd,_6fe);}else{lang.mixin(_6fd,_6fa.getMarginBox(_6fd.domNode));lang.mixin(_6fd,dim);}};var _6ff={marginBox2contentBox:function(node,mb){var cs=_6fb.getComputedStyle(node);var me=_6fa.getMarginExtents(node,cs);var pb=_6fa.getPadBorderExtents(node,cs);return {l:_6fb.toPixelValue(node,cs.paddingLeft),t:_6fb.toPixelValue(node,cs.paddingTop),w:mb.w-(me.w+pb.w),h:mb.h-(me.h+pb.h)};},layoutChildren:function(_700,dim,_701,_702,_703){dim=lang.mixin({},dim);_6f9.add(_700,"dijitLayoutContainer");_701=_6f8.filter(_701,function(item){return item.region!="center"&&item.layoutAlign!="client";}).concat(_6f8.filter(_701,function(item){return item.region=="center"||item.layoutAlign=="client";}));_6f8.forEach(_701,function(_704){var elm=_704.domNode,pos=(_704.region||_704.layoutAlign);if(!pos){throw new Error("No region setting for "+_704.id);}var _705=elm.style;_705.left=dim.l+"px";_705.top=dim.t+"px";_705.position="absolute";_6f9.add(elm,"dijitAlign"+_6fc(pos));var _706={};if(_702&&_702==_704.id){_706[_704.region=="top"||_704.region=="bottom"?"h":"w"]=_703;}if(pos=="leading"){pos=_704.isLeftToRight()?"left":"right";}if(pos=="trailing"){pos=_704.isLeftToRight()?"right":"left";}if(pos=="top"||pos=="bottom"){_706.w=dim.w;size(_704,_706);dim.h-=_704.h;if(pos=="top"){dim.t+=_704.h;}else{_705.top=dim.t+dim.h+"px";}}else{if(pos=="left"||pos=="right"){_706.h=dim.h;size(_704,_706);dim.w-=_704.w;if(pos=="left"){dim.l+=_704.w;}else{_705.left=dim.l+dim.w+"px";}}else{if(pos=="client"||pos=="center"){size(_704,dim);}}}});}};lang.setObject("dijit.layout.utils",_6ff);return _6ff;});},"dijit/form/Button":function(){define(["require","dojo/_base/declare","dojo/dom-class","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/ready","./_FormWidget","./_ButtonMixin","dojo/text!./templates/Button.html","../a11yclick"],function(_707,_708,_709,has,_70a,lang,_70b,_70c,_70d,_70e){if(has("dijit-legacy-requires")){_70b(0,function(){var _70f=["dijit/form/DropDownButton","dijit/form/ComboButton","dijit/form/ToggleButton"];_707(_70f);});}var _710=_708("dijit.form.Button"+(has("dojo-bidi")?"_NoBidi":""),[_70c,_70d],{showLabel:true,iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitButton",templateString:_70e,_setValueAttr:"valueNode",_setNameAttr:function(name){if(this.valueNode){this.valueNode.setAttribute("name",name);}},postCreate:function(){this.inherited(arguments);this._setLabelFromContainer();},_setLabelFromContainer:function(){if(this.containerNode&&!this.label){this.label=lang.trim(this.containerNode.innerHTML);this.onLabelSet();}},_setShowLabelAttr:function(val){if(this.containerNode){_709.toggle(this.containerNode,"dijitDisplayNone",!val);}this._set("showLabel",val);},setLabel:function(_711){_70a.deprecated("dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",_711);},onLabelSet:function(){this.inherited(arguments);if(!this.showLabel&&!("title" in this.params)){this.titleNode.title=lang.trim(this.containerNode.innerText||this.containerNode.textContent||"");}}});if(has("dojo-bidi")){_710=_708("dijit.form.Button",_710,{onLabelSet:function(){this.inherited(arguments);if(this.titleNode.title){this.applyTextDir(this.titleNode,this.titleNode.title);}},_setTextDirAttr:function(_712){if(this._created&&this.textDir!=_712){this._set("textDir",_712);this._setLabelAttr(this.label);}}});}return _710;});},"dijit/form/_ButtonMixin":function(){define(["dojo/_base/declare","dojo/dom","dojo/has","../registry"],function(_713,dom,has,_714){var _715=_713("dijit.form._ButtonMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{label:"",type:"button",__onClick:function(e){e.stopPropagation();e.preventDefault();if(!this.disabled){this.valueNode.click(e);}return false;},_onClick:function(e){if(this.disabled){e.stopPropagation();e.preventDefault();return false;}if(this.onClick(e)===false){e.preventDefault();}var _716=e.defaultPrevented;if(!_716&&this.type=="submit"&&!(this.valueNode||this.focusNode).form){for(var node=this.domNode;node.parentNode;node=node.parentNode){var _717=_714.byNode(node);if(_717&&typeof _717._onSubmit=="function"){_717._onSubmit(e);e.preventDefault();_716=true;break;}}}return !_716;},postCreate:function(){this.inherited(arguments);dom.setSelectable(this.focusNode,false);},onClick:function(){return true;},_setLabelAttr:function(_718){this._set("label",_718);var _719=this.containerNode||this.focusNode;_719.innerHTML=_718;this.onLabelSet();},onLabelSet:function(){}});if(has("dojo-bidi")){_715=_713("dijit.form._ButtonMixin",_715,{onLabelSet:function(){this.inherited(arguments);var _71a=this.containerNode||this.focusNode;this.applyTextDir(_71a);}});}return _715;});},"dijit/form/CheckBox":function(){define(["require","dojo/_base/declare","dojo/dom-attr","dojo/has","dojo/query","dojo/ready","./ToggleButton","./_CheckBoxMixin","dojo/text!./templates/CheckBox.html","dojo/NodeList-dom","../a11yclick"],function(_71b,_71c,_71d,has,_71e,_71f,_720,_721,_722){if(has("dijit-legacy-requires")){_71f(0,function(){var _723=["dijit/form/RadioButton"];_71b(_723);});}return _71c("dijit.form.CheckBox",[_720,_721],{templateString:_722,baseClass:"dijitCheckBox",_setValueAttr:function(_724,_725){if(typeof _724=="string"){this.inherited(arguments);_724=true;}if(this._created){this.set("checked",_724,_725);}},_getValueAttr:function(){return this.checked&&this._get("value");},_setIconClassAttr:null,_setNameAttr:"focusNode",postMixInProperties:function(){this.inherited(arguments);this.checkedAttrSetting="";},_fillContent:function(){},_onFocus:function(){if(this.id){_71e("label[for='"+this.id+"']").addClass("dijitFocusedLabel");}this.inherited(arguments);},_onBlur:function(){if(this.id){_71e("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");}this.inherited(arguments);}});});},"dijit/form/ToggleButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","./Button","./_ToggleButtonMixin"],function(_726,_727,_728,_729){return _726("dijit.form.ToggleButton",[_728,_729],{baseClass:"dijitToggleButton",setChecked:function(_72a){_727.deprecated("setChecked("+_72a+") is deprecated. Use set('checked',"+_72a+") instead.","","2.0");this.set("checked",_72a);}});});},"dijit/form/_ToggleButtonMixin":function(){define(["dojo/_base/declare","dojo/dom-attr"],function(_72b,_72c){return _72b("dijit.form._ToggleButtonMixin",null,{checked:false,_aria_attr:"aria-pressed",_onClick:function(evt){var _72d=this.checked;this._set("checked",!_72d);var ret=this.inherited(arguments);this.set("checked",ret?this.checked:_72d);return ret;},_setCheckedAttr:function(_72e,_72f){this._set("checked",_72e);var node=this.focusNode||this.domNode;if(this._created){if(_72c.get(node,"checked")!=!!_72e){_72c.set(node,"checked",!!_72e);}}node.setAttribute(this._aria_attr,String(_72e));this._handleOnChange(_72e,_72f);},postCreate:function(){this.inherited(arguments);var node=this.focusNode||this.domNode;if(this.checked){node.setAttribute("checked","checked");}if(this._resetValue===undefined){this._lastValueReported=this._resetValue=this.checked;}},reset:function(){this._hasBeenBlurred=false;this.set("checked",this.params.checked||false);}});});},"dijit/form/_CheckBoxMixin":function(){define(["dojo/_base/declare","dojo/dom-attr"],function(_730,_731){return _730("dijit.form._CheckBoxMixin",null,{type:"checkbox",value:"on",readOnly:false,_aria_attr:"aria-checked",_setReadOnlyAttr:function(_732){this._set("readOnly",_732);_731.set(this.focusNode,"readOnly",_732);},_setLabelAttr:undefined,_getSubmitValue:function(_733){return (_733==null||_733==="")?"on":_733;},_setValueAttr:function(_734){_734=this._getSubmitValue(_734);this._set("value",_734);_731.set(this.focusNode,"value",_734);},reset:function(){this.inherited(arguments);this._set("value",this._getSubmitValue(this.params.value));_731.set(this.focusNode,"value",this.value);},_onClick:function(e){if(this.readOnly){e.stopPropagation();e.preventDefault();return false;}return this.inherited(arguments);}});});},"dijit/form/ComboButton":function(){define(["dojo/_base/declare","dojo/keys","../focus","./DropDownButton","dojo/text!./templates/ComboButton.html","../a11yclick"],function(_735,keys,_736,_737,_738){return _735("dijit.form.ComboButton",_737,{templateString:_738,_setIdAttr:"",_setTabIndexAttr:["focusNode","titleNode"],_setTitleAttr:"titleNode",optionsTitle:"",baseClass:"dijitComboButton",cssStateNodes:{"buttonNode":"dijitButtonNode","titleNode":"dijitButtonContents","_popupStateNode":"dijitDownArrowButton"},_focusedNode:null,_onButtonKeyDown:function(evt){if(evt.keyCode==keys[this.isLeftToRight()?"RIGHT_ARROW":"LEFT_ARROW"]){_736.focus(this._popupStateNode);evt.stopPropagation();evt.preventDefault();}},_onArrowKeyDown:function(evt){if(evt.keyCode==keys[this.isLeftToRight()?"LEFT_ARROW":"RIGHT_ARROW"]){_736.focus(this.titleNode);evt.stopPropagation();evt.preventDefault();}},focus:function(_739){if(!this.disabled){_736.focus(_739=="start"?this.titleNode:this._popupStateNode);}}});});},"dijit/form/DropDownButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/query","../registry","../popup","./Button","../_Container","../_HasDropDown","dojo/text!./templates/DropDownButton.html","../a11yclick"],function(_73a,_73b,lang,_73c,_73d,_73e,_73f,_740,_741,_742){return _73a("dijit.form.DropDownButton",[_73f,_740,_741],{baseClass:"dijitDropDownButton",templateString:_742,_fillContent:function(){var _743=this.srcNodeRef;var dest=this.containerNode;if(_743&&dest){while(_743.hasChildNodes()){var _744=_743.firstChild;if(_744.hasAttribute&&(_744.hasAttribute("data-dojo-type")||_744.hasAttribute("dojoType")||_744.hasAttribute("data-"+_73b._scopeName+"-type")||_744.hasAttribute(_73b._scopeName+"Type"))){this.dropDownContainer=this.ownerDocument.createElement("div");this.dropDownContainer.appendChild(_744);}else{dest.appendChild(_744);}}}},startup:function(){if(this._started){return;}if(!this.dropDown&&this.dropDownContainer){this.dropDown=_73d.byNode(this.dropDownContainer.firstChild);delete this.dropDownContainer;}if(this.dropDown){_73e.hide(this.dropDown);}this.inherited(arguments);},isLoaded:function(){var _745=this.dropDown;return (!!_745&&(!_745.href||_745.isLoaded));},loadDropDown:function(_746){var _747=this.dropDown;var _748=_747.on("load",lang.hitch(this,function(){_748.remove();_746();}));_747.refresh();},isFocusable:function(){return this.inherited(arguments)&&!this._mouseDown;}});});},"dijit/_HasDropDown":function(){define(["dojo/_base/declare","dojo/_base/Deferred","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","dojo/touch","./registry","./focus","./popup","./_FocusMixin"],function(_749,_74a,dom,_74b,_74c,_74d,_74e,has,keys,lang,on,_74f,_750,_751,_752,_753){return _749("dijit._HasDropDown",_753,{_buttonNode:null,_arrowWrapperNode:null,_popupStateNode:null,_aroundNode:null,dropDown:null,autoWidth:true,forceWidth:false,maxHeight:-1,dropDownPosition:["below","above"],_stopClickEvents:true,_onDropDownMouseDown:function(e){if(this.disabled||this.readOnly){return;}if(e.type!="MSPointerDown"){e.preventDefault();}this.own(on.once(this.ownerDocument,_74f.release,lang.hitch(this,"_onDropDownMouseUp")));this.toggleDropDown();},_onDropDownMouseUp:function(e){var _754=this.dropDown,_755=false;if(e&&this._opened){var c=_74d.position(this._buttonNode,true);if(!(e.pageX>=c.x&&e.pageX<=c.x+c.w)||!(e.pageY>=c.y&&e.pageY<=c.y+c.h)){var t=e.target;while(t&&!_755){if(_74c.contains(t,"dijitPopup")){_755=true;}else{t=t.parentNode;}}if(_755){t=e.target;if(_754.onItemClick){var _756;while(t&&!(_756=_750.byNode(t))){t=t.parentNode;}if(_756&&_756.onClick&&_756.getParent){_756.getParent().onItemClick(_756,e);}}return;}}}if(this._opened){if(_754.focus&&(_754.autoFocus!==false||(e.type=="mouseup"&&!this.hovering))){this._focusDropDownTimer=this.defer(function(){_754.focus();delete this._focusDropDownTimer;});}}else{if(this.focus){this.defer("focus");}}},_onDropDownClick:function(e){if(this._stopClickEvents){e.stopPropagation();e.preventDefault();}},buildRendering:function(){this.inherited(arguments);this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;var _757={"after":this.isLeftToRight()?"Right":"Left","before":this.isLeftToRight()?"Left":"Right","above":"Up","below":"Down","left":"Left","right":"Right"}[this.dropDownPosition[0]]||this.dropDownPosition[0]||"Down";_74c.add(this._arrowWrapperNode||this._buttonNode,"dijit"+_757+"ArrowButton");},postCreate:function(){this.inherited(arguments);var _758=this.focusNode||this.domNode;this.own(on(this._buttonNode,_74f.press,lang.hitch(this,"_onDropDownMouseDown")),on(this._buttonNode,"click",lang.hitch(this,"_onDropDownClick")),on(_758,"keydown",lang.hitch(this,"_onKey")),on(_758,"keyup",lang.hitch(this,"_onKeyUp")));},destroy:function(){if(this._opened){this.closeDropDown(true);}if(this.dropDown){if(!this.dropDown._destroyed){this.dropDown.destroyRecursive();}delete this.dropDown;}this.inherited(arguments);},_onKey:function(e){if(this.disabled||this.readOnly){return;}var d=this.dropDown,_759=e.target;if(d&&this._opened&&d.handleKey){if(d.handleKey(e)===false){e.stopPropagation();e.preventDefault();return;}}if(d&&this._opened&&e.keyCode==keys.ESCAPE){this.closeDropDown();e.stopPropagation();e.preventDefault();}else{if(!this._opened&&(e.keyCode==keys.DOWN_ARROW||((e.keyCode==keys.ENTER||(e.keyCode==keys.SPACE&&(!this._searchTimer||(e.ctrlKey||e.altKey||e.metaKey))))&&((_759.tagName||"").toLowerCase()!=="input"||(_759.type&&_759.type.toLowerCase()!=="text"))))){this._toggleOnKeyUp=true;e.stopPropagation();e.preventDefault();}}},_onKeyUp:function(){if(this._toggleOnKeyUp){delete this._toggleOnKeyUp;this.toggleDropDown();var d=this.dropDown;if(d&&d.focus){this.defer(lang.hitch(d,"focus"),1);}}},_onBlur:function(){this.closeDropDown(false);this.inherited(arguments);},isLoaded:function(){return true;},loadDropDown:function(_75a){_75a();},loadAndOpenDropDown:function(){var d=new _74a(),_75b=lang.hitch(this,function(){this.openDropDown();d.resolve(this.dropDown);});if(!this.isLoaded()){this.loadDropDown(_75b);}else{_75b();}return d;},toggleDropDown:function(){if(this.disabled||this.readOnly){return;}if(!this._opened){this.loadAndOpenDropDown();}else{this.closeDropDown(true);}},openDropDown:function(){var _75c=this.dropDown,_75d=_75c.domNode,_75e=this._aroundNode||this.domNode,self=this;var _75f=_752.open({parent:this,popup:_75c,around:_75e,orient:this.dropDownPosition,maxHeight:this.maxHeight,onExecute:function(){self.closeDropDown(true);},onCancel:function(){self.closeDropDown(true);},onClose:function(){_74b.set(self._popupStateNode,"popupActive",false);_74c.remove(self._popupStateNode,"dijitHasDropDownOpen");self._set("_opened",false);}});if(this.forceWidth||(this.autoWidth&&_75e.offsetWidth>_75c._popupWrapper.offsetWidth)){var _760=_75e.offsetWidth-_75c._popupWrapper.offsetWidth;var _761={w:_75c.domNode.offsetWidth+_760};this._origStyle=_75d.style.cssText;if(lang.isFunction(_75c.resize)){_75c.resize(_761);}else{_74d.setMarginBox(_75d,_761);}if(_75f.corner[1]=="R"){_75c._popupWrapper.style.left=(_75c._popupWrapper.style.left.replace("px","")-_760)+"px";}}_74b.set(this._popupStateNode,"popupActive","true");_74c.add(this._popupStateNode,"dijitHasDropDownOpen");this._set("_opened",true);this._popupStateNode.setAttribute("aria-expanded","true");this._popupStateNode.setAttribute("aria-owns",_75c.id);if(_75d.getAttribute("role")!=="presentation"&&!_75d.getAttribute("aria-labelledby")){_75d.setAttribute("aria-labelledby",this.id);}return _75f;},closeDropDown:function(_762){if(this._focusDropDownTimer){this._focusDropDownTimer.remove();delete this._focusDropDownTimer;}if(this._opened){this._popupStateNode.setAttribute("aria-expanded","false");if(_762&&this.focus){this.focus();}_752.close(this.dropDown);this._opened=false;}if(this._origStyle){this.dropDown.domNode.style.cssText=this._origStyle;delete this._origStyle;}}});});},"dijit/form/FilteringSelect":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/when","./MappedTextBox","./ComboBoxMixin"],function(_763,lang,when,_764,_765){return _763("dijit.form.FilteringSelect",[_764,_765],{required:true,_lastDisplayedValue:"",_isValidSubset:function(){return this._opened;},isValid:function(){return !!this.item||(!this.required&&this.get("displayedValue")=="");},_refreshState:function(){if(!this.searchTimer){this.inherited(arguments);}},_callbackSetLabel:function(_766,_767,_768,_769){if((_767&&_767[this.searchAttr]!==this._lastQuery)||(!_767&&_766.length&&this.store.getIdentity(_766[0])!=this._lastQuery)){return;}if(!_766.length){this.set("value","",_769||(_769===undefined&&!this.focused),this.textbox.value,null);}else{this.set("item",_766[0],_769);}},_openResultList:function(_76a,_76b,_76c){if(_76b[this.searchAttr]!==this._lastQuery){return;}this.inherited(arguments);if(this.item===undefined){this.validate(true);}},_getValueAttr:function(){return this.valueNode.value;},_getValueField:function(){return "value";},_setValueAttr:function(_76d,_76e,_76f,item){if(!this._onChangeActive){_76e=null;}if(item===undefined){if(_76d===null||_76d===""){_76d="";if(!lang.isString(_76f)){this._setDisplayedValueAttr(_76f||"",_76e);return;}}var self=this;this._lastQuery=_76d;when(this.store.get(_76d),function(item){self._callbackSetLabel(item?[item]:[],undefined,undefined,_76e);});}else{this.valueNode.value=_76d;this.inherited(arguments,[_76d,_76e,_76f,item]);}},_setItemAttr:function(item,_770,_771){this.inherited(arguments);this._lastDisplayedValue=this.textbox.value;},_getDisplayQueryString:function(text){return text.replace(/([\\\*\?])/g,"\\$1");},_setDisplayedValueAttr:function(_772,_773){if(_772==null){_772="";}if(!this._created){if(!("displayedValue" in this.params)){return;}_773=false;}if(this.store){this.closeDropDown();var _774=lang.clone(this.query);var qs=this._getDisplayQueryString(_772),q;if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_774[this.searchAttr]=q;this.textbox.value=_772;this._lastDisplayedValue=_772;this._set("displayedValue",_772);var _775=this;var _776={queryOptions:{ignoreCase:this.ignoreCase,deep:true}};lang.mixin(_776,this.fetchProperties);this._fetchHandle=this.store.query(_774,_776);when(this._fetchHandle,function(_777){_775._fetchHandle=null;_775._callbackSetLabel(_777||[],_774,_776,_773);},function(err){_775._fetchHandle=null;if(!_775._cancelingQuery){console.error("dijit.form.FilteringSelect: "+err.toString());}});}},undo:function(){this.set("displayedValue",this._lastDisplayedValue);}});});},"dijit/form/MappedTextBox":function(){define(["dojo/_base/declare","dojo/sniff","dojo/dom-construct","./ValidationTextBox"],function(_778,has,_779,_77a){return _778("dijit.form.MappedTextBox",_77a,{postMixInProperties:function(){this.inherited(arguments);this.nameAttrSetting="";},_setNameAttr:"valueNode",serialize:function(val){return val.toString?val.toString():"";},toString:function(){var val=this.filter(this.get("value"));return val!=null?(typeof val=="string"?val:this.serialize(val,this.constraints)):"";},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);this.valueNode=_779.place("<input type='hidden'"+((this.name&&!has("msapp"))?" name=\""+this.name.replace(/"/g,"&quot;")+"\"":"")+"/>",this.textbox,"after");},reset:function(){this.valueNode.value="";this.inherited(arguments);}});});},"dijit/form/ValidationTextBox":function(){define(["dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/i18n","./TextBox","../Tooltip","dojo/text!./templates/ValidationTextBox.html","dojo/i18n!./nls/validate"],function(_77b,_77c,lang,i18n,_77d,_77e,_77f){var _780=_77b("dijit.form.ValidationTextBox",_77d,{templateString:_77f,required:false,promptMessage:"",invalidMessage:"$_unset_$",missingMessage:"$_unset_$",message:"",constraints:{},pattern:".*",regExp:"",regExpGen:function(){},state:"",tooltipPosition:[],_deprecateRegExp:function(attr,_781){if(_781!=_780.prototype[attr]){_77c.deprecated("ValidationTextBox id="+this.id+", set('"+attr+"', ...) is deprecated. Use set('pattern', ...) instead.","","2.0");this.set("pattern",_781);}},_setRegExpGenAttr:function(_782){this._deprecateRegExp("regExpGen",_782);this._set("regExpGen",this._computeRegexp);},_setRegExpAttr:function(_783){this._deprecateRegExp("regExp",_783);},_setValueAttr:function(){this.inherited(arguments);this._refreshState();},validator:function(_784,_785){return (new RegExp("^(?:"+this._computeRegexp(_785)+")"+(this.required?"":"?")+"$")).test(_784)&&(!this.required||!this._isEmpty(_784))&&(this._isEmpty(_784)||this.parse(_784,_785)!==undefined);},_isValidSubset:function(){return this.textbox.value.search(this._partialre)==0;},isValid:function(){return this.validator(this.textbox.value,this.get("constraints"));},_isEmpty:function(_786){return (this.trim?/^\s*$/:/^$/).test(_786);},getErrorMessage:function(){var _787=this.invalidMessage=="$_unset_$"?this.messages.invalidMessage:!this.invalidMessage?this.promptMessage:this.invalidMessage;var _788=this.missingMessage=="$_unset_$"?this.messages.missingMessage:!this.missingMessage?_787:this.missingMessage;return (this.required&&this._isEmpty(this.textbox.value))?_788:_787;},getPromptMessage:function(){return this.promptMessage;},_maskValidSubsetError:true,validate:function(_789){var _78a="";var _78b=this.disabled||this.isValid(_789);if(_78b){this._maskValidSubsetError=true;}var _78c=this._isEmpty(this.textbox.value);var _78d=!_78b&&_789&&this._isValidSubset();this._set("state",_78b?"":(((((!this._hasBeenBlurred||_789)&&_78c)||_78d)&&(this._maskValidSubsetError||(_78d&&!this._hasBeenBlurred&&_789)))?"Incomplete":"Error"));this.focusNode.setAttribute("aria-invalid",this.state=="Error"?"true":"false");if(this.state=="Error"){this._maskValidSubsetError=_789&&_78d;_78a=this.getErrorMessage(_789);}else{if(this.state=="Incomplete"){_78a=this.getPromptMessage(_789);this._maskValidSubsetError=!this._hasBeenBlurred||_789;}else{if(_78c){_78a=this.getPromptMessage(_789);}}}this.set("message",_78a);return _78b;},displayMessage:function(_78e){if(_78e&&this.focused){_77e.show(_78e,this.domNode,this.tooltipPosition,!this.isLeftToRight());}else{_77e.hide(this.domNode);}},_refreshState:function(){if(this._created){this.validate(this.focused);}this.inherited(arguments);},constructor:function(_78f){this.constraints=lang.clone(this.constraints);this.baseClass+=" dijitValidationTextBox";},startup:function(){this.inherited(arguments);this._refreshState();},_setConstraintsAttr:function(_790){if(!_790.locale&&this.lang){_790.locale=this.lang;}this._set("constraints",_790);this._refreshState();},_setPatternAttr:function(_791){this._set("pattern",_791);this._refreshState();},_computeRegexp:function(_792){var p=this.pattern;if(typeof p=="function"){p=p.call(this,_792);}if(p!=this._lastRegExp){var _793="";this._lastRegExp=p;if(p!=".*"){p.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(re){switch(re.charAt(0)){case "{":case "+":case "?":case "*":case "^":case "$":case "|":case "(":_793+=re;break;case ")":_793+="|$)";break;default:_793+="(?:"+re+"|$)";break;}});}try{"".search(_793);}catch(e){_793=this.pattern;console.warn("RegExp error in "+this.declaredClass+": "+this.pattern);}this._partialre="^(?:"+_793+")$";}return p;},postMixInProperties:function(){this.inherited(arguments);this.messages=i18n.getLocalization("dijit.form","validate",this.lang);this._setConstraintsAttr(this.constraints);},_setDisabledAttr:function(_794){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_795){this._set("required",_795);this.focusNode.setAttribute("aria-required",_795);this._refreshState();},_setMessageAttr:function(_796){this._set("message",_796);this.displayMessage(_796);},reset:function(){this._maskValidSubsetError=true;this.inherited(arguments);},_onBlur:function(){this.displayMessage("");this.inherited(arguments);},destroy:function(){_77e.hide(this.domNode);this.inherited(arguments);}});return _780;});},"dijit/form/TextBox":function(){define(["dojo/_base/declare","dojo/dom-construct","dojo/dom-style","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/sniff","./_FormValueWidget","./_TextBoxMixin","dojo/text!./templates/TextBox.html","../main"],function(_797,_798,_799,_79a,lang,on,has,_79b,_79c,_79d,_79e){var _79f=_797("dijit.form.TextBox"+(has("dojo-bidi")?"_NoBidi":""),[_79b,_79c],{templateString:_79d,_singleNodeTemplate:"<input class=\"dijit dijitReset dijitLeft dijitInputField\" data-dojo-attach-point=\"textbox,focusNode\" autocomplete=\"off\" type=\"${type}\" ${!nameAttrSetting} />",_buttonInputDisabled:has("ie")?"disabled":"",baseClass:"dijitTextBox",postMixInProperties:function(){var type=this.type.toLowerCase();if(this.templateString&&this.templateString.toLowerCase()=="input"||((type=="hidden"||type=="file")&&this.templateString==this.constructor.prototype.templateString)){this.templateString=this._singleNodeTemplate;}this.inherited(arguments);},postCreate:function(){this.inherited(arguments);if(has("ie")<9){this.defer(function(){try{var s=_799.getComputedStyle(this.domNode);if(s){var ff=s.fontFamily;if(ff){var _7a0=this.domNode.getElementsByTagName("INPUT");if(_7a0){for(var i=0;i<_7a0.length;i++){_7a0[i].style.fontFamily=ff;}}}}}catch(e){}});}},_setPlaceHolderAttr:function(v){this._set("placeHolder",v);if(!this._phspan){this._attachPoints.push("_phspan");this._phspan=_798.create("span",{className:"dijitPlaceHolder dijitInputField"},this.textbox,"after");this.own(on(this._phspan,"mousedown",function(evt){evt.preventDefault();}),on(this._phspan,"touchend, pointerup, MSPointerUp",lang.hitch(this,function(){this.focus();})));}this._phspan.innerHTML="";this._phspan.appendChild(this._phspan.ownerDocument.createTextNode(v));this._updatePlaceHolder();},_onInput:function(evt){this.inherited(arguments);this._updatePlaceHolder();},_updatePlaceHolder:function(){if(this._phspan){this._phspan.style.display=(this.placeHolder&&!this.textbox.value)?"":"none";}},_setValueAttr:function(_7a1,_7a2,_7a3){this.inherited(arguments);this._updatePlaceHolder();},getDisplayedValue:function(){_79a.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.","","2.0");return this.get("displayedValue");},setDisplayedValue:function(_7a4){_79a.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",_7a4);},_onBlur:function(e){if(this.disabled){return;}this.inherited(arguments);this._updatePlaceHolder();if(has("mozilla")){if(this.selectOnClick){this.textbox.selectionStart=this.textbox.selectionEnd=undefined;}}},_onFocus:function(by){if(this.disabled||this.readOnly){return;}this.inherited(arguments);this._updatePlaceHolder();}});if(has("ie")<9){_79f.prototype._isTextSelected=function(){var _7a5=this.ownerDocument.selection.createRange();var _7a6=_7a5.parentElement();return _7a6==this.textbox&&_7a5.text.length>0;};_79e._setSelectionRange=_79c._setSelectionRange=function(_7a7,_7a8,stop){if(_7a7.createTextRange){var r=_7a7.createTextRange();r.collapse(true);r.moveStart("character",-99999);r.moveStart("character",_7a8);r.moveEnd("character",stop-_7a8);r.select();}};}if(has("dojo-bidi")){_79f=_797("dijit.form.TextBox",_79f,{_setPlaceHolderAttr:function(v){this.inherited(arguments);this.applyTextDir(this._phspan);}});}return _79f;});},"dijit/form/_TextBoxMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/sniff","dojo/keys","dojo/_base/lang","dojo/on","../main"],function(_7a9,_7aa,dom,has,keys,lang,on,_7ab){var _7ac=_7aa("dijit.form._TextBoxMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{trim:false,uppercase:false,lowercase:false,propercase:false,maxLength:"",selectOnClick:false,placeHolder:"",_getValueAttr:function(){return this.parse(this.get("displayedValue"),this.constraints);},_setValueAttr:function(_7ad,_7ae,_7af){var _7b0;if(_7ad!==undefined){_7b0=this.filter(_7ad);if(typeof _7af!="string"){if(_7b0!==null&&((typeof _7b0!="number")||!isNaN(_7b0))){_7af=this.filter(this.format(_7b0,this.constraints));}else{_7af="";}if(this.compare(_7b0,this.filter(this.parse(_7af,this.constraints)))!=0){_7af=null;}}}if(_7af!=null&&((typeof _7af)!="number"||!isNaN(_7af))&&this.textbox.value!=_7af){this.textbox.value=_7af;this._set("displayedValue",this.get("displayedValue"));}this.inherited(arguments,[_7b0,_7ae]);},displayedValue:"",_getDisplayedValueAttr:function(){return this.filter(this.textbox.value);},_setDisplayedValueAttr:function(_7b1){if(_7b1==null){_7b1="";}else{if(typeof _7b1!="string"){_7b1=String(_7b1);}}this.textbox.value=_7b1;this._setValueAttr(this.get("value"),undefined);this._set("displayedValue",this.get("displayedValue"));},format:function(_7b2){return _7b2==null?"":(_7b2.toString?_7b2.toString():_7b2);},parse:function(_7b3){return _7b3;},_refreshState:function(){},onInput:function(){},_onInput:function(evt){this._lastInputEventValue=this.textbox.value;this._processInput(this._lastInputProducingEvent||evt);delete this._lastInputProducingEvent;if(this.intermediateChanges){this._handleOnChange(this.get("value"),false);}},_processInput:function(){this._refreshState();this._set("displayedValue",this.get("displayedValue"));},postCreate:function(){this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);function _7b4(e){var _7b5;if(e.type=="keydown"&&e.keyCode!=229){_7b5=e.keyCode;switch(_7b5){case keys.SHIFT:case keys.ALT:case keys.CTRL:case keys.META:case keys.CAPS_LOCK:case keys.NUM_LOCK:case keys.SCROLL_LOCK:return;}if(!e.ctrlKey&&!e.metaKey&&!e.altKey){switch(_7b5){case keys.NUMPAD_0:case keys.NUMPAD_1:case keys.NUMPAD_2:case keys.NUMPAD_3:case keys.NUMPAD_4:case keys.NUMPAD_5:case keys.NUMPAD_6:case keys.NUMPAD_7:case keys.NUMPAD_8:case keys.NUMPAD_9:case keys.NUMPAD_MULTIPLY:case keys.NUMPAD_PLUS:case keys.NUMPAD_ENTER:case keys.NUMPAD_MINUS:case keys.NUMPAD_PERIOD:case keys.NUMPAD_DIVIDE:return;}if((_7b5>=65&&_7b5<=90)||(_7b5>=48&&_7b5<=57)||_7b5==keys.SPACE){return;}var _7b6=false;for(var i in keys){if(keys[i]===e.keyCode){_7b6=true;break;}}if(!_7b6){return;}}}_7b5=e.charCode>=32?String.fromCharCode(e.charCode):e.charCode;if(!_7b5){_7b5=(e.keyCode>=65&&e.keyCode<=90)||(e.keyCode>=48&&e.keyCode<=57)||e.keyCode==keys.SPACE?String.fromCharCode(e.keyCode):e.keyCode;}if(!_7b5){_7b5=229;}if(e.type=="keypress"){if(typeof _7b5!="string"){return;}if((_7b5>="a"&&_7b5<="z")||(_7b5>="A"&&_7b5<="Z")||(_7b5>="0"&&_7b5<="9")||(_7b5===" ")){if(e.ctrlKey||e.metaKey||e.altKey){return;}}}var faux={faux:true},attr;for(attr in e){if(!/^(layer[XY]|returnValue|keyLocation)$/.test(attr)){var v=e[attr];if(typeof v!="function"&&typeof v!="undefined"){faux[attr]=v;}}}lang.mixin(faux,{charOrCode:_7b5,_wasConsumed:false,preventDefault:function(){faux._wasConsumed=true;e.preventDefault();},stopPropagation:function(){e.stopPropagation();}});this._lastInputProducingEvent=faux;if(this.onInput(faux)===false){faux.preventDefault();faux.stopPropagation();}if(faux._wasConsumed){return;}if(has("ie")<=9){switch(e.keyCode){case keys.TAB:case keys.ESCAPE:case keys.DOWN_ARROW:case keys.UP_ARROW:case keys.LEFT_ARROW:case keys.RIGHT_ARROW:break;default:if(e.keyCode==keys.ENTER&&this.textbox.tagName.toLowerCase()!="textarea"){break;}this.defer(function(){if(this.textbox.value!==this._lastInputEventValue){on.emit(this.textbox,"input",{bubbles:true});}});}}};this.own(on(this.textbox,"keydown, keypress, paste, cut, compositionend",lang.hitch(this,_7b4)),on(this.textbox,"input",lang.hitch(this,"_onInput")),on(this.domNode,"keypress",function(e){e.stopPropagation();}));},_blankValue:"",filter:function(val){if(val===null){return this._blankValue;}if(typeof val!="string"){return val;}if(this.trim){val=lang.trim(val);}if(this.uppercase){val=val.toUpperCase();}if(this.lowercase){val=val.toLowerCase();}if(this.propercase){val=val.replace(/[^\s]+/g,function(word){return word.substring(0,1).toUpperCase()+word.substring(1);});}return val;},_setBlurValue:function(){this._setValueAttr(this.get("value"),true);},_onBlur:function(e){if(this.disabled){return;}this._setBlurValue();this.inherited(arguments);},_isTextSelected:function(){return this.textbox.selectionStart!=this.textbox.selectionEnd;},_onFocus:function(by){if(this.disabled||this.readOnly){return;}if(this.selectOnClick&&by=="mouse"){this._selectOnClickHandle=on.once(this.domNode,"mouseup, touchend",lang.hitch(this,function(evt){if(!this._isTextSelected()){_7ac.selectInputText(this.textbox);}}));this.own(this._selectOnClickHandle);this.defer(function(){if(this._selectOnClickHandle){this._selectOnClickHandle.remove();this._selectOnClickHandle=null;}},500);}this.inherited(arguments);this._refreshState();},reset:function(){this.textbox.value="";this.inherited(arguments);}});if(has("dojo-bidi")){_7ac=_7aa("dijit.form._TextBoxMixin",_7ac,{_setValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.focusNode);},_setDisplayedValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.focusNode);},_onInput:function(){this.applyTextDir(this.focusNode);this.inherited(arguments);}});}_7ac._setSelectionRange=_7ab._setSelectionRange=function(_7b7,_7b8,stop){if(_7b7.setSelectionRange){_7b7.setSelectionRange(_7b8,stop);}};_7ac.selectInputText=_7ab.selectInputText=function(_7b9,_7ba,stop){_7b9=dom.byId(_7b9);if(isNaN(_7ba)){_7ba=0;}if(isNaN(stop)){stop=_7b9.value?_7b9.value.length:0;}try{_7b9.focus();_7ac._setSelectionRange(_7b9,_7ba,stop);}catch(e){}};return _7ac;});},"dijit/Tooltip":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/fx","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang","dojo/mouse","dojo/on","dojo/sniff","./_base/manager","./place","./_Widget","./_TemplatedMixin","./BackgroundIframe","dojo/text!./templates/Tooltip.html","./main"],function(_7bb,_7bc,fx,dom,_7bd,_7be,_7bf,lang,_7c0,on,has,_7c1,_7c2,_7c3,_7c4,_7c5,_7c6,_7c7){var _7c8=_7bc("dijit._MasterTooltip",[_7c3,_7c4],{duration:_7c1.defaultDuration,templateString:_7c6,postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);this.bgIframe=new _7c5(this.domNode);this.fadeIn=fx.fadeIn({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,"_onShow")});this.fadeOut=fx.fadeOut({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,"_onHide")});},show:function(_7c9,_7ca,_7cb,rtl,_7cc,_7cd,_7ce){if(this.aroundNode&&this.aroundNode===_7ca&&this.containerNode.innerHTML==_7c9){return;}if(this.fadeOut.status()=="playing"){this._onDeck=arguments;return;}this.containerNode.innerHTML=_7c9;if(_7cc){this.set("textDir",_7cc);}this.containerNode.align=rtl?"right":"left";var pos=_7c2.around(this.domNode,_7ca,_7cb&&_7cb.length?_7cb:_7cf.defaultPosition,!rtl,lang.hitch(this,"orient"));var _7d0=pos.aroundNodePos;if(pos.corner.charAt(0)=="M"&&pos.aroundCorner.charAt(0)=="M"){this.connectorNode.style.top=_7d0.y+((_7d0.h-this.connectorNode.offsetHeight)>>1)-pos.y+"px";this.connectorNode.style.left="";}else{if(pos.corner.charAt(1)=="M"&&pos.aroundCorner.charAt(1)=="M"){this.connectorNode.style.left=_7d0.x+((_7d0.w-this.connectorNode.offsetWidth)>>1)-pos.x+"px";}else{this.connectorNode.style.left="";this.connectorNode.style.top="";}}_7bf.set(this.domNode,"opacity",0);this.fadeIn.play();this.isShowingNow=true;this.aroundNode=_7ca;this.onMouseEnter=_7cd||noop;this.onMouseLeave=_7ce||noop;},orient:function(node,_7d1,_7d2,_7d3,_7d4){this.connectorNode.style.top="";var _7d5=_7d3.h,_7d6=_7d3.w;node.className="dijitTooltip "+{"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[_7d1+"-"+_7d2];this.domNode.style.width="auto";var size=_7be.position(this.domNode);if(has("ie")||has("trident")){size.w+=2;}var _7d7=Math.min((Math.max(_7d6,1)),size.w);_7be.setMarginBox(this.domNode,{w:_7d7});if(_7d2.charAt(0)=="B"&&_7d1.charAt(0)=="B"){var bb=_7be.position(node);var _7d8=this.connectorNode.offsetHeight;if(bb.h>_7d5){var _7d9=_7d5-((_7d4.h+_7d8)>>1);this.connectorNode.style.top=_7d9+"px";this.connectorNode.style.bottom="";}else{this.connectorNode.style.bottom=Math.min(Math.max(_7d4.h/2-_7d8/2,0),bb.h-_7d8)+"px";this.connectorNode.style.top="";}}else{this.connectorNode.style.top="";this.connectorNode.style.bottom="";}return Math.max(0,size.w-_7d6);},_onShow:function(){if(has("ie")){this.domNode.style.filter="";}},hide:function(_7da){if(this._onDeck&&this._onDeck[1]==_7da){this._onDeck=null;}else{if(this.aroundNode===_7da){this.fadeIn.stop();this.isShowingNow=false;this.aroundNode=null;this.fadeOut.play();}else{}}this.onMouseEnter=this.onMouseLeave=noop;},_onHide:function(){this.domNode.style.cssText="";this.containerNode.innerHTML="";if(this._onDeck){this.show.apply(this,this._onDeck);this._onDeck=null;}}});if(has("dojo-bidi")){_7c8.extend({_setAutoTextDir:function(node){this.applyTextDir(node);_7bb.forEach(node.children,function(_7db){this._setAutoTextDir(_7db);},this);},_setTextDirAttr:function(_7dc){this._set("textDir",_7dc);if(_7dc=="auto"){this._setAutoTextDir(this.containerNode);}else{this.containerNode.dir=this.textDir;}}});}_7c7.showTooltip=function(_7dd,_7de,_7df,rtl,_7e0,_7e1,_7e2){if(_7df){_7df=_7bb.map(_7df,function(val){return {after:"after-centered",before:"before-centered"}[val]||val;});}if(!_7cf._masterTT){_7c7._masterTT=_7cf._masterTT=new _7c8();}return _7cf._masterTT.show(_7dd,_7de,_7df,rtl,_7e0,_7e1,_7e2);};_7c7.hideTooltip=function(_7e3){return _7cf._masterTT&&_7cf._masterTT.hide(_7e3);};var _7e4="DORMANT",_7e5="SHOW TIMER",_7e6="SHOWING",_7e7="HIDE TIMER";function noop(){};var _7cf=_7bc("dijit.Tooltip",_7c3,{label:"",showDelay:400,hideDelay:400,connectId:[],position:[],selector:"",_setConnectIdAttr:function(_7e8){_7bb.forEach(this._connections||[],function(_7e9){_7bb.forEach(_7e9,function(_7ea){_7ea.remove();});},this);this._connectIds=_7bb.filter(lang.isArrayLike(_7e8)?_7e8:(_7e8?[_7e8]:[]),function(id){return dom.byId(id,this.ownerDocument);},this);this._connections=_7bb.map(this._connectIds,function(id){var node=dom.byId(id,this.ownerDocument),_7eb=this.selector,_7ec=_7eb?function(_7ed){return on.selector(_7eb,_7ed);}:function(_7ee){return _7ee;},self=this;return [on(node,_7ec(_7c0.enter),function(){self._onHover(this);}),on(node,_7ec("focusin"),function(){self._onHover(this);}),on(node,_7ec(_7c0.leave),lang.hitch(self,"_onUnHover")),on(node,_7ec("focusout"),lang.hitch(self,"set","state",_7e4))];},this);this._set("connectId",_7e8);},addTarget:function(node){var id=node.id||node;if(_7bb.indexOf(this._connectIds,id)==-1){this.set("connectId",this._connectIds.concat(id));}},removeTarget:function(node){var id=node.id||node,idx=_7bb.indexOf(this._connectIds,id);if(idx>=0){this._connectIds.splice(idx,1);this.set("connectId",this._connectIds);}},buildRendering:function(){this.inherited(arguments);_7bd.add(this.domNode,"dijitTooltipData");},startup:function(){this.inherited(arguments);var ids=this.connectId;_7bb.forEach(lang.isArrayLike(ids)?ids:[ids],this.addTarget,this);},getContent:function(node){return this.label||this.domNode.innerHTML;},state:_7e4,_setStateAttr:function(val){if(this.state==val||(val==_7e5&&this.state==_7e6)||(val==_7e7&&this.state==_7e4)){return;}if(this._hideTimer){this._hideTimer.remove();delete this._hideTimer;}if(this._showTimer){this._showTimer.remove();delete this._showTimer;}switch(val){case _7e4:if(this._connectNode){_7cf.hide(this._connectNode);delete this._connectNode;this.onHide();}break;case _7e5:if(this.state!=_7e6){this._showTimer=this.defer(function(){this.set("state",_7e6);},this.showDelay);}break;case _7e6:var _7ef=this.getContent(this._connectNode);if(!_7ef){this.set("state",_7e4);return;}_7cf.show(_7ef,this._connectNode,this.position,!this.isLeftToRight(),this.textDir,lang.hitch(this,"set","state",_7e6),lang.hitch(this,"set","state",_7e7));this.onShow(this._connectNode,this.position);break;case _7e7:this._hideTimer=this.defer(function(){this.set("state",_7e4);},this.hideDelay);break;}this._set("state",val);},_onHover:function(_7f0){if(this._connectNode&&_7f0!=this._connectNode){this.set("state",_7e4);}this._connectNode=_7f0;this.set("state",_7e5);},_onUnHover:function(_7f1){this.set("state",_7e7);},open:function(_7f2){this.set("state",_7e4);this._connectNode=_7f2;this.set("state",_7e6);},close:function(){this.set("state",_7e4);},onShow:function(){},onHide:function(){},destroy:function(){this.set("state",_7e4);_7bb.forEach(this._connections||[],function(_7f3){_7bb.forEach(_7f3,function(_7f4){_7f4.remove();});},this);this.inherited(arguments);}});_7cf._MasterTooltip=_7c8;_7cf.show=_7c7.showTooltip;_7cf.hide=_7c7.hideTooltip;_7cf.defaultPosition=["after-centered","before-centered"];return _7cf;});},"dijit/form/ComboBoxMixin":function(){define(["dojo/_base/declare","dojo/Deferred","dojo/_base/kernel","dojo/_base/lang","dojo/store/util/QueryResults","./_AutoCompleterMixin","./_ComboBoxMenu","../_HasDropDown","dojo/text!./templates/DropDownBox.html"],function(_7f5,_7f6,_7f7,lang,_7f8,_7f9,_7fa,_7fb,_7fc){return _7f5("dijit.form.ComboBoxMixin",[_7fb,_7f9],{dropDownClass:_7fa,hasDownArrow:true,templateString:_7fc,baseClass:"dijitTextBox dijitComboBox",cssStateNodes:{"_buttonNode":"dijitDownArrowButton"},_setHasDownArrowAttr:function(val){this._set("hasDownArrow",val);this._buttonNode.style.display=val?"":"none";},_showResultList:function(){this.displayMessage("");this.inherited(arguments);},_setStoreAttr:function(_7fd){if(!_7fd.get){lang.mixin(_7fd,{_oldAPI:true,get:function(id){var _7fe=new _7f6();this.fetchItemByIdentity({identity:id,onItem:function(_7ff){_7fe.resolve(_7ff);},onError:function(_800){_7fe.reject(_800);}});return _7fe.promise;},query:function(_801,_802){var _803=new _7f6(function(){_804.abort&&_804.abort();});_803.total=new _7f6();var _804=this.fetch(lang.mixin({query:_801,onBegin:function(_805){_803.total.resolve(_805);},onComplete:function(_806){_803.resolve(_806);},onError:function(_807){_803.reject(_807);}},_802));return _7f8(_803);}});}this._set("store",_7fd);},postMixInProperties:function(){var _808=this.params.store||this.store;if(_808){this._setStoreAttr(_808);}this.inherited(arguments);if(!this.params.store&&this.store&&!this.store._oldAPI){var _809=this.declaredClass;lang.mixin(this.store,{getValue:function(item,attr){_7f7.deprecated(_809+".store.getValue(item, attr) is deprecated for builtin store. Use item.attr directly","","2.0");return item[attr];},getLabel:function(item){_7f7.deprecated(_809+".store.getLabel(item) is deprecated for builtin store. Use item.label directly","","2.0");return item.name;},fetch:function(args){_7f7.deprecated(_809+".store.fetch() is deprecated for builtin store.","Use store.query()","2.0");var shim=["dojo/data/ObjectStore"];require(shim,lang.hitch(this,function(_80a){new _80a({objectStore:this}).fetch(args);}));}});}},buildRendering:function(){this.inherited(arguments);this.focusNode.setAttribute("aria-autocomplete",this.autoComplete?"both":"list");}});});},"dojo/store/util/QueryResults":function(){define(["../../_base/array","../../_base/lang","../../when"],function(_80b,lang,when){var _80c=function(_80d){if(!_80d){return _80d;}var _80e=!!_80d.then;if(_80e){_80d=lang.delegate(_80d);}function _80f(_810){_80d[_810]=function(){var args=arguments;var _811=when(_80d,function(_812){Array.prototype.unshift.call(args,_812);return _80c(_80b[_810].apply(_80b,args));});if(_810!=="forEach"||_80e){return _811;}};};_80f("forEach");_80f("filter");_80f("map");if(_80d.total==null){_80d.total=when(_80d,function(_813){return _813.length;});}return _80d;};lang.setObject("dojo.store.util.QueryResults",_80c);return _80c;});},"dijit/form/_AutoCompleterMixin":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/query","dojo/regexp","dojo/sniff","./DataList","./_TextBoxMixin","./_SearchMixin"],function(_814,_815,_816,keys,lang,_817,_818,has,_819,_81a,_81b){var _81c=_815("dijit.form._AutoCompleterMixin",_81b,{item:null,autoComplete:true,highlightMatch:"first",labelAttr:"",labelType:"text",maxHeight:-1,_stopClickEvents:false,_getCaretPos:function(_81d){var pos=0;if(typeof (_81d.selectionStart)=="number"){pos=_81d.selectionStart;}else{if(has("ie")){var tr=_81d.ownerDocument.selection.createRange().duplicate();var ntr=_81d.createTextRange();tr.move("character",0);ntr.move("character",0);try{ntr.setEndPoint("EndToEnd",tr);pos=String(ntr.text).replace(/\r/g,"").length;}catch(e){}}}return pos;},_setCaretPos:function(_81e,_81f){_81f=parseInt(_81f);_81a.selectInputText(_81e,_81f,_81f);},_setDisabledAttr:function(_820){this.inherited(arguments);this.domNode.setAttribute("aria-disabled",_820?"true":"false");},_onKey:function(evt){if(evt.charCode>=32){return;}var key=evt.charCode||evt.keyCode;if(key==keys.ALT||key==keys.CTRL||key==keys.META||key==keys.SHIFT){return;}var pw=this.dropDown;var _821=null;this._abortQuery();this.inherited(arguments);if(evt.altKey||evt.ctrlKey||evt.metaKey){return;}if(this._opened){_821=pw.getHighlightedOption();}switch(key){case keys.PAGE_DOWN:case keys.DOWN_ARROW:case keys.PAGE_UP:case keys.UP_ARROW:if(this._opened){this._announceOption(_821);}evt.stopPropagation();evt.preventDefault();break;case keys.ENTER:if(_821){if(_821==pw.nextButton){this._nextSearch(1);evt.stopPropagation();evt.preventDefault();break;}else{if(_821==pw.previousButton){this._nextSearch(-1);evt.stopPropagation();evt.preventDefault();break;}}evt.stopPropagation();evt.preventDefault();}else{this._setBlurValue();this._setCaretPos(this.focusNode,this.focusNode.value.length);}case keys.TAB:var _822=this.get("displayedValue");if(pw&&(_822==pw._messages["previousMessage"]||_822==pw._messages["nextMessage"])){break;}if(_821){this._selectOption(_821);}case keys.ESCAPE:if(this._opened){this._lastQuery=null;this.closeDropDown();}break;}},_autoCompleteText:function(text){var fn=this.focusNode;_81a.selectInputText(fn,fn.value.length);var _823=this.ignoreCase?"toLowerCase":"substr";if(text[_823](0).indexOf(this.focusNode.value[_823](0))==0){var cpos=this.autoComplete?this._getCaretPos(fn):fn.value.length;if((cpos+1)>fn.value.length){fn.value=text;_81a.selectInputText(fn,cpos);}}else{fn.value=text;_81a.selectInputText(fn);}},_openResultList:function(_824,_825,_826){var _827=this.dropDown.getHighlightedOption();this.dropDown.clearResultList();if(!_824.length&&_826.start==0){this.closeDropDown();return;}this._nextSearch=this.dropDown.onPage=lang.hitch(this,function(_828){_824.nextPage(_828!==-1);this.focus();});this.dropDown.createOptions(_824,_826,lang.hitch(this,"_getMenuLabelFromItem"));this._showResultList();if("direction" in _826){if(_826.direction){this.dropDown.highlightFirstOption();}else{if(!_826.direction){this.dropDown.highlightLastOption();}}if(_827){this._announceOption(this.dropDown.getHighlightedOption());}}else{if(this.autoComplete&&!this._prev_key_backspace&&!/^[*]+$/.test(_825[this.searchAttr].toString())){this._announceOption(this.dropDown.containerNode.firstChild.nextSibling);}}},_showResultList:function(){this.closeDropDown(true);this.openDropDown();this.domNode.setAttribute("aria-expanded","true");},loadDropDown:function(){this._startSearchAll();},isLoaded:function(){return false;},closeDropDown:function(){this._abortQuery();if(this._opened){this.inherited(arguments);this.domNode.setAttribute("aria-expanded","false");}},_setBlurValue:function(){var _829=this.get("displayedValue");var pw=this.dropDown;if(pw&&(_829==pw._messages["previousMessage"]||_829==pw._messages["nextMessage"])){this._setValueAttr(this._lastValueReported,true);}else{if(typeof this.item=="undefined"){this.item=null;this.set("displayedValue",_829);}else{if(this.value!=this._lastValueReported){this._handleOnChange(this.value,true);}this._refreshState();}}this.focusNode.removeAttribute("aria-activedescendant");},_setItemAttr:function(item,_82a,_82b){var _82c="";if(item){if(!_82b){_82b=this.store._oldAPI?this.store.getValue(item,this.searchAttr):item[this.searchAttr];}_82c=this._getValueField()!=this.searchAttr?this.store.getIdentity(item):_82b;}this.set("value",_82c,_82a,_82b,item);},_announceOption:function(node){if(!node){return;}var _82d;if(node==this.dropDown.nextButton||node==this.dropDown.previousButton){_82d=node.innerHTML;this.item=undefined;this.value="";}else{var item=this.dropDown.items[node.getAttribute("item")];_82d=(this.store._oldAPI?this.store.getValue(item,this.searchAttr):item[this.searchAttr]).toString();this.set("item",item,false,_82d);}this.focusNode.value=this.focusNode.value.substring(0,this._lastInput.length);this.focusNode.setAttribute("aria-activedescendant",_816.get(node,"id"));this._autoCompleteText(_82d);},_selectOption:function(_82e){this.closeDropDown();if(_82e){this._announceOption(_82e);}this._setCaretPos(this.focusNode,this.focusNode.value.length);this._handleOnChange(this.value,true);this.focusNode.removeAttribute("aria-activedescendant");},_startSearchAll:function(){this._startSearch("");},_startSearchFromInput:function(){this.item=undefined;this.inherited(arguments);},_startSearch:function(key){if(!this.dropDown){var _82f=this.id+"_popup",_830=lang.isString(this.dropDownClass)?lang.getObject(this.dropDownClass,false):this.dropDownClass;this.dropDown=new _830({onChange:lang.hitch(this,this._selectOption),id:_82f,dir:this.dir,textDir:this.textDir});}this._lastInput=key;this.inherited(arguments);},_getValueField:function(){return this.searchAttr;},postMixInProperties:function(){this.inherited(arguments);if(!this.store&&this.srcNodeRef){var _831=this.srcNodeRef;this.store=new _819({},_831);if(!("value" in this.params)){var item=(this.item=this.store.fetchSelectedItem());if(item){var _832=this._getValueField();this.value=this.store._oldAPI?this.store.getValue(item,_832):item[_832];}}}},postCreate:function(){var _833=_817("label[for=\""+this.id+"\"]");if(_833.length){if(!_833[0].id){_833[0].id=this.id+"_label";}this.domNode.setAttribute("aria-labelledby",_833[0].id);}this.inherited(arguments);_814.after(this,"onSearch",lang.hitch(this,"_openResultList"),true);},_getMenuLabelFromItem:function(item){var _834=this.labelFunc(item,this.store),_835=this.labelType;if(this.highlightMatch!="none"&&this.labelType=="text"&&this._lastInput){_834=this.doHighlight(_834,this._lastInput);_835="html";}return {html:_835=="html",label:_834};},doHighlight:function(_836,find){var _837=(this.ignoreCase?"i":"")+(this.highlightMatch=="all"?"g":""),i=this.queryExpr.indexOf("${0}");find=_818.escapeString(find);return this._escapeHtml(_836.replace(new RegExp((i==0?"^":"")+"("+find+")"+(i==(this.queryExpr.length-4)?"$":""),_837),"\uffff$1\uffff")).replace(/\uFFFF([^\uFFFF]+)\uFFFF/g,"<span class=\"dijitComboBoxHighlightMatch\">$1</span>");},_escapeHtml:function(str){str=String(str).replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");return str;},reset:function(){this.item=null;this.inherited(arguments);},labelFunc:function(item,_838){return (_838._oldAPI?_838.getValue(item,this.labelAttr||this.searchAttr):item[this.labelAttr||this.searchAttr]).toString();},_setValueAttr:function(_839,_83a,_83b,item){this._set("item",item||null);if(_839==null){_839="";}this.inherited(arguments);}});if(has("dojo-bidi")){_81c.extend({_setTextDirAttr:function(_83c){this.inherited(arguments);if(this.dropDown){this.dropDown._set("textDir",_83c);}}});}return _81c;});},"dojo/regexp":function(){define(["./_base/kernel","./_base/lang"],function(dojo,lang){var _83d={};lang.setObject("dojo.regexp",_83d);_83d.escapeString=function(str,_83e){return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+\-^])/g,function(ch){if(_83e&&_83e.indexOf(ch)!=-1){return ch;}return "\\"+ch;});};_83d.buildGroupRE=function(arr,re,_83f){if(!(arr instanceof Array)){return re(arr);}var b=[];for(var i=0;i<arr.length;i++){b.push(re(arr[i]));}return _83d.group(b.join("|"),_83f);};_83d.group=function(_840,_841){return "("+(_841?"?:":"")+_840+")";};return _83d;});},"dijit/form/DataList":function(){define(["dojo/_base/declare","dojo/dom","dojo/_base/lang","dojo/query","dojo/store/Memory","../registry"],function(_842,dom,lang,_843,_844,_845){function _846(_847){return {id:_847.value,value:_847.value,name:lang.trim(_847.innerText||_847.textContent||"")};};return _842("dijit.form.DataList",_844,{constructor:function(_848,_849){this.domNode=dom.byId(_849);lang.mixin(this,_848);if(this.id){_845.add(this);}this.domNode.style.display="none";this.inherited(arguments,[{data:_843("option",this.domNode).map(_846)}]);},destroy:function(){_845.remove(this.id);},fetchSelectedItem:function(){var _84a=_843("> option[selected]",this.domNode)[0]||_843("> option",this.domNode)[0];return _84a&&_846(_84a);}});});},"dojo/store/Memory":function(){define(["../_base/declare","./util/QueryResults","./util/SimpleQueryEngine"],function(_84b,_84c,_84d){var base=null;return _84b("dojo.store.Memory",base,{constructor:function(_84e){for(var i in _84e){this[i]=_84e[i];}this.setData(this.data||[]);},data:null,idProperty:"id",index:null,queryEngine:_84d,get:function(id){return this.data[this.index[id]];},getIdentity:function(_84f){return _84f[this.idProperty];},put:function(_850,_851){var data=this.data,_852=this.index,_853=this.idProperty;var id=_850[_853]=(_851&&"id" in _851)?_851.id:_853 in _850?_850[_853]:Math.random();if(id in _852){if(_851&&_851.overwrite===false){throw new Error("Object already exists");}data[_852[id]]=_850;}else{_852[id]=data.push(_850)-1;}return id;},add:function(_854,_855){(_855=_855||{}).overwrite=false;return this.put(_854,_855);},remove:function(id){var _856=this.index;var data=this.data;if(id in _856){data.splice(_856[id],1);this.setData(data);return true;}},query:function(_857,_858){return _84c(this.queryEngine(_857,_858)(this.data));},setData:function(data){if(data.items){this.idProperty=data.identifier||this.idProperty;data=this.data=data.items;}else{this.data=data;}this.index={};for(var i=0,l=data.length;i<l;i++){this.index[data[i][this.idProperty]]=i;}}});});},"dojo/store/util/SimpleQueryEngine":function(){define(["../../_base/array"],function(_859){return function(_85a,_85b){switch(typeof _85a){default:throw new Error("Can not query with a "+typeof _85a);case "object":case "undefined":var _85c=_85a;_85a=function(_85d){for(var key in _85c){var _85e=_85c[key];if(_85e&&_85e.test){if(!_85e.test(_85d[key],_85d)){return false;}}else{if(_85e!=_85d[key]){return false;}}}return true;};break;case "string":if(!this[_85a]){throw new Error("No filter function "+_85a+" was found in store");}_85a=this[_85a];case "function":}function _85f(_860){var _861=_859.filter(_860,_85a);var _862=_85b&&_85b.sort;if(_862){_861.sort(typeof _862=="function"?_862:function(a,b){for(var sort,i=0;sort=_862[i];i++){var _863=a[sort.attribute];var _864=b[sort.attribute];_863=_863!=null?_863.valueOf():_863;_864=_864!=null?_864.valueOf():_864;if(_863!=_864){return !!sort.descending==(_863==null||_863>_864)?-1:1;}}return 0;});}if(_85b&&(_85b.start||_85b.count)){var _865=_861.length;_861=_861.slice(_85b.start||0,(_85b.start||0)+(_85b.count||Infinity));_861.total=_865;}return _861;};_85f.matches=_85a;return _85f;};});},"dijit/form/_SearchMixin":function(){define(["dojo/_base/declare","dojo/keys","dojo/_base/lang","dojo/query","dojo/string","dojo/when","../registry"],function(_866,keys,lang,_867,_868,when,_869){return _866("dijit.form._SearchMixin",null,{pageSize:Infinity,store:null,fetchProperties:{},query:{},list:"",_setListAttr:function(list){this._set("list",list);},searchDelay:200,searchAttr:"name",queryExpr:"${0}*",ignoreCase:true,_patternToRegExp:function(_86a){return new RegExp("^"+_86a.replace(/(\\.)|(\*)|(\?)|\W/g,function(str,_86b,star,_86c){return star?".*":_86c?".":_86b?_86b:"\\"+str;})+"$",this.ignoreCase?"mi":"m");},_abortQuery:function(){if(this.searchTimer){this.searchTimer=this.searchTimer.remove();}if(this._queryDeferHandle){this._queryDeferHandle=this._queryDeferHandle.remove();}if(this._fetchHandle){if(this._fetchHandle.abort){this._cancelingQuery=true;this._fetchHandle.abort();this._cancelingQuery=false;}if(this._fetchHandle.cancel){this._cancelingQuery=true;this._fetchHandle.cancel();this._cancelingQuery=false;}this._fetchHandle=null;}},_processInput:function(evt){if(this.disabled||this.readOnly){return;}var key=evt.charOrCode;this._prev_key_backspace=false;if(key===keys.DELETE||key===keys.BACKSPACE){this._prev_key_backspace=true;this._maskValidSubsetError=true;}if(!this.store){this.onSearch();}else{this.searchTimer=this.defer("_startSearchFromInput",1);}},onSearch:function(){},_startSearchFromInput:function(){this._startSearch(this.focusNode.value);},_startSearch:function(text){this._abortQuery();var _86d=this,_867=lang.clone(this.query),_86e={start:0,count:this.pageSize,queryOptions:{ignoreCase:this.ignoreCase,deep:true}},qs=_868.substitute(this.queryExpr,[text.replace(/([\\\*\?])/g,"\\$1")]),q,_86f=function(){var _870=_86d._fetchHandle=_86d.store.query(_867,_86e);if(_86d.disabled||_86d.readOnly||(q!==_86d._lastQuery)){return;}when(_870,function(res){_86d._fetchHandle=null;if(!_86d.disabled&&!_86d.readOnly&&(q===_86d._lastQuery)){when(_870.total,function(_871){res.total=_871;var _872=_86d.pageSize;if(isNaN(_872)||_872>res.total){_872=res.total;}res.nextPage=function(_873){_86e.direction=_873=_873!==false;_86e.count=_872;if(_873){_86e.start+=res.length;if(_86e.start>=res.total){_86e.count=0;}}else{_86e.start-=_872;if(_86e.start<0){_86e.count=Math.max(_872+_86e.start,0);_86e.start=0;}}if(_86e.count<=0){res.length=0;_86d.onSearch(res,_867,_86e);}else{_86f();}};_86d.onSearch(res,_867,_86e);});}},function(err){_86d._fetchHandle=null;if(!_86d._cancelingQuery){console.error(_86d.declaredClass+" "+err.toString());}});};lang.mixin(_86e,this.fetchProperties);if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_867[this.searchAttr]=q;this._queryDeferHandle=this.defer(_86f,this.searchDelay);},constructor:function(){this.query={};this.fetchProperties={};},postMixInProperties:function(){if(!this.store){var list=this.list;if(list){this.store=_869.byId(list);}}this.inherited(arguments);}});});},"dijit/form/_ComboBoxMenu":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/dom-style","dojo/keys","../_WidgetBase","../_TemplatedMixin","./_ComboBoxMenuMixin","./_ListMouseMixin"],function(_874,_875,_876,keys,_877,_878,_879,_87a){return _874("dijit.form._ComboBoxMenu",[_877,_878,_87a,_879],{templateString:"<div class='dijitReset dijitMenu' data-dojo-attach-point='containerNode' style='overflow: auto; overflow-x: hidden;' role='listbox'>"+"<div class='dijitMenuItem dijitMenuPreviousButton' data-dojo-attach-point='previousButton' role='option'></div>"+"<div class='dijitMenuItem dijitMenuNextButton' data-dojo-attach-point='nextButton' role='option'></div>"+"</div>",baseClass:"dijitComboBoxMenu",postCreate:function(){this.inherited(arguments);if(!this.isLeftToRight()){_875.add(this.previousButton,"dijitMenuItemRtl");_875.add(this.nextButton,"dijitMenuItemRtl");}this.containerNode.setAttribute("role","listbox");},_createMenuItem:function(){var item=this.ownerDocument.createElement("div");item.className="dijitReset dijitMenuItem"+(this.isLeftToRight()?"":" dijitMenuItemRtl");item.setAttribute("role","option");return item;},onHover:function(node){_875.add(node,"dijitMenuItemHover");},onUnhover:function(node){_875.remove(node,"dijitMenuItemHover");},onSelect:function(node){_875.add(node,"dijitMenuItemSelected");},onDeselect:function(node){_875.remove(node,"dijitMenuItemSelected");},_page:function(up){var _87b=0;var _87c=this.domNode.scrollTop;var _87d=_876.get(this.domNode,"height");if(!this.getHighlightedOption()){this.selectNextNode();}while(_87b<_87d){var _87e=this.getHighlightedOption();if(up){if(!_87e.previousSibling||_87e.previousSibling.style.display=="none"){break;}this.selectPreviousNode();}else{if(!_87e.nextSibling||_87e.nextSibling.style.display=="none"){break;}this.selectNextNode();}var _87f=this.domNode.scrollTop;_87b+=(_87f-_87c)*(up?-1:1);_87c=_87f;}},handleKey:function(evt){switch(evt.keyCode){case keys.DOWN_ARROW:this.selectNextNode();return false;case keys.PAGE_DOWN:this._page(false);return false;case keys.UP_ARROW:this.selectPreviousNode();return false;case keys.PAGE_UP:this._page(true);return false;default:return true;}}});});},"dijit/form/_ComboBoxMenuMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/has","dojo/i18n","dojo/i18n!./nls/ComboBox"],function(_880,_881,_882,has,i18n){var _883=_881("dijit.form._ComboBoxMenuMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{_messages:null,postMixInProperties:function(){this.inherited(arguments);this._messages=i18n.getLocalization("dijit.form","ComboBox",this.lang);},buildRendering:function(){this.inherited(arguments);this.previousButton.innerHTML=this._messages["previousMessage"];this.nextButton.innerHTML=this._messages["nextMessage"];},_setValueAttr:function(_884){this._set("value",_884);this.onChange(_884);},onClick:function(node){if(node==this.previousButton){this._setSelectedAttr(null);this.onPage(-1);}else{if(node==this.nextButton){this._setSelectedAttr(null);this.onPage(1);}else{this.onChange(node);}}},onChange:function(){},onPage:function(){},onClose:function(){this._setSelectedAttr(null);},_createOption:function(item,_885){var _886=this._createMenuItem();var _887=_885(item);if(_887.html){_886.innerHTML=_887.label;}else{_886.appendChild(_886.ownerDocument.createTextNode(_887.label));}if(_886.innerHTML==""){_886.innerHTML="&#160;";}return _886;},createOptions:function(_888,_889,_88a){this.items=_888;this.previousButton.style.display=(_889.start==0)?"none":"";_882.set(this.previousButton,"id",this.id+"_prev");_880.forEach(_888,function(item,i){var _88b=this._createOption(item,_88a);_88b.setAttribute("item",i);_882.set(_88b,"id",this.id+i);this.nextButton.parentNode.insertBefore(_88b,this.nextButton);},this);var _88c=false;if(_888.total&&!_888.total.then&&_888.total!=-1){if((_889.start+_889.count)<_888.total){_88c=true;}else{if((_889.start+_889.count)>_888.total&&_889.count==_888.length){_88c=true;}}}else{if(_889.count==_888.length){_88c=true;}}this.nextButton.style.display=_88c?"":"none";_882.set(this.nextButton,"id",this.id+"_next");},clearResultList:function(){var _88d=this.containerNode;while(_88d.childNodes.length>2){_88d.removeChild(_88d.childNodes[_88d.childNodes.length-2]);}this._setSelectedAttr(null);},highlightFirstOption:function(){this.selectFirstNode();},highlightLastOption:function(){this.selectLastNode();},selectFirstNode:function(){this.inherited(arguments);if(this.getHighlightedOption()==this.previousButton){this.selectNextNode();}},selectLastNode:function(){this.inherited(arguments);if(this.getHighlightedOption()==this.nextButton){this.selectPreviousNode();}},getHighlightedOption:function(){return this.selected;}});if(has("dojo-bidi")){_883=_881("dijit.form._ComboBoxMenuMixin",_883,{_createOption:function(){var _88e=this.inherited(arguments);this.applyTextDir(_88e);return _88e;}});}return _883;});},"dijit/form/_ListMouseMixin":function(){define(["dojo/_base/declare","dojo/on","dojo/touch","./_ListBase"],function(_88f,on,_890,_891){return _88f("dijit.form._ListMouseMixin",_891,{postCreate:function(){this.inherited(arguments);this.domNode.dojoClick=true;this._listConnect("click","_onClick");this._listConnect("mousedown","_onMouseDown");this._listConnect("mouseup","_onMouseUp");this._listConnect("mouseover","_onMouseOver");this._listConnect("mouseout","_onMouseOut");},_onClick:function(evt,_892){this._setSelectedAttr(_892,false);if(this._deferredClick){this._deferredClick.remove();}this._deferredClick=this.defer(function(){this._deferredClick=null;this.onClick(_892);});},_onMouseDown:function(evt,_893){if(this._hoveredNode){this.onUnhover(this._hoveredNode);this._hoveredNode=null;}this._isDragging=true;this._setSelectedAttr(_893,false);},_onMouseUp:function(evt,_894){this._isDragging=false;var _895=this.selected;var _896=this._hoveredNode;if(_895&&_894==_895){this.defer(function(){this._onClick(evt,_895);});}else{if(_896){this.defer(function(){this._onClick(evt,_896);});}}},_onMouseOut:function(evt,_897){if(this._hoveredNode){this.onUnhover(this._hoveredNode);this._hoveredNode=null;}if(this._isDragging){this._cancelDrag=(new Date()).getTime()+1000;}},_onMouseOver:function(evt,_898){if(this._cancelDrag){var time=(new Date()).getTime();if(time>this._cancelDrag){this._isDragging=false;}this._cancelDrag=null;}this._hoveredNode=_898;this.onHover(_898);if(this._isDragging){this._setSelectedAttr(_898,false);}}});});},"dijit/form/_ListBase":function(){define(["dojo/_base/declare","dojo/on","dojo/window"],function(_899,on,_89a){return _899("dijit.form._ListBase",null,{selected:null,_listConnect:function(_89b,_89c){var self=this;return self.own(on(self.containerNode,on.selector(function(_89d,_89e,_89f){return _89d.parentNode==_89f;},_89b),function(evt){self[_89c](evt,this);}));},selectFirstNode:function(){var _8a0=this.containerNode.firstChild;while(_8a0&&_8a0.style.display=="none"){_8a0=_8a0.nextSibling;}this._setSelectedAttr(_8a0,true);},selectLastNode:function(){var last=this.containerNode.lastChild;while(last&&last.style.display=="none"){last=last.previousSibling;}this._setSelectedAttr(last,true);},selectNextNode:function(){var _8a1=this.selected;if(!_8a1){this.selectFirstNode();}else{var next=_8a1.nextSibling;while(next&&next.style.display=="none"){next=next.nextSibling;}if(!next){this.selectFirstNode();}else{this._setSelectedAttr(next,true);}}},selectPreviousNode:function(){var _8a2=this.selected;if(!_8a2){this.selectLastNode();}else{var prev=_8a2.previousSibling;while(prev&&prev.style.display=="none"){prev=prev.previousSibling;}if(!prev){this.selectLastNode();}else{this._setSelectedAttr(prev,true);}}},_setSelectedAttr:function(node,_8a3){if(this.selected!=node){var _8a4=this.selected;if(_8a4){this.onDeselect(_8a4);}if(node){if(_8a3){_89a.scrollIntoView(node);}this.onSelect(node);}this._set("selected",node);}else{if(node){this.onSelect(node);}}}});});},"dijit/form/Form":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/_base/kernel","dojo/sniff","../_Widget","../_TemplatedMixin","./_FormMixin","../layout/_ContentPaneResizeMixin"],function(_8a5,_8a6,_8a7,has,_8a8,_8a9,_8aa,_8ab){return _8a5("dijit.form.Form",[_8a8,_8a9,_8aa,_8ab],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",postMixInProperties:function(){this.nameAttrSetting=this.name?("name='"+this.name+"'"):"";this.inherited(arguments);},execute:function(){},onExecute:function(){},_setEncTypeAttr:function(_8ac){_8a6.set(this.domNode,"encType",_8ac);if(has("ie")){this.domNode.encoding=_8ac;}this._set("encType",_8ac);},reset:function(e){var faux={returnValue:true,preventDefault:function(){this.returnValue=false;},stopPropagation:function(){},currentTarget:e?e.target:this.domNode,target:e?e.target:this.domNode};if(!(this.onReset(faux)===false)&&faux.returnValue){this.inherited(arguments,[]);}},onReset:function(){return true;},_onReset:function(e){this.reset(e);e.stopPropagation();e.preventDefault();return false;},_onSubmit:function(e){var fp=this.constructor.prototype;if(this.execute!=fp.execute||this.onExecute!=fp.onExecute){_8a7.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.","","2.0");this.onExecute();this.execute(this.getValues());}if(this.onSubmit(e)===false){e.stopPropagation();e.preventDefault();}},onSubmit:function(){return this.isValid();},submit:function(){if(!(this.onSubmit()===false)){this.containerNode.submit();}}});});},"dijit/form/RadioButton":function(){define(["dojo/_base/declare","./CheckBox","./_RadioButtonMixin"],function(_8ad,_8ae,_8af){return _8ad("dijit.form.RadioButton",[_8ae,_8af],{baseClass:"dijitRadio"});});},"dijit/form/_RadioButtonMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/_base/lang","dojo/query!css2","../registry"],function(_8b0,_8b1,_8b2,lang,_8b3,_8b4){return _8b1("dijit.form._RadioButtonMixin",null,{type:"radio",_getRelatedWidgets:function(){var ary=[];_8b3("input[type=radio]",this.focusNode.form||this.ownerDocument).forEach(lang.hitch(this,function(_8b5){if(_8b5.name==this.name&&_8b5.form==this.focusNode.form){var _8b6=_8b4.getEnclosingWidget(_8b5);if(_8b6){ary.push(_8b6);}}}));return ary;},_setCheckedAttr:function(_8b7){this.inherited(arguments);if(!this._created){return;}if(_8b7){_8b0.forEach(this._getRelatedWidgets(),lang.hitch(this,function(_8b8){if(_8b8!=this&&_8b8.checked){_8b8.set("checked",false);}}));}},_getSubmitValue:function(_8b9){return _8b9==null?"on":_8b9;},_onClick:function(e){if(this.checked||this.disabled){e.stopPropagation();e.preventDefault();return false;}if(this.readOnly){e.stopPropagation();e.preventDefault();_8b0.forEach(this._getRelatedWidgets(),lang.hitch(this,function(_8ba){_8b2.set(this.focusNode||this.domNode,"checked",_8ba.checked);}));return false;}var _8bb=false;var _8bc;_8b0.some(this._getRelatedWidgets(),function(_8bd){if(_8bd.checked){_8bc=_8bd;return true;}return false;});this.checked=true;_8bc&&(_8bc.checked=false);if(this.onClick(e)===false||e.defaultPrevented){_8bb=true;}this.checked=false;_8bc&&(_8bc.checked=true);if(_8bb){e.preventDefault();}else{this.set("checked",true);}return !_8bb;}});});},"dijit/form/Select":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","./_FormSelectWidget","../_HasDropDown","../DropDownMenu","../MenuItem","../MenuSeparator","../Tooltip","../_KeyNavMixin","../registry","dojo/text!./templates/Select.html","dojo/i18n!./nls/validate"],function(_8be,_8bf,_8c0,_8c1,_8c2,i18n,keys,lang,on,has,_8c3,_8c4,_8c5,_8c6,_8c7,_8c8,_8c9,_8ca,_8cb){var _8cc=_8bf("dijit.form._SelectMenu",_8c5,{autoFocus:true,buildRendering:function(){this.inherited(arguments);this.domNode.setAttribute("role","listbox");},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"selectstart",function(evt){evt.preventDefault();evt.stopPropagation();}));},focus:function(){var _8cd=false,val=this.parentWidget.value;if(lang.isArray(val)){val=val[val.length-1];}if(val){_8be.forEach(this.parentWidget._getChildren(),function(_8ce){if(_8ce.option&&(val===_8ce.option.value)){_8cd=true;this.focusChild(_8ce,false);}},this);}if(!_8cd){this.inherited(arguments);}}});var _8cf=_8bf("dijit.form.Select"+(has("dojo-bidi")?"_NoBidi":""),[_8c3,_8c4,_8c9],{baseClass:"dijitSelect dijitValidationTextBox",templateString:_8cb,_buttonInputDisabled:has("ie")?"disabled":"",required:false,state:"",message:"",tooltipPosition:[],emptyLabel:"&#160;",_isLoaded:false,_childrenLoaded:false,labelType:"html",_fillContent:function(){this.inherited(arguments);if(this.options.length&&!this.value&&this.srcNodeRef){var si=this.srcNodeRef.selectedIndex||0;this._set("value",this.options[si>=0?si:0].value);}this.dropDown=new _8cc({id:this.id+"_menu",parentWidget:this});_8c1.add(this.dropDown.domNode,this.baseClass.replace(/\s+|$/g,"Menu "));},_getMenuItemForOption:function(_8d0){if(!_8d0.value&&!_8d0.label){return new _8c7({ownerDocument:this.ownerDocument});}else{var _8d1=lang.hitch(this,"_setValueAttr",_8d0);var item=new _8c6({option:_8d0,label:(this.labelType==="text"?(_8d0.label||"").toString().replace(/&/g,"&amp;").replace(/</g,"&lt;"):_8d0.label)||this.emptyLabel,onClick:_8d1,ownerDocument:this.ownerDocument,dir:this.dir,textDir:this.textDir,disabled:_8d0.disabled||false});item.focusNode.setAttribute("role","option");return item;}},_addOptionItem:function(_8d2){if(this.dropDown){this.dropDown.addChild(this._getMenuItemForOption(_8d2));}},_getChildren:function(){if(!this.dropDown){return [];}return this.dropDown.getChildren();},focus:function(){if(!this.disabled&&this.focusNode.focus){try{this.focusNode.focus();}catch(e){}}},focusChild:function(_8d3){if(_8d3){this.set("value",_8d3.option);}},_getFirst:function(){var _8d4=this._getChildren();return _8d4.length?_8d4[0]:null;},_getLast:function(){var _8d5=this._getChildren();return _8d5.length?_8d5[_8d5.length-1]:null;},childSelector:function(node){var node=_8ca.byNode(node);return node&&node.getParent()==this.dropDown;},onKeyboardSearch:function(item,evt,_8d6,_8d7){if(item){this.focusChild(item);}},_loadChildren:function(_8d8){if(_8d8===true){if(this.dropDown){delete this.dropDown.focusedChild;this.focusedChild=null;}if(this.options.length){this.inherited(arguments);}else{_8be.forEach(this._getChildren(),function(_8d9){_8d9.destroyRecursive();});var item=new _8c6({ownerDocument:this.ownerDocument,label:this.emptyLabel});this.dropDown.addChild(item);}}else{this._updateSelection();}this._isLoaded=false;this._childrenLoaded=true;if(!this._loadingStore){this._setValueAttr(this.value,false);}},_refreshState:function(){if(this._started){this.validate(this.focused);}},startup:function(){this.inherited(arguments);this._refreshState();},_setValueAttr:function(_8da){this.inherited(arguments);_8c0.set(this.valueNode,"value",this.get("value"));this._refreshState();},_setNameAttr:"valueNode",_setDisabledAttr:function(_8db){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_8dc){this._set("required",_8dc);this.focusNode.setAttribute("aria-required",_8dc);this._refreshState();},_setOptionsAttr:function(_8dd){this._isLoaded=false;this._set("options",_8dd);},_setDisplay:function(_8de){var lbl=(this.labelType==="text"?(_8de||"").replace(/&/g,"&amp;").replace(/</g,"&lt;"):_8de)||this.emptyLabel;this.containerNode.innerHTML="<span role=\"option\" aria-selected=\"true\" class=\"dijitReset dijitInline "+this.baseClass.replace(/\s+|$/g,"Label ")+"\">"+lbl+"</span>";},validate:function(_8df){var _8e0=this.disabled||this.isValid(_8df);this._set("state",_8e0?"":(this._hasBeenBlurred?"Error":"Incomplete"));this.focusNode.setAttribute("aria-invalid",_8e0?"false":"true");var _8e1=_8e0?"":this._missingMsg;if(_8e1&&this.focused&&this._hasBeenBlurred){_8c8.show(_8e1,this.domNode,this.tooltipPosition,!this.isLeftToRight());}else{_8c8.hide(this.domNode);}this._set("message",_8e1);return _8e0;},isValid:function(){return (!this.required||this.value===0||!(/^\s*$/.test(this.value||"")));},reset:function(){this.inherited(arguments);_8c8.hide(this.domNode);this._refreshState();},postMixInProperties:function(){this.inherited(arguments);this._missingMsg=i18n.getLocalization("dijit.form","validate",this.lang).missingMessage;},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"selectstart",function(evt){evt.preventDefault();evt.stopPropagation();}));this.domNode.setAttribute("aria-expanded","false");var _8e2=this._keyNavCodes;delete _8e2[keys.LEFT_ARROW];delete _8e2[keys.RIGHT_ARROW];},_setStyleAttr:function(_8e3){this.inherited(arguments);_8c1.toggle(this.domNode,this.baseClass.replace(/\s+|$/g,"FixedWidth "),!!this.domNode.style.width);},isLoaded:function(){return this._isLoaded;},loadDropDown:function(_8e4){this._loadChildren(true);this._isLoaded=true;_8e4();},destroy:function(_8e5){if(this.dropDown&&!this.dropDown._destroyed){this.dropDown.destroyRecursive(_8e5);delete this.dropDown;}_8c8.hide(this.domNode);this.inherited(arguments);},_onFocus:function(){this.validate(true);},_onBlur:function(){_8c8.hide(this.domNode);this.inherited(arguments);this.validate(false);}});if(has("dojo-bidi")){_8cf=_8bf("dijit.form.Select",_8cf,{_setDisplay:function(_8e6){this.inherited(arguments);this.applyTextDir(this.containerNode);}});}_8cf._Menu=_8cc;function _8e7(_8e8){return function(evt){if(!this._isLoaded){this.loadDropDown(lang.hitch(this,_8e8,evt));}else{this.inherited(_8e8,arguments);}};};_8cf.prototype._onContainerKeydown=_8e7("_onContainerKeydown");_8cf.prototype._onContainerKeypress=_8e7("_onContainerKeypress");return _8cf;});},"dijit/form/_FormSelectWidget":function(){define(["dojo/_base/array","dojo/_base/Deferred","dojo/aspect","dojo/data/util/sorter","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/when","dojo/store/util/QueryResults","./_FormValueWidget"],function(_8e9,_8ea,_8eb,_8ec,_8ed,dom,_8ee,_8ef,lang,_8f0,when,_8f1,_8f2){var _8f3=_8ed("dijit.form._FormSelectWidget",_8f2,{multiple:false,options:null,store:null,_setStoreAttr:function(val){if(this._created){this._deprecatedSetStore(val);}},query:null,_setQueryAttr:function(_8f4){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{query:_8f4});}},queryOptions:null,_setQueryOptionsAttr:function(_8f5){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{queryOptions:_8f5});}},labelAttr:"",onFetch:null,sortByLabel:true,loadChildrenOnOpen:false,onLoadDeferred:null,getOptions:function(_8f6){var opts=this.options||[];if(_8f6==null){return opts;}if(lang.isArrayLike(_8f6)){return _8e9.map(_8f6,function(item){return this.getOptions(item);},this);}if(lang.isString(_8f6)){_8f6={value:_8f6};}if(lang.isObject(_8f6)){if(!_8e9.some(opts,function(_8f7,idx){for(var a in _8f6){if(!(a in _8f7)||_8f7[a]!=_8f6[a]){return false;}}_8f6=idx;return true;})){_8f6=-1;}}if(_8f6>=0&&_8f6<opts.length){return opts[_8f6];}return null;},addOption:function(_8f8){_8e9.forEach(lang.isArrayLike(_8f8)?_8f8:[_8f8],function(i){if(i&&lang.isObject(i)){this.options.push(i);}},this);this._loadChildren();},removeOption:function(_8f9){var _8fa=this.getOptions(lang.isArrayLike(_8f9)?_8f9:[_8f9]);_8e9.forEach(_8fa,function(_8fb){if(_8fb){this.options=_8e9.filter(this.options,function(node){return (node.value!==_8fb.value||node.label!==_8fb.label);});this._removeOptionItem(_8fb);}},this);this._loadChildren();},updateOption:function(_8fc){_8e9.forEach(lang.isArrayLike(_8fc)?_8fc:[_8fc],function(i){var _8fd=this.getOptions({value:i.value}),k;if(_8fd){for(k in i){_8fd[k]=i[k];}}},this);this._loadChildren();},setStore:function(_8fe,_8ff,_900){_8ef.deprecated(this.declaredClass+"::setStore(store, selectedValue, fetchArgs) is deprecated. Use set('query', fetchArgs.query), set('queryOptions', fetchArgs.queryOptions), set('store', store), or set('value', selectedValue) instead.","","2.0");this._deprecatedSetStore(_8fe,_8ff,_900);},_deprecatedSetStore:function(_901,_902,_903){var _904=this.store;_903=_903||{};if(_904!==_901){var h;while((h=this._notifyConnections.pop())){h.remove();}if(!_901.get){lang.mixin(_901,{_oldAPI:true,get:function(id){var _905=new _8ea();this.fetchItemByIdentity({identity:id,onItem:function(_906){_905.resolve(_906);},onError:function(_907){_905.reject(_907);}});return _905.promise;},query:function(_908,_909){var _90a=new _8ea(function(){if(_90b.abort){_90b.abort();}});_90a.total=new _8ea();var _90b=this.fetch(lang.mixin({query:_908,onBegin:function(_90c){_90a.total.resolve(_90c);},onComplete:function(_90d){_90a.resolve(_90d);},onError:function(_90e){_90a.reject(_90e);}},_909));return new _8f1(_90a);}});if(_901.getFeatures()["dojo.data.api.Notification"]){this._notifyConnections=[_8eb.after(_901,"onNew",lang.hitch(this,"_onNewItem"),true),_8eb.after(_901,"onDelete",lang.hitch(this,"_onDeleteItem"),true),_8eb.after(_901,"onSet",lang.hitch(this,"_onSetItem"),true)];}}this._set("store",_901);}if(this.options&&this.options.length){this.removeOption(this.options);}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}if(_903.query){this._set("query",_903.query);}if(_903.queryOptions){this._set("queryOptions",_903.queryOptions);}if(_901&&_901.query){this._loadingStore=true;this.onLoadDeferred=new _8ea();this._queryRes=_901.query(this.query,this.queryOptions);when(this._queryRes,lang.hitch(this,function(_90f){if(this.sortByLabel&&!_903.sort&&_90f.length){if(_901.getValue){_90f.sort(_8ec.createSortFunction([{attribute:_901.getLabelAttributes(_90f[0])[0]}],_901));}else{var _910=this.labelAttr;_90f.sort(function(a,b){return a[_910]>b[_910]?1:b[_910]>a[_910]?-1:0;});}}if(_903.onFetch){_90f=_903.onFetch.call(this,_90f,_903);}_8e9.forEach(_90f,function(i){this._addOptionForItem(i);},this);if(this._queryRes.observe){this._observeHandle=this._queryRes.observe(lang.hitch(this,function(_911,_912,_913){if(_912==_913){this._onSetItem(_911);}else{if(_912!=-1){this._onDeleteItem(_911);}if(_913!=-1){this._onNewItem(_911);}}}),true);}this._loadingStore=false;this.set("value","_pendingValue" in this?this._pendingValue:_902);delete this._pendingValue;if(!this.loadChildrenOnOpen){this._loadChildren();}else{this._pseudoLoadChildren(_90f);}this.onLoadDeferred.resolve(true);this.onSetStore();}),lang.hitch(this,function(err){console.error("dijit.form.Select: "+err.toString());this.onLoadDeferred.reject(err);}));}return _904;},_setValueAttr:function(_914,_915){if(!this._onChangeActive){_915=null;}if(this._loadingStore){this._pendingValue=_914;return;}if(_914==null){return;}if(lang.isArrayLike(_914)){_914=_8e9.map(_914,function(_916){return lang.isObject(_916)?_916:{value:_916};});}else{if(lang.isObject(_914)){_914=[_914];}else{_914=[{value:_914}];}}_914=_8e9.filter(this.getOptions(_914),function(i){return i&&i.value;});var opts=this.getOptions()||[];if(!this.multiple&&(!_914[0]||!_914[0].value)&&!!opts.length){_914[0]=opts[0];}_8e9.forEach(opts,function(opt){opt.selected=_8e9.some(_914,function(v){return v.value===opt.value;});});var val=_8e9.map(_914,function(opt){return opt.value;});if(typeof val=="undefined"||typeof val[0]=="undefined"){return;}var disp=_8e9.map(_914,function(opt){return opt.label;});this._setDisplay(this.multiple?disp:disp[0]);this.inherited(arguments,[this.multiple?val:val[0],_915]);this._updateSelection();},_getDisplayedValueAttr:function(){var ret=_8e9.map([].concat(this.get("selectedOptions")),function(v){if(v&&"label" in v){return v.label;}else{if(v){return v.value;}}return null;},this);return this.multiple?ret:ret[0];},_setDisplayedValueAttr:function(_917){this.set("value",this.getOptions(typeof _917=="string"?{label:_917}:_917));},_loadChildren:function(){if(this._loadingStore){return;}_8e9.forEach(this._getChildren(),function(_918){_918.destroyRecursive();});_8e9.forEach(this.options,this._addOptionItem,this);this._updateSelection();},_updateSelection:function(){this.focusedChild=null;this._set("value",this._getValueFromOpts());var val=[].concat(this.value);if(val&&val[0]){var self=this;_8e9.forEach(this._getChildren(),function(_919){var _91a=_8e9.some(val,function(v){return _919.option&&(v===_919.option.value);});if(_91a&&!self.multiple){self.focusedChild=_919;}_8ee.toggle(_919.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),_91a);_919.domNode.setAttribute("aria-selected",_91a?"true":"false");},this);}},_getValueFromOpts:function(){var opts=this.getOptions()||[];if(!this.multiple&&opts.length){var opt=_8e9.filter(opts,function(i){return i.selected;})[0];if(opt&&opt.value){return opt.value;}else{opts[0].selected=true;return opts[0].value;}}else{if(this.multiple){return _8e9.map(_8e9.filter(opts,function(i){return i.selected;}),function(i){return i.value;})||[];}}return "";},_onNewItem:function(item,_91b){if(!_91b||!_91b.parent){this._addOptionForItem(item);}},_onDeleteItem:function(item){var _91c=this.store;this.removeOption({value:_91c.getIdentity(item)});},_onSetItem:function(item){this.updateOption(this._getOptionObjForItem(item));},_getOptionObjForItem:function(item){var _91d=this.store,_91e=(this.labelAttr&&this.labelAttr in item)?item[this.labelAttr]:_91d.getLabel(item),_91f=(_91e?_91d.getIdentity(item):null);return {value:_91f,label:_91e,item:item};},_addOptionForItem:function(item){var _920=this.store;if(_920.isItemLoaded&&!_920.isItemLoaded(item)){_920.loadItem({item:item,onItem:function(i){this._addOptionForItem(i);},scope:this});return;}var _921=this._getOptionObjForItem(item);this.addOption(_921);},constructor:function(_922){this._oValue=(_922||{}).value||null;this._notifyConnections=[];},buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.focusNode,false);},_fillContent:function(){if(!this.options){this.options=this.srcNodeRef?_8f0("> *",this.srcNodeRef).map(function(node){if(node.getAttribute("type")==="separator"){return {value:"",label:"",selected:false,disabled:false};}return {value:(node.getAttribute("data-"+_8ef._scopeName+"-value")||node.getAttribute("value")),label:String(node.innerHTML),selected:node.getAttribute("selected")||false,disabled:node.getAttribute("disabled")||false};},this):[];}if(!this.value){this._set("value",this._getValueFromOpts());}else{if(this.multiple&&typeof this.value=="string"){this._set("value",this.value.split(","));}}},postCreate:function(){this.inherited(arguments);_8eb.after(this,"onChange",lang.hitch(this,"_updateSelection"));var _923=this.store;if(_923&&(_923.getIdentity||_923.getFeatures()["dojo.data.api.Identity"])){this.store=null;this._deprecatedSetStore(_923,this._oValue,{query:this.query,queryOptions:this.queryOptions});}this._storeInitialized=true;},startup:function(){this._loadChildren();this.inherited(arguments);},destroy:function(){var h;while((h=this._notifyConnections.pop())){h.remove();}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}this.inherited(arguments);},_addOptionItem:function(){},_removeOptionItem:function(){},_setDisplay:function(){},_getChildren:function(){return [];},_getSelectedOptionsAttr:function(){return this.getOptions({selected:true});},_pseudoLoadChildren:function(){},onSetStore:function(){}});return _8f3;});},"dijit/DropDownMenu":function(){define(["dojo/_base/declare","dojo/keys","dojo/text!./templates/Menu.html","./_MenuBase"],function(_924,keys,_925,_926){return _924("dijit.DropDownMenu",_926,{templateString:_925,baseClass:"dijitMenu",_onUpArrow:function(){this.focusPrev();},_onDownArrow:function(){this.focusNext();},_onRightArrow:function(evt){this._moveToPopup(evt);evt.stopPropagation();evt.preventDefault();},_onLeftArrow:function(evt){if(this.parentMenu){if(this.parentMenu._isMenuBar){this.parentMenu.focusPrev();}else{this.onCancel(false);}}else{evt.stopPropagation();evt.preventDefault();}}});});},"dijit/_MenuBase":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/_base/lang","dojo/mouse","dojo/on","dojo/window","./a11yclick","./registry","./_Widget","./_CssStateMixin","./_KeyNavContainer","./_TemplatedMixin"],function(_927,_928,dom,_929,_92a,lang,_92b,on,_92c,_92d,_92e,_92f,_930,_931,_932){return _928("dijit._MenuBase",[_92f,_932,_931,_930],{selected:null,_setSelectedAttr:function(item){if(this.selected!=item){if(this.selected){this.selected._setSelected(false);this._onChildDeselect(this.selected);}if(item){item._setSelected(true);}this._set("selected",item);}},activated:false,_setActivatedAttr:function(val){_92a.toggle(this.domNode,"dijitMenuActive",val);_92a.toggle(this.domNode,"dijitMenuPassive",!val);this._set("activated",val);},parentMenu:null,popupDelay:500,passivePopupDelay:Infinity,autoFocus:false,childSelector:function(node){var _933=_92e.byNode(node);return node.parentNode==this.containerNode&&_933&&_933.focus;},postCreate:function(){var self=this,_934=typeof this.childSelector=="string"?this.childSelector:lang.hitch(this,"childSelector");this.own(on(this.containerNode,on.selector(_934,_92b.enter),function(){self.onItemHover(_92e.byNode(this));}),on(this.containerNode,on.selector(_934,_92b.leave),function(){self.onItemUnhover(_92e.byNode(this));}),on(this.containerNode,on.selector(_934,_92d),function(evt){self.onItemClick(_92e.byNode(this),evt);evt.stopPropagation();}),on(this.containerNode,on.selector(_934,"focusin"),function(){self._onItemFocus(_92e.byNode(this));}));this.inherited(arguments);},onKeyboardSearch:function(item,evt,_935,_936){this.inherited(arguments);if(!!item&&(_936==-1||(!!item.popup&&_936==1))){this.onItemClick(item,evt);}},_keyboardSearchCompare:function(item,_937){if(!!item.shortcutKey){return _937==item.shortcutKey.toLowerCase()?-1:0;}return this.inherited(arguments)?1:0;},onExecute:function(){},onCancel:function(){},_moveToPopup:function(evt){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){this.onItemClick(this.focusedChild,evt);}else{var _938=this._getTopMenu();if(_938&&_938._isMenuBar){_938.focusNext();}}},_onPopupHover:function(){this.set("selected",this.currentPopupItem);this._stopPendingCloseTimer();},onItemHover:function(item){if(this.activated){this.set("selected",item);if(item.popup&&!item.disabled&&!this.hover_timer){this.hover_timer=this.defer(function(){this._openItemPopup(item);},this.popupDelay);}}else{if(this.passivePopupDelay<Infinity){if(this.passive_hover_timer){this.passive_hover_timer.remove();}this.passive_hover_timer=this.defer(function(){this.onItemClick(item,{type:"click"});},this.passivePopupDelay);}}this._hoveredChild=item;item._set("hovering",true);},_onChildDeselect:function(item){this._stopPopupTimer();if(this.currentPopupItem==item){this._stopPendingCloseTimer();this._pendingClose_timer=this.defer(function(){this._pendingClose_timer=null;this.currentPopupItem=null;item._closePopup();},this.popupDelay);}},onItemUnhover:function(item){if(this._hoveredChild==item){this._hoveredChild=null;}if(this.passive_hover_timer){this.passive_hover_timer.remove();this.passive_hover_timer=null;}item._set("hovering",false);},_stopPopupTimer:function(){if(this.hover_timer){this.hover_timer=this.hover_timer.remove();}},_stopPendingCloseTimer:function(){if(this._pendingClose_timer){this._pendingClose_timer=this._pendingClose_timer.remove();}},_getTopMenu:function(){for(var top=this;top.parentMenu;top=top.parentMenu){}return top;},onItemClick:function(item,evt){if(this.passive_hover_timer){this.passive_hover_timer.remove();}this.focusChild(item);if(item.disabled){return false;}if(item.popup){this.set("selected",item);this.set("activated",true);var _939=/^key/.test(evt._origType||evt.type)||(evt.clientX==0&&evt.clientY==0);this._openItemPopup(item,_939);}else{this.onExecute();item._onClick?item._onClick(evt):item.onClick(evt);}},_openItemPopup:function(_93a,_93b){if(_93a==this.currentPopupItem){return;}if(this.currentPopupItem){this._stopPendingCloseTimer();this.currentPopupItem._closePopup();}this._stopPopupTimer();var _93c=_93a.popup;_93c.parentMenu=this;this.own(this._mouseoverHandle=on.once(_93c.domNode,"mouseover",lang.hitch(this,"_onPopupHover")));var self=this;_93a._openPopup({parent:this,orient:this._orient||["after","before"],onCancel:function(){if(_93b){self.focusChild(_93a);}self._cleanUp();},onExecute:lang.hitch(this,"_cleanUp",true),onClose:function(){if(self._mouseoverHandle){self._mouseoverHandle.remove();delete self._mouseoverHandle;}}},_93b);this.currentPopupItem=_93a;},onOpen:function(){this.isShowingNow=true;this.set("activated",true);},onClose:function(){this.set("activated",false);this.set("selected",null);this.isShowingNow=false;this.parentMenu=null;},_closeChild:function(){this._stopPopupTimer();if(this.currentPopupItem){if(this.focused){_929.set(this.selected.focusNode,"tabIndex",this.tabIndex);this.selected.focusNode.focus();}this.currentPopupItem._closePopup();this.currentPopupItem=null;}},_onItemFocus:function(item){if(this._hoveredChild&&this._hoveredChild!=item){this.onItemUnhover(this._hoveredChild);}this.set("selected",item);},_onBlur:function(){this._cleanUp(true);this.inherited(arguments);},_cleanUp:function(_93d){this._closeChild();if(typeof this.isShowingNow=="undefined"){this.set("activated",false);}if(_93d){this.set("selected",null);}}});});},"dijit/_KeyNavContainer":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/_base/kernel","dojo/keys","dojo/_base/lang","./registry","./_Container","./_FocusMixin","./_KeyNavMixin"],function(_93e,_93f,_940,_941,keys,lang,_942,_943,_944,_945){return _93f("dijit._KeyNavContainer",[_944,_945,_943],{connectKeyNavHandlers:function(_946,_947){var _948=(this._keyNavCodes={});var prev=lang.hitch(this,"focusPrev");var next=lang.hitch(this,"focusNext");_93e.forEach(_946,function(code){_948[code]=prev;});_93e.forEach(_947,function(code){_948[code]=next;});_948[keys.HOME]=lang.hitch(this,"focusFirstChild");_948[keys.END]=lang.hitch(this,"focusLastChild");},startupKeyNavChildren:function(){_941.deprecated("startupKeyNavChildren() call no longer needed","","2.0");},startup:function(){this.inherited(arguments);_93e.forEach(this.getChildren(),lang.hitch(this,"_startupChild"));},addChild:function(_949,_94a){this.inherited(arguments);this._startupChild(_949);},_startupChild:function(_94b){_94b.set("tabIndex","-1");},_getFirst:function(){var _94c=this.getChildren();return _94c.length?_94c[0]:null;},_getLast:function(){var _94d=this.getChildren();return _94d.length?_94d[_94d.length-1]:null;},focusNext:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,1));},focusPrev:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,-1),true);},childSelector:function(node){var node=_942.byNode(node);return node&&node.getParent()==this;}});});},"dijit/_KeyNavMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dijit/registry","dijit/_FocusMixin"],function(_94e,_94f,_950,keys,lang,on,_951,_952){return _94f("dijit._KeyNavMixin",_952,{tabIndex:"0",childSelector:null,postCreate:function(){this.inherited(arguments);_950.set(this.domNode,"tabIndex",this.tabIndex);if(!this._keyNavCodes){var _953=this._keyNavCodes={};_953[keys.HOME]=lang.hitch(this,"focusFirstChild");_953[keys.END]=lang.hitch(this,"focusLastChild");_953[this.isLeftToRight()?keys.LEFT_ARROW:keys.RIGHT_ARROW]=lang.hitch(this,"_onLeftArrow");_953[this.isLeftToRight()?keys.RIGHT_ARROW:keys.LEFT_ARROW]=lang.hitch(this,"_onRightArrow");_953[keys.UP_ARROW]=lang.hitch(this,"_onUpArrow");_953[keys.DOWN_ARROW]=lang.hitch(this,"_onDownArrow");}var self=this,_954=typeof this.childSelector=="string"?this.childSelector:lang.hitch(this,"childSelector");this.own(on(this.domNode,"keypress",lang.hitch(this,"_onContainerKeypress")),on(this.domNode,"keydown",lang.hitch(this,"_onContainerKeydown")),on(this.domNode,"focus",lang.hitch(this,"_onContainerFocus")),on(this.containerNode,on.selector(_954,"focusin"),function(evt){self._onChildFocus(_951.getEnclosingWidget(this),evt);}));},_onLeftArrow:function(){},_onRightArrow:function(){},_onUpArrow:function(){},_onDownArrow:function(){},focus:function(){this.focusFirstChild();},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1);},_getLastFocusableChild:function(){return this._getNextFocusableChild(null,-1);},focusFirstChild:function(){this.focusChild(this._getFirstFocusableChild());},focusLastChild:function(){this.focusChild(this._getLastFocusableChild());},focusChild:function(_955,last){if(!_955){return;}if(this.focusedChild&&_955!==this.focusedChild){this._onChildBlur(this.focusedChild);}_955.set("tabIndex",this.tabIndex);_955.focus(last?"end":"start");},_onContainerFocus:function(evt){if(evt.target!==this.domNode||this.focusedChild){return;}this.focus();},_onFocus:function(){_950.set(this.domNode,"tabIndex","-1");this.inherited(arguments);},_onBlur:function(evt){_950.set(this.domNode,"tabIndex",this.tabIndex);if(this.focusedChild){this.focusedChild.set("tabIndex","-1");this.lastFocusedChild=this.focusedChild;this._set("focusedChild",null);}this.inherited(arguments);},_onChildFocus:function(_956){if(_956&&_956!=this.focusedChild){if(this.focusedChild&&!this.focusedChild._destroyed){this.focusedChild.set("tabIndex","-1");}_956.set("tabIndex",this.tabIndex);this.lastFocused=_956;this._set("focusedChild",_956);}},_searchString:"",multiCharSearchDuration:1000,onKeyboardSearch:function(item,evt,_957,_958){if(item){this.focusChild(item);}},_keyboardSearchCompare:function(item,_959){var _95a=item.domNode,text=item.label||(_95a.focusNode?_95a.focusNode.label:"")||_95a.innerText||_95a.textContent||"",_95b=text.replace(/^\s+/,"").substr(0,_959.length).toLowerCase();return (!!_959.length&&_95b==_959)?-1:0;},_onContainerKeydown:function(evt){var func=this._keyNavCodes[evt.keyCode];if(func){func(evt,this.focusedChild);evt.stopPropagation();evt.preventDefault();this._searchString="";}else{if(evt.keyCode==keys.SPACE&&this._searchTimer&&!(evt.ctrlKey||evt.altKey||evt.metaKey)){evt.stopImmediatePropagation();evt.preventDefault();this._keyboardSearch(evt," ");}}},_onContainerKeypress:function(evt){if(evt.charCode<=keys.SPACE||evt.ctrlKey||evt.altKey||evt.metaKey){return;}evt.preventDefault();evt.stopPropagation();this._keyboardSearch(evt,String.fromCharCode(evt.charCode).toLowerCase());},_keyboardSearch:function(evt,_95c){var _95d=null,_95e,_95f=0,_960=lang.hitch(this,function(){if(this._searchTimer){this._searchTimer.remove();}this._searchString+=_95c;var _961=/^(.)\1*$/.test(this._searchString);var _962=_961?1:this._searchString.length;_95e=this._searchString.substr(0,_962);this._searchTimer=this.defer(function(){this._searchTimer=null;this._searchString="";},this.multiCharSearchDuration);var _963=this.focusedChild||null;if(_962==1||!_963){_963=this._getNextFocusableChild(_963,1);if(!_963){return;}}var stop=_963;do{var rc=this._keyboardSearchCompare(_963,_95e);if(!!rc&&_95f++==0){_95d=_963;}if(rc==-1){_95f=-1;break;}_963=this._getNextFocusableChild(_963,1);}while(_963&&_963!=stop);});_960();this.onKeyboardSearch(_95d,evt,_95e,_95f);},_onChildBlur:function(){},_getNextFocusableChild:function(_964,dir){var _965=_964;do{if(!_964){_964=this[dir>0?"_getFirst":"_getLast"]();if(!_964){break;}}else{_964=this._getNext(_964,dir);}if(_964!=null&&_964!=_965&&_964.isFocusable()){return _964;}}while(_964!=_965);return null;},_getFirst:function(){return null;},_getLast:function(){return null;},_getNext:function(_966,dir){if(_966){_966=_966.domNode;while(_966){_966=_966[dir<0?"previousSibling":"nextSibling"];if(_966&&"getAttribute" in _966){var w=_951.byNode(_966);if(w){return w;}}}}return null;}});});},"dijit/MenuItem":function(){define(["dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/_base/kernel","dojo/sniff","dojo/_base/lang","./_Widget","./_TemplatedMixin","./_Contained","./_CssStateMixin","dojo/text!./templates/MenuItem.html"],function(_967,dom,_968,_969,_96a,has,lang,_96b,_96c,_96d,_96e,_96f){var _970=_967("dijit.MenuItem"+(has("dojo-bidi")?"_NoBidi":""),[_96b,_96c,_96d,_96e],{templateString:_96f,baseClass:"dijitMenuItem",label:"",_setLabelAttr:function(val){this._set("label",val);var _971="";var text;var ndx=val.search(/{\S}/);if(ndx>=0){_971=val.charAt(ndx+1);var _972=val.substr(0,ndx);var _973=val.substr(ndx+3);text=_972+_971+_973;val=_972+"<span class=\"dijitMenuItemShortcutKey\">"+_971+"</span>"+_973;}else{text=val;}this.domNode.setAttribute("aria-label",text+" "+this.accelKey);this.containerNode.innerHTML=val;this._set("shortcutKey",_971);},iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},accelKey:"",disabled:false,_fillContent:function(_974){if(_974&&!("label" in this.params)){this._set("label",_974.innerHTML);}},buildRendering:function(){this.inherited(arguments);var _975=this.id+"_text";_968.set(this.containerNode,"id",_975);if(this.accelKeyNode){_968.set(this.accelKeyNode,"id",this.id+"_accel");}dom.setSelectable(this.domNode,false);},onClick:function(){},focus:function(){try{if(has("ie")==8){this.containerNode.focus();}this.focusNode.focus();}catch(e){}},_setSelected:function(_976){_969.toggle(this.domNode,"dijitMenuItemSelected",_976);},setLabel:function(_977){_96a.deprecated("dijit.MenuItem.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",_977);},setDisabled:function(_978){_96a.deprecated("dijit.Menu.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",_978);},_setDisabledAttr:function(_979){this.focusNode.setAttribute("aria-disabled",_979?"true":"false");this._set("disabled",_979);},_setAccelKeyAttr:function(_97a){if(this.accelKeyNode){this.accelKeyNode.style.display=_97a?"":"none";this.accelKeyNode.innerHTML=_97a;_968.set(this.containerNode,"colSpan",_97a?"1":"2");}this._set("accelKey",_97a);}});if(has("dojo-bidi")){_970=_967("dijit.MenuItem",_970,{_setLabelAttr:function(val){this.inherited(arguments);if(this.textDir==="auto"){this.applyTextDir(this.textDirNode);}}});}return _970;});},"dijit/MenuSeparator":function(){define(["dojo/_base/declare","dojo/dom","./_WidgetBase","./_TemplatedMixin","./_Contained","dojo/text!./templates/MenuSeparator.html"],function(_97b,dom,_97c,_97d,_97e,_97f){return _97b("dijit.MenuSeparator",[_97c,_97d,_97e],{templateString:_97f,buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});});},"dijit/form/SimpleTextarea":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/sniff","./TextBox"],function(_980,_981,has,_982){return _980("dijit.form.SimpleTextarea",_982,{baseClass:"dijitTextBox dijitTextArea",rows:"3",cols:"20",templateString:"<textarea ${!nameAttrSetting} data-dojo-attach-point='focusNode,containerNode,textbox' autocomplete='off'></textarea>",postMixInProperties:function(){if(!this.value&&this.srcNodeRef){this.value=this.srcNodeRef.value;}this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);if(has("ie")&&this.cols){_981.add(this.textbox,"dijitTextAreaCols");}},filter:function(_983){if(_983){_983=_983.replace(/\r/g,"");}return this.inherited(arguments);},_onInput:function(e){if(this.maxLength){var _984=parseInt(this.maxLength);var _985=this.textbox.value.replace(/\r/g,"");var _986=_985.length-_984;if(_986>0){var _987=this.textbox;if(_987.selectionStart){var pos=_987.selectionStart;var cr=0;if(has("opera")){cr=(this.textbox.value.substring(0,pos).match(/\r/g)||[]).length;}this.textbox.value=_985.substring(0,pos-_986-cr)+_985.substring(pos-cr);_987.setSelectionRange(pos-_986,pos-_986);}else{if(this.ownerDocument.selection){_987.focus();var _988=this.ownerDocument.selection.createRange();_988.moveStart("character",-_986);_988.text="";_988.select();}}}}this.inherited(arguments);}});});},"dijit/form/MultiSelect":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-geometry","dojo/sniff","dojo/query","./_FormValueWidget","dojo/NodeList-dom"],function(_989,_98a,_98b,has,_98c,_98d){var _98e=_98a("dijit.form.MultiSelect"+(has("dojo-bidi")?"_NoBidi":""),_98d,{size:7,baseClass:"dijitMultiSelect",templateString:"<select multiple='multiple' ${!nameAttrSetting} data-dojo-attach-point='containerNode,focusNode' data-dojo-attach-event='onchange: _onChange'></select>",addSelected:function(_98f){_98f.getSelected().forEach(function(n){this.containerNode.appendChild(n);this.domNode.scrollTop=this.domNode.offsetHeight;var _990=_98f.domNode.scrollTop;_98f.domNode.scrollTop=0;_98f.domNode.scrollTop=_990;},this);this._set("value",this.get("value"));},getSelected:function(){return _98c("option",this.containerNode).filter(function(n){return n.selected;});},_getValueAttr:function(){return _989.map(this.getSelected(),function(n){return n.value;});},multiple:true,_setMultipleAttr:function(val){},_setValueAttr:function(_991){if(has("android")){_98c("option",this.containerNode).orphan().forEach(function(n){var _992=n.ownerDocument.createElement("option");_992.value=n.value;_992.selected=(_989.indexOf(_991,n.value)!=-1);_992.text=n.text;_992.originalText=n.originalText;this.containerNode.appendChild(_992);},this);}else{_98c("option",this.containerNode).forEach(function(n){n.selected=(_989.indexOf(_991,n.value)!=-1);});}this.inherited(arguments);},invertSelection:function(_993){var val=[];_98c("option",this.containerNode).forEach(function(n){if(!n.selected){val.push(n.value);}});this._setValueAttr(val,!(_993===false||_993==null));},_onChange:function(){this._handleOnChange(this.get("value"),true);},resize:function(size){if(size){_98b.setMarginBox(this.domNode,size);}},postCreate:function(){this._set("value",this.get("value"));this.inherited(arguments);}});if(has("dojo-bidi")){_98e=_98a("dijit.form.MultiSelect",_98e,{addSelected:function(_994){_994.getSelected().forEach(function(n){n.text=this.enforceTextDirWithUcc(this.restoreOriginalText(n),n.text);},this);this.inherited(arguments);},_setTextDirAttr:function(_995){if((this.textDir!=_995||!this._created)&&this.enforceTextDirWithUcc){this._set("textDir",_995);_98c("option",this.containerNode).forEach(function(_996){if(!this._created&&_996.value===_996.text){_996.value=_996.text;}_996.text=this.enforceTextDirWithUcc(_996,_996.originalText||_996.text);},this);}}});}return _98e;});},"dijit/form/ComboBox":function(){define(["dojo/_base/declare","./ValidationTextBox","./ComboBoxMixin"],function(_997,_998,_999){return _997("dijit.form.ComboBox",[_998,_999],{});});},"dijit/InlineEditBox":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-style","dojo/i18n","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/when","./a11yclick","./focus","./_Widget","./_TemplatedMixin","./_WidgetsInTemplateMixin","./_Container","./form/Button","./form/_TextBoxMixin","./form/TextBox","dojo/text!./templates/InlineEditBox.html","dojo/i18n!./nls/common"],function(_99a,_99b,_99c,_99d,_99e,_99f,_9a0,_9a1,i18n,_9a2,keys,lang,on,has,when,_9a3,fm,_9a4,_9a5,_9a6,_9a7,_9a8,_9a9,_9aa,_9ab){var _9ac=_99d("dijit._InlineEditor",[_9a4,_9a5,_9a6],{templateString:_9ab,contextRequire:_99a,postMixInProperties:function(){this.inherited(arguments);this.messages=i18n.getLocalization("dijit","common",this.lang);_99b.forEach(["buttonSave","buttonCancel"],function(prop){if(!this[prop]){this[prop]=this.messages[prop];}},this);},buildRendering:function(){this.inherited(arguments);var Cls=typeof this.editor=="string"?(lang.getObject(this.editor)||_99a(this.editor)):this.editor;var _9ad=this.sourceStyle,_9ae="line-height:"+_9ad.lineHeight+";",_9af=_9a1.getComputedStyle(this.domNode);_99b.forEach(["Weight","Family","Size","Style"],function(prop){var _9b0=_9ad["font"+prop],_9b1=_9af["font"+prop];if(_9b1!=_9b0){_9ae+="font-"+prop+":"+_9ad["font"+prop]+";";}},this);_99b.forEach(["marginTop","marginBottom","marginLeft","marginRight","position","left","top","right","bottom","float","clear","display"],function(prop){this.domNode.style[prop]=_9ad[prop];},this);var _9b2=this.inlineEditBox.width;if(_9b2=="100%"){_9ae+="width:100%;";this.domNode.style.display="block";}else{_9ae+="width:"+(_9b2+(Number(_9b2)==_9b2?"px":""))+";";}var _9b3=lang.delegate(this.inlineEditBox.editorParams,{style:_9ae,dir:this.dir,lang:this.lang,textDir:this.textDir});this.editWidget=new Cls(_9b3,this.editorPlaceholder);if(this.inlineEditBox.autoSave){this.saveButton.destroy();this.cancelButton.destroy();this.saveButton=this.cancelButton=null;_9a0.destroy(this.buttonContainer);}},postCreate:function(){this.inherited(arguments);var ew=this.editWidget;if(this.inlineEditBox.autoSave){this.own(_99c.after(ew,"onChange",lang.hitch(this,"_onChange"),true),on(ew,"keydown",lang.hitch(this,"_onKeyDown")));}else{if("intermediateChanges" in ew){ew.set("intermediateChanges",true);this.own(_99c.after(ew,"onChange",lang.hitch(this,"_onIntermediateChange"),true));this.saveButton.set("disabled",true);}}},startup:function(){this.editWidget.startup();this.inherited(arguments);},_onIntermediateChange:function(){this.saveButton.set("disabled",(this.getValue()==this._resetValue)||!this.enableSave());},destroy:function(){this.editWidget.destroy(true);this.inherited(arguments);},getValue:function(){var ew=this.editWidget;return String(ew.get(("displayedValue" in ew||"_getDisplayedValueAttr" in ew)?"displayedValue":"value"));},_onKeyDown:function(e){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(e.altKey||e.ctrlKey){return;}if(e.keyCode==keys.ESCAPE){e.stopPropagation();e.preventDefault();this.cancel(true);}else{if(e.keyCode==keys.ENTER&&e.target.tagName=="INPUT"){e.stopPropagation();e.preventDefault();this._onChange();}}}},_onBlur:function(){this.inherited(arguments);if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(this.getValue()==this._resetValue){this.cancel(false);}else{if(this.enableSave()){this.save(false);}}}},_onChange:function(){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing&&this.enableSave()){fm.focus(this.inlineEditBox.displayNode);}},enableSave:function(){return this.editWidget.isValid?this.editWidget.isValid():true;},focus:function(){this.editWidget.focus();if(this.editWidget.focusNode){fm._onFocusNode(this.editWidget.focusNode);if(this.editWidget.focusNode.tagName=="INPUT"){this.defer(function(){_9a9.selectInputText(this.editWidget.focusNode);});}}}});var _9b4=_99d("dijit.InlineEditBox"+(has("dojo-bidi")?"_NoBidi":""),_9a4,{editing:false,autoSave:true,buttonSave:"",buttonCancel:"",renderAsHtml:false,editor:_9aa,editorWrapper:_9ac,editorParams:{},disabled:false,onChange:function(){},onCancel:function(){},width:"100%",value:"",noValueIndicator:has("ie")<=6?"<span style='font-family: wingdings; text-decoration: underline;'>&#160;&#160;&#160;&#160;&#x270d;&#160;&#160;&#160;&#160;</span>":"<span style='text-decoration: underline;'>&#160;&#160;&#160;&#160;&#x270d;&#160;&#160;&#160;&#160;</span>",constructor:function(){this.editorParams={};},postMixInProperties:function(){this.inherited(arguments);this.displayNode=this.srcNodeRef;this.own(on(this.displayNode,_9a3,lang.hitch(this,"_onClick")),on(this.displayNode,"mouseover, focus",lang.hitch(this,"_onMouseOver")),on(this.displayNode,"mouseout, blur",lang.hitch(this,"_onMouseOut")));this.displayNode.setAttribute("role","button");if(!this.displayNode.getAttribute("tabIndex")){this.displayNode.setAttribute("tabIndex",0);}if(!this.value&&!("value" in this.params)){this.value=lang.trim(this.renderAsHtml?this.displayNode.innerHTML:(this.displayNode.innerText||this.displayNode.textContent||""));}if(!this.value){this.displayNode.innerHTML=this.noValueIndicator;}_99f.add(this.displayNode,"dijitInlineEditBoxDisplayMode");},setDisabled:function(_9b5){_9a2.deprecated("dijit.InlineEditBox.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",_9b5);},_setDisabledAttr:function(_9b6){this.domNode.setAttribute("aria-disabled",_9b6?"true":"false");if(_9b6){this.displayNode.removeAttribute("tabIndex");}else{this.displayNode.setAttribute("tabIndex",0);}_99f.toggle(this.displayNode,"dijitInlineEditBoxDisplayModeDisabled",_9b6);this._set("disabled",_9b6);},_onMouseOver:function(){if(!this.disabled){_99f.add(this.displayNode,"dijitInlineEditBoxDisplayModeHover");}},_onMouseOut:function(){_99f.remove(this.displayNode,"dijitInlineEditBoxDisplayModeHover");},_onClick:function(e){if(this.disabled){return;}if(e){e.stopPropagation();e.preventDefault();}this._onMouseOut();this.defer("edit");},edit:function(){if(this.disabled||this.editing){return;}this._set("editing",true);this._savedTabIndex=_99e.get(this.displayNode,"tabIndex")||"0";if(!this.wrapperWidget){var _9b7=_9a0.create("span",null,this.domNode,"before");var Ewc=typeof this.editorWrapper=="string"?lang.getObject(this.editorWrapper):this.editorWrapper;this.wrapperWidget=new Ewc({value:this.value,buttonSave:this.buttonSave,buttonCancel:this.buttonCancel,dir:this.dir,lang:this.lang,tabIndex:this._savedTabIndex,editor:this.editor,inlineEditBox:this,sourceStyle:_9a1.getComputedStyle(this.displayNode),save:lang.hitch(this,"save"),cancel:lang.hitch(this,"cancel"),textDir:this.textDir},_9b7);if(!this.wrapperWidget._started){this.wrapperWidget.startup();}if(!this._started){this.startup();}}var ww=this.wrapperWidget;_99f.add(this.displayNode,"dijitOffScreen");_99f.remove(ww.domNode,"dijitOffScreen");_9a1.set(ww.domNode,{visibility:"visible"});_99e.set(this.displayNode,"tabIndex","-1");var ew=ww.editWidget;var self=this;when(ew.onLoadDeferred,lang.hitch(ww,function(){ew.set(("displayedValue" in ew||"_setDisplayedValueAttr" in ew)?"displayedValue":"value",self.value);this.defer(function(){if(ww.saveButton){ww.saveButton.set("disabled","intermediateChanges" in ew);}this.focus();this._resetValue=this.getValue();});}));},_onBlur:function(){this.inherited(arguments);if(!this.editing){}},destroy:function(){if(this.wrapperWidget&&!this.wrapperWidget._destroyed){this.wrapperWidget.destroy();delete this.wrapperWidget;}this.inherited(arguments);},_showText:function(_9b8){var ww=this.wrapperWidget;_9a1.set(ww.domNode,{visibility:"hidden"});_99f.add(ww.domNode,"dijitOffScreen");_99f.remove(this.displayNode,"dijitOffScreen");_99e.set(this.displayNode,"tabIndex",this._savedTabIndex);if(_9b8){fm.focus(this.displayNode);}},save:function(_9b9){if(this.disabled||!this.editing){return;}this._set("editing",false);var ww=this.wrapperWidget;var _9ba=ww.getValue();this.set("value",_9ba);this._showText(_9b9);},setValue:function(val){_9a2.deprecated("dijit.InlineEditBox.setValue() is deprecated. Use set('value', ...) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(val){val=lang.trim(val);var _9bb=this.renderAsHtml?val:val.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;").replace(/\n/g,"<br>");if(this.editorParams&&this.editorParams.type==="password"){this.displayNode.innerHTML="********";}else{this.displayNode.innerHTML=_9bb||this.noValueIndicator;}this._set("value",val);if(this._started){this.defer(function(){this.onChange(val);});}},getValue:function(){_9a2.deprecated("dijit.InlineEditBox.getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},cancel:function(_9bc){if(this.disabled||!this.editing){return;}this._set("editing",false);this.defer("onCancel");this._showText(_9bc);}});if(has("dojo-bidi")){_9b4=_99d("dijit.InlineEditBox",_9b4,{_setValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.displayNode);}});}_9b4._InlineEditor=_9ac;return _9b4;});},"dijit/_WidgetsInTemplateMixin":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/_base/lang","dojo/parser"],function(_9bd,_9be,_9bf,lang,_9c0){return _9bf("dijit._WidgetsInTemplateMixin",null,{_earlyTemplatedStartup:false,contextRequire:null,_beforeFillContent:function(){if(/dojoType|data-dojo-type/i.test(this.domNode.innerHTML)){var node=this.domNode;if(this.containerNode&&!this.searchContainerNode){this.containerNode.stopParser=true;}_9c0.parse(node,{noStart:!this._earlyTemplatedStartup,template:true,inherited:{dir:this.dir,lang:this.lang,textDir:this.textDir},propsThis:this,contextRequire:this.contextRequire,scope:"dojo"}).then(lang.hitch(this,function(_9c1){this._startupWidgets=_9c1;for(var i=0;i<_9c1.length;i++){this._processTemplateNode(_9c1[i],function(n,p){return n[p];},function(_9c2,type,_9c3){if(type in _9c2){return _9c2.connect(_9c2,type,_9c3);}else{return _9c2.on(type,_9c3,true);}});}if(this.containerNode&&this.containerNode.stopParser){delete this.containerNode.stopParser;}}));if(!this._startupWidgets){throw new Error(this.declaredClass+": parser returned unfilled promise (probably waiting for module auto-load), "+"unsupported by _WidgetsInTemplateMixin. Must pre-load all supporting widgets before instantiation.");}}},_processTemplateNode:function(_9c4,_9c5,_9c6){if(_9c5(_9c4,"dojoType")||_9c5(_9c4,"data-dojo-type")){return true;}return this.inherited(arguments);},startup:function(){_9bd.forEach(this._startupWidgets,function(w){if(w&&!w._started&&w.startup){w.startup();}});this._startupWidgets=null;this.inherited(arguments);}});});},"dijit/ToolbarSeparator":function(){define(["dojo/_base/declare","dojo/dom","./_Widget","./_TemplatedMixin"],function(_9c7,dom,_9c8,_9c9){return _9c7("dijit.ToolbarSeparator",[_9c8,_9c9],{templateString:"<div class=\"dijitToolbarSeparator dijitInline\" role=\"presentation\"></div>",buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});});},"dijit/PopupMenuItem":function(){define(["dojo/_base/declare","dojo/dom-style","dojo/_base/lang","dojo/query","./popup","./registry","./MenuItem","./hccss"],function(_9ca,_9cb,lang,_9cc,pm,_9cd,_9ce){return _9ca("dijit.PopupMenuItem",_9ce,{baseClass:"dijitMenuItem dijitPopupMenuItem",_fillContent:function(){if(this.srcNodeRef){var _9cf=_9cc("*",this.srcNodeRef);this.inherited(arguments,[_9cf[0]]);this.dropDownContainer=this.srcNodeRef;}},_openPopup:function(_9d0,_9d1){var _9d2=this.popup;pm.open(lang.delegate(_9d0,{popup:this.popup,around:this.domNode}));if(_9d1&&_9d2.focus){_9d2.focus();}},_closePopup:function(){pm.close(this.popup);this.popup.parentMenu=null;},startup:function(){if(this._started){return;}this.inherited(arguments);if(!this.popup){var node=_9cc("[widgetId]",this.dropDownContainer)[0];this.popup=_9cd.byNode(node);}this.ownerDocumentBody.appendChild(this.popup.domNode);this.popup.domNode.setAttribute("aria-labelledby",this.containerNode.id);this.popup.startup();this.popup.domNode.style.display="none";if(this.arrowWrapper){_9cb.set(this.arrowWrapper,"visibility","");}this.focusNode.setAttribute("aria-haspopup","true");},destroyDescendants:function(_9d3){if(this.popup){if(!this.popup._destroyed){this.popup.destroyRecursive(_9d3);}delete this.popup;}this.inherited(arguments);}});});},"dijit/CheckedMenuItem":function(){define(["dojo/_base/declare","dojo/dom-class","./MenuItem","dojo/text!./templates/CheckedMenuItem.html","./hccss"],function(_9d4,_9d5,_9d6,_9d7){return _9d4("dijit.CheckedMenuItem",_9d6,{baseClass:"dijitMenuItem dijitCheckedMenuItem",templateString:_9d7,checked:false,_setCheckedAttr:function(_9d8){this.domNode.setAttribute("aria-checked",_9d8?"true":"false");this._set("checked",_9d8);},iconClass:"",role:"menuitemcheckbox",checkedChar:"&#10003;",onChange:function(){},_onClick:function(evt){if(!this.disabled){this.set("checked",!this.checked);this.onChange(this.checked);}this.onClick(evt);}});});},"dijit/layout/AccordionContainer":function(){define(["require","dojo/_base/array","dojo/_base/declare","dojo/_base/fx","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/keys","dojo/_base/lang","dojo/sniff","dojo/topic","../focus","../_base/manager","dojo/ready","../_Widget","../_Container","../_TemplatedMixin","../_CssStateMixin","./StackContainer","./ContentPane","dojo/text!./templates/AccordionButton.html","../a11yclick"],function(_9d9,_9da,_9db,fx,dom,_9dc,_9dd,_9de,_9df,keys,lang,has,_9e0,_9e1,_9e2,_9e3,_9e4,_9e5,_9e6,_9e7,_9e8,_9e9,_9ea){function size(_9eb,dim){_9eb.resize?_9eb.resize(dim):_9df.setMarginBox(_9eb.domNode,dim);};var _9ec=_9db("dijit.layout._AccordionButton",[_9e4,_9e6,_9e7],{templateString:_9ea,label:"",_setLabelAttr:{node:"titleTextNode",type:"innerHTML"},title:"",_setTitleAttr:{node:"titleTextNode",type:"attribute",attribute:"title"},iconClassAttr:"",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitAccordionTitle",getParent:function(){return this.parent;},buildRendering:function(){this.inherited(arguments);var _9ed=this.id.replace(" ","_");_9dc.set(this.titleTextNode,"id",_9ed+"_title");this.focusNode.setAttribute("aria-labelledby",_9dc.get(this.titleTextNode,"id"));dom.setSelectable(this.domNode,false);},getTitleHeight:function(){return _9df.getMarginSize(this.domNode).h;},_onTitleClick:function(){var _9ee=this.getParent();_9ee.selectChild(this.contentWidget,true);_9e1.focus(this.focusNode);},_onTitleKeyDown:function(evt){return this.getParent()._onKeyDown(evt,this.contentWidget);},_setSelectedAttr:function(_9ef){this._set("selected",_9ef);this.focusNode.setAttribute("aria-expanded",_9ef?"true":"false");this.focusNode.setAttribute("aria-selected",_9ef?"true":"false");this.focusNode.setAttribute("tabIndex",_9ef?"0":"-1");}});if(has("dojo-bidi")){_9ec.extend({_setLabelAttr:function(_9f0){this._set("label",_9f0);_9dc.set(this.titleTextNode,"innerHTML",_9f0);this.applyTextDir(this.titleTextNode);},_setTitleAttr:function(_9f1){this._set("title",_9f1);_9dc.set(this.titleTextNode,"title",_9f1);this.applyTextDir(this.titleTextNode);}});}var _9f2=_9db("dijit.layout._AccordionInnerContainer"+(has("dojo-bidi")?"_NoBidi":""),[_9e4,_9e7],{baseClass:"dijitAccordionInnerContainer",isLayoutContainer:true,buildRendering:function(){this.domNode=_9de.place("<div class='"+this.baseClass+"' role='presentation'>",this.contentWidget.domNode,"after");var _9f3=this.contentWidget,cls=lang.isString(this.buttonWidget)?lang.getObject(this.buttonWidget):this.buttonWidget;this.button=_9f3._buttonWidget=(new cls({contentWidget:_9f3,label:_9f3.title,title:_9f3.tooltip,dir:_9f3.dir,lang:_9f3.lang,textDir:_9f3.textDir||this.textDir,iconClass:_9f3.iconClass,id:_9f3.id+"_button",parent:this.parent})).placeAt(this.domNode);this.containerNode=_9de.place("<div class='dijitAccordionChildWrapper' role='tabpanel' style='display:none'>",this.domNode);this.containerNode.setAttribute("aria-labelledby",this.button.id);_9de.place(this.contentWidget.domNode,this.containerNode);},postCreate:function(){this.inherited(arguments);var _9f4=this.button,cw=this.contentWidget;this._contentWidgetWatches=[cw.watch("title",lang.hitch(this,function(name,_9f5,_9f6){_9f4.set("label",_9f6);})),cw.watch("tooltip",lang.hitch(this,function(name,_9f7,_9f8){_9f4.set("title",_9f8);})),cw.watch("iconClass",lang.hitch(this,function(name,_9f9,_9fa){_9f4.set("iconClass",_9fa);}))];},_setSelectedAttr:function(_9fb){this._set("selected",_9fb);this.button.set("selected",_9fb);if(_9fb){var cw=this.contentWidget;if(cw.onSelected){cw.onSelected();}}},startup:function(){this.contentWidget.startup();},destroy:function(){this.button.destroyRecursive();_9da.forEach(this._contentWidgetWatches||[],function(w){w.unwatch();});delete this.contentWidget._buttonWidget;delete this.contentWidget._wrapperWidget;this.inherited(arguments);},destroyDescendants:function(_9fc){this.contentWidget.destroyRecursive(_9fc);}});if(has("dojo-bidi")){_9f2=_9db("dijit.layout._AccordionInnerContainer",_9f2,{postCreate:function(){this.inherited(arguments);var _9fd=this.button;this._contentWidgetWatches.push(this.contentWidget.watch("textDir",function(name,_9fe,_9ff){_9fd.set("textDir",_9ff);}));}});}var _a00=_9db("dijit.layout.AccordionContainer",_9e8,{duration:_9e2.defaultDuration,buttonWidget:_9ec,baseClass:"dijitAccordionContainer",buildRendering:function(){this.inherited(arguments);this.domNode.style.overflow="hidden";this.domNode.setAttribute("role","tablist");},startup:function(){if(this._started){return;}this.inherited(arguments);if(this.selectedChildWidget){this.selectedChildWidget._wrapperWidget.set("selected",true);}},layout:function(){var _a01=this.selectedChildWidget;if(!_a01){return;}var _a02=_a01._wrapperWidget.domNode,_a03=_9df.getMarginExtents(_a02),_a04=_9df.getPadBorderExtents(_a02),_a05=_a01._wrapperWidget.containerNode,_a06=_9df.getMarginExtents(_a05),_a07=_9df.getPadBorderExtents(_a05),_a08=this._contentBox;var _a09=0;_9da.forEach(this.getChildren(),function(_a0a){if(_a0a!=_a01){_a09+=_9df.getMarginSize(_a0a._wrapperWidget.domNode).h;}});this._verticalSpace=_a08.h-_a09-_a03.h-_a04.h-_a06.h-_a07.h-_a01._buttonWidget.getTitleHeight();this._containerContentBox={h:this._verticalSpace,w:this._contentBox.w-_a03.w-_a04.w-_a06.w-_a07.w};if(_a01){size(_a01,this._containerContentBox);}},_setupChild:function(_a0b){_a0b._wrapperWidget=_9f2({contentWidget:_a0b,buttonWidget:this.buttonWidget,id:_a0b.id+"_wrapper",dir:_a0b.dir,lang:_a0b.lang,textDir:_a0b.textDir||this.textDir,parent:this});this.inherited(arguments);_9de.place(_a0b.domNode,_a0b._wrapper,"replace");},removeChild:function(_a0c){if(_a0c._wrapperWidget){_9de.place(_a0c.domNode,_a0c._wrapperWidget.domNode,"after");_a0c._wrapperWidget.destroy();delete _a0c._wrapperWidget;}_9dd.remove(_a0c.domNode,"dijitHidden");this.inherited(arguments);},getChildren:function(){return _9da.map(this.inherited(arguments),function(_a0d){return _a0d.declaredClass=="dijit.layout._AccordionInnerContainer"?_a0d.contentWidget:_a0d;},this);},destroy:function(){if(this._animation){this._animation.stop();}_9da.forEach(this.getChildren(),function(_a0e){if(_a0e._wrapperWidget){_a0e._wrapperWidget.destroy();}else{_a0e.destroyRecursive();}});this.inherited(arguments);},_showChild:function(_a0f){_a0f._wrapperWidget.containerNode.style.display="block";return this.inherited(arguments);},_hideChild:function(_a10){_a10._wrapperWidget.containerNode.style.display="none";this.inherited(arguments);},_transition:function(_a11,_a12,_a13){if(has("ie")<8){_a13=false;}if(this._animation){this._animation.stop(true);delete this._animation;}var self=this;if(_a11){_a11._wrapperWidget.set("selected",true);var d=this._showChild(_a11);if(this.doLayout){size(_a11,this._containerContentBox);}}if(_a12){_a12._wrapperWidget.set("selected",false);if(!_a13){this._hideChild(_a12);}}if(_a13){var _a14=_a11._wrapperWidget.containerNode,_a15=_a12._wrapperWidget.containerNode;var _a16=_a11._wrapperWidget.containerNode,_a17=_9df.getMarginExtents(_a16),_a18=_9df.getPadBorderExtents(_a16),_a19=_a17.h+_a18.h;_a15.style.height=(self._verticalSpace-_a19)+"px";this._animation=new fx.Animation({node:_a14,duration:this.duration,curve:[1,this._verticalSpace-_a19-1],onAnimate:function(_a1a){_a1a=Math.floor(_a1a);_a14.style.height=_a1a+"px";_a15.style.height=(self._verticalSpace-_a19-_a1a)+"px";},onEnd:function(){delete self._animation;_a14.style.height="auto";_a12._wrapperWidget.containerNode.style.display="none";_a15.style.height="auto";self._hideChild(_a12);}});this._animation.onStop=this._animation.onEnd;this._animation.play();}return d;},_onKeyDown:function(e,_a1b){if(this.disabled||e.altKey||!(_a1b||e.ctrlKey)){return;}var c=e.keyCode;if((_a1b&&(c==keys.LEFT_ARROW||c==keys.UP_ARROW))||(e.ctrlKey&&c==keys.PAGE_UP)){this._adjacent(false)._buttonWidget._onTitleClick();e.stopPropagation();e.preventDefault();}else{if((_a1b&&(c==keys.RIGHT_ARROW||c==keys.DOWN_ARROW))||(e.ctrlKey&&(c==keys.PAGE_DOWN||c==keys.TAB))){this._adjacent(true)._buttonWidget._onTitleClick();e.stopPropagation();e.preventDefault();}}}});if(has("dijit-legacy-requires")){_9e3(0,function(){var _a1c=["dijit/layout/AccordionPane"];_9d9(_a1c);});}_a00._InnerContainer=_9f2;_a00._Button=_9ec;return _a00;});},"dijit/layout/StackContainer":function(){define(["dojo/_base/array","dojo/cookie","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/has","dojo/_base/lang","dojo/on","dojo/ready","dojo/topic","dojo/when","../registry","../_WidgetBase","./_LayoutWidget"],function(_a1d,_a1e,_a1f,_a20,_a21,has,lang,on,_a22,_a23,when,_a24,_a25,_a26){if(has("dijit-legacy-requires")){_a22(0,function(){var _a27=["dijit/layout/StackController"];require(_a27);});}var _a28=_a1f("dijit.layout.StackContainer",_a26,{doLayout:true,persist:false,baseClass:"dijitStackContainer",buildRendering:function(){this.inherited(arguments);_a20.add(this.domNode,"dijitLayoutContainer");},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKeyDown")));},startup:function(){if(this._started){return;}var _a29=this.getChildren();_a1d.forEach(_a29,this._setupChild,this);if(this.persist){this.selectedChildWidget=_a24.byId(_a1e(this.id+"_selectedChild"));}else{_a1d.some(_a29,function(_a2a){if(_a2a.selected){this.selectedChildWidget=_a2a;}return _a2a.selected;},this);}var _a2b=this.selectedChildWidget;if(!_a2b&&_a29[0]){_a2b=this.selectedChildWidget=_a29[0];_a2b.selected=true;}_a23.publish(this.id+"-startup",{children:_a29,selected:_a2b,textDir:this.textDir});this.inherited(arguments);},resize:function(){if(!this._hasBeenShown){this._hasBeenShown=true;var _a2c=this.selectedChildWidget;if(_a2c){this._showChild(_a2c);}}this.inherited(arguments);},_setupChild:function(_a2d){var _a2e=_a2d.domNode,_a2f=_a21.place("<div role='tabpanel' class='"+this.baseClass+"ChildWrapper dijitHidden'>",_a2d.domNode,"replace"),_a30=_a2d["aria-label"]||_a2d.title||_a2d.label;if(_a30){_a2f.setAttribute("aria-label",_a30);}_a21.place(_a2e,_a2f);_a2d._wrapper=_a2f;this.inherited(arguments);if(_a2e.style.display=="none"){_a2e.style.display="block";}_a2d.domNode.removeAttribute("title");},addChild:function(_a31,_a32){this.inherited(arguments);if(this._started){_a23.publish(this.id+"-addChild",_a31,_a32);this.layout();if(!this.selectedChildWidget){this.selectChild(_a31);}}},removeChild:function(page){var idx=_a1d.indexOf(this.getChildren(),page);this.inherited(arguments);_a21.destroy(page._wrapper);delete page._wrapper;if(this._started){_a23.publish(this.id+"-removeChild",page);}if(this._descendantsBeingDestroyed){return;}if(this.selectedChildWidget===page){this.selectedChildWidget=undefined;if(this._started){var _a33=this.getChildren();if(_a33.length){this.selectChild(_a33[Math.max(idx-1,0)]);}}}if(this._started){this.layout();}},selectChild:function(page,_a34){var d;page=_a24.byId(page);if(this.selectedChildWidget!=page){d=this._transition(page,this.selectedChildWidget,_a34);this._set("selectedChildWidget",page);_a23.publish(this.id+"-selectChild",page,this._focused);if(this.persist){_a1e(this.id+"_selectedChild",this.selectedChildWidget.id);}}return when(d||true);},_transition:function(_a35,_a36){if(_a36){this._hideChild(_a36);}var d=this._showChild(_a35);if(_a35.resize){if(this.doLayout){_a35.resize(this._containerContentBox||this._contentBox);}else{_a35.resize();}}return d;},_adjacent:function(_a37){var _a38=this.getChildren();var _a39=_a1d.indexOf(_a38,this.selectedChildWidget);_a39+=_a37?1:_a38.length-1;return _a38[_a39%_a38.length];},forward:function(){return this.selectChild(this._adjacent(true),true);},back:function(){return this.selectChild(this._adjacent(false),true);},_onKeyDown:function(e){_a23.publish(this.id+"-containerKeyDown",{e:e,page:this});},layout:function(){var _a3a=this.selectedChildWidget;if(_a3a&&_a3a.resize){if(this.doLayout){_a3a.resize(this._containerContentBox||this._contentBox);}else{_a3a.resize();}}},_showChild:function(page){var _a3b=this.getChildren();page.isFirstChild=(page==_a3b[0]);page.isLastChild=(page==_a3b[_a3b.length-1]);page._set("selected",true);if(page._wrapper){_a20.replace(page._wrapper,"dijitVisible","dijitHidden");}return (page._onShow&&page._onShow())||true;},_hideChild:function(page){page._set("selected",false);if(page._wrapper){_a20.replace(page._wrapper,"dijitHidden","dijitVisible");}page.onHide&&page.onHide();},closeChild:function(page){var _a3c=!page.onClose||page.onClose(this,page);if(_a3c){this.removeChild(page);page.destroyRecursive();}},destroyDescendants:function(_a3d){this._descendantsBeingDestroyed=true;this.selectedChildWidget=undefined;_a1d.forEach(this.getChildren(),function(_a3e){if(!_a3d){this.removeChild(_a3e);}_a3e.destroyRecursive(_a3d);},this);this._descendantsBeingDestroyed=false;}});_a28.ChildWidgetProperties={selected:false,disabled:false,closable:false,iconClass:"dijitNoIcon",showTitle:true};lang.extend(_a25,_a28.ChildWidgetProperties);return _a28;});},"dojo/cookie":function(){define(["./_base/kernel","./regexp"],function(dojo,_a3f){dojo.cookie=function(name,_a40,_a41){var c=document.cookie,ret;if(arguments.length==1){var _a42=c.match(new RegExp("(?:^|; )"+_a3f.escapeString(name)+"=([^;]*)"));ret=_a42?decodeURIComponent(_a42[1]):undefined;}else{_a41=_a41||{};var exp=_a41.expires;if(typeof exp=="number"){var d=new Date();d.setTime(d.getTime()+exp*24*60*60*1000);exp=_a41.expires=d;}if(exp&&exp.toUTCString){_a41.expires=exp.toUTCString();}_a40=encodeURIComponent(_a40);var _a43=name+"="+_a40,_a44;for(_a44 in _a41){_a43+="; "+_a44;var _a45=_a41[_a44];if(_a45!==true){_a43+="="+_a45;}}document.cookie=_a43;}return ret;};dojo.cookie.isSupported=function(){if(!("cookieEnabled" in navigator)){this("__djCookieTest__","CookiesAllowed");navigator.cookieEnabled=this("__djCookieTest__")=="CookiesAllowed";if(navigator.cookieEnabled){this("__djCookieTest__","",{expires:-1});}}return navigator.cookieEnabled;};return dojo.cookie;});},"dijit/layout/AccordionPane":function(){define(["dojo/_base/declare","dojo/_base/kernel","./ContentPane"],function(_a46,_a47,_a48){return _a46("dijit.layout.AccordionPane",_a48,{constructor:function(){_a47.deprecated("dijit.layout.AccordionPane deprecated, use ContentPane instead","","2.0");},onSelected:function(){}});});},"dijit/layout/BorderContainer":function(){define(["dojo/_base/array","dojo/cookie","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/keys","dojo/_base/lang","dojo/on","dojo/touch","../_WidgetBase","../_Widget","../_TemplatedMixin","./LayoutContainer","./utils"],function(_a49,_a4a,_a4b,_a4c,_a4d,_a4e,_a4f,keys,lang,on,_a50,_a51,_a52,_a53,_a54,_a55){var _a56=_a4b("dijit.layout._Splitter",[_a52,_a53],{live:true,templateString:"<div class=\"dijitSplitter\" data-dojo-attach-event=\"onkeydown:_onKeyDown,press:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse\" tabIndex=\"0\" role=\"separator\"><div class=\"dijitSplitterThumb\"></div></div>",constructor:function(){this._handlers=[];},postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);this._factor=/top|left/.test(this.region)?1:-1;this._cookieName=this.container.id+"_"+this.region;},buildRendering:function(){this.inherited(arguments);_a4c.add(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));if(this.container.persist){var _a57=_a4a(this._cookieName);if(_a57){this.child.domNode.style[this.horizontal?"height":"width"]=_a57;}}},_computeMaxSize:function(){var dim=this.horizontal?"h":"w",_a58=_a4e.getMarginBox(this.child.domNode)[dim],_a59=_a49.filter(this.container.getChildren(),function(_a5a){return _a5a.region=="center";})[0];var _a5b=_a4e.getContentBox(_a59.domNode)[dim]-10;return Math.min(this.child.maxSize,_a58+_a5b);},_startDrag:function(e){if(!this.cover){this.cover=_a4d.place("<div class=dijitSplitterCover></div>",this.child.domNode,"after");}_a4c.add(this.cover,"dijitSplitterCoverActive");if(this.fake){_a4d.destroy(this.fake);}if(!(this._resize=this.live)){(this.fake=this.domNode.cloneNode(true)).removeAttribute("id");_a4c.add(this.domNode,"dijitSplitterShadow");_a4d.place(this.fake,this.domNode,"after");}_a4c.add(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active");if(this.fake){_a4c.remove(this.fake,"dijitSplitterHover dijitSplitter"+(this.horizontal?"H":"V")+"Hover");}var _a5c=this._factor,_a5d=this.horizontal,axis=_a5d?"pageY":"pageX",_a5e=e[axis],_a5f=this.domNode.style,dim=_a5d?"h":"w",_a60=_a4f.getComputedStyle(this.child.domNode),_a61=_a4e.getMarginBox(this.child.domNode,_a60)[dim],max=this._computeMaxSize(),min=Math.max(this.child.minSize,_a4e.getPadBorderExtents(this.child.domNode,_a60)[dim]+10),_a62=this.region,_a63=_a62=="top"||_a62=="bottom"?"top":"left",_a64=parseInt(_a5f[_a63],10),_a65=this._resize,_a66=lang.hitch(this.container,"_layoutChildren",this.child.id),de=this.ownerDocument;this._handlers=this._handlers.concat([on(de,_a50.move,this._drag=function(e,_a67){var _a68=e[axis]-_a5e,_a69=_a5c*_a68+_a61,_a6a=Math.max(Math.min(_a69,max),min);if(_a65||_a67){_a66(_a6a);}_a5f[_a63]=_a68+_a64+_a5c*(_a6a-_a69)+"px";}),on(de,"dragstart",function(e){e.stopPropagation();e.preventDefault();}),on(this.ownerDocumentBody,"selectstart",function(e){e.stopPropagation();e.preventDefault();}),on(de,_a50.release,lang.hitch(this,"_stopDrag"))]);e.stopPropagation();e.preventDefault();},_onMouse:function(e){var o=(e.type=="mouseover"||e.type=="mouseenter");_a4c.toggle(this.domNode,"dijitSplitterHover",o);_a4c.toggle(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover",o);},_stopDrag:function(e){try{if(this.cover){_a4c.remove(this.cover,"dijitSplitterCoverActive");}if(this.fake){_a4d.destroy(this.fake);}_a4c.remove(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active dijitSplitterShadow");this._drag(e);this._drag(e,true);}finally{this._cleanupHandlers();delete this._drag;}if(this.container.persist){_a4a(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365});}},_cleanupHandlers:function(){var h;while(h=this._handlers.pop()){h.remove();}},_onKeyDown:function(e){this._resize=true;var _a6b=this.horizontal;var tick=1;switch(e.keyCode){case _a6b?keys.UP_ARROW:keys.LEFT_ARROW:tick*=-1;case _a6b?keys.DOWN_ARROW:keys.RIGHT_ARROW:break;default:return;}var _a6c=_a4e.getMarginSize(this.child.domNode)[_a6b?"h":"w"]+this._factor*tick;this.container._layoutChildren(this.child.id,Math.max(Math.min(_a6c,this._computeMaxSize()),this.child.minSize));e.stopPropagation();e.preventDefault();},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.cover;delete this.fake;this.inherited(arguments);}});var _a6d=_a4b("dijit.layout._Gutter",[_a52,_a53],{templateString:"<div class=\"dijitGutter\" role=\"presentation\"></div>",postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);},buildRendering:function(){this.inherited(arguments);_a4c.add(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"));}});var _a6e=_a4b("dijit.layout.BorderContainer",_a54,{gutters:true,liveSplitters:true,persist:false,baseClass:"dijitBorderContainer",_splitterClass:_a56,postMixInProperties:function(){if(!this.gutters){this.baseClass+="NoGutter";}this.inherited(arguments);},_setupChild:function(_a6f){this.inherited(arguments);var _a70=_a6f.region,ltr=_a6f.isLeftToRight();if(_a70=="leading"){_a70=ltr?"left":"right";}if(_a70=="trailing"){_a70=ltr?"right":"left";}if(_a70){if(_a70!="center"&&(_a6f.splitter||this.gutters)&&!_a6f._splitterWidget){var _a71=_a6f.splitter?this._splitterClass:_a6d;if(lang.isString(_a71)){_a71=lang.getObject(_a71);}var _a72=new _a71({id:_a6f.id+"_splitter",container:this,child:_a6f,region:_a70,live:this.liveSplitters});_a72.isSplitter=true;_a6f._splitterWidget=_a72;var _a73=_a70=="bottom"||_a70==(this.isLeftToRight()?"right":"left");_a4d.place(_a72.domNode,_a6f.domNode,_a73?"before":"after");_a72.startup();}}},layout:function(){this._layoutChildren();},removeChild:function(_a74){var _a75=_a74._splitterWidget;if(_a75){_a75.destroy();delete _a74._splitterWidget;}this.inherited(arguments);},getChildren:function(){return _a49.filter(this.inherited(arguments),function(_a76){return !_a76.isSplitter;});},getSplitter:function(_a77){return _a49.filter(this.getChildren(),function(_a78){return _a78.region==_a77;})[0]._splitterWidget;},resize:function(_a79,_a7a){if(!this.cs||!this.pe){var node=this.domNode;this.cs=_a4f.getComputedStyle(node);this.pe=_a4e.getPadExtents(node,this.cs);this.pe.r=_a4f.toPixelValue(node,this.cs.paddingRight);this.pe.b=_a4f.toPixelValue(node,this.cs.paddingBottom);_a4f.set(node,"padding","0px");}this.inherited(arguments);},_layoutChildren:function(_a7b,_a7c){if(!this._borderBox||!this._borderBox.h){return;}var _a7d=[];_a49.forEach(this._getOrderedChildren(),function(pane){_a7d.push(pane);if(pane._splitterWidget){_a7d.push(pane._splitterWidget);}});var dim={l:this.pe.l,t:this.pe.t,w:this._borderBox.w-this.pe.w,h:this._borderBox.h-this.pe.h};_a55.layoutChildren(this.domNode,dim,_a7d,_a7b,_a7c);},destroyRecursive:function(){_a49.forEach(this.getChildren(),function(_a7e){var _a7f=_a7e._splitterWidget;if(_a7f){_a7f.destroy();}delete _a7e._splitterWidget;});this.inherited(arguments);}});_a6e.ChildWidgetProperties={splitter:false,minSize:0,maxSize:Infinity};lang.mixin(_a6e.ChildWidgetProperties,_a54.ChildWidgetProperties);lang.extend(_a51,_a6e.ChildWidgetProperties);_a6e._Splitter=_a56;_a6e._Gutter=_a6d;return _a6e;});},"dijit/layout/LayoutContainer":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-style","dojo/_base/lang","../_WidgetBase","./_LayoutWidget","./utils"],function(_a80,_a81,_a82,_a83,lang,_a84,_a85,_a86){var _a87=_a81("dijit.layout.LayoutContainer",_a85,{design:"headline",baseClass:"dijitLayoutContainer",startup:function(){if(this._started){return;}_a80.forEach(this.getChildren(),this._setupChild,this);this.inherited(arguments);},_setupChild:function(_a88){this.inherited(arguments);var _a89=_a88.region;if(_a89){_a82.add(_a88.domNode,this.baseClass+"Pane");}},_getOrderedChildren:function(){var _a8a=_a80.map(this.getChildren(),function(_a8b,idx){return {pane:_a8b,weight:[_a8b.region=="center"?Infinity:0,_a8b.layoutPriority,(this.design=="sidebar"?1:-1)*(/top|bottom/.test(_a8b.region)?1:-1),idx]};},this);_a8a.sort(function(a,b){var aw=a.weight,bw=b.weight;for(var i=0;i<aw.length;i++){if(aw[i]!=bw[i]){return aw[i]-bw[i];}}return 0;});return _a80.map(_a8a,function(w){return w.pane;});},layout:function(){_a86.layoutChildren(this.domNode,this._contentBox,this._getOrderedChildren());},addChild:function(_a8c,_a8d){this.inherited(arguments);if(this._started){this.layout();}},removeChild:function(_a8e){this.inherited(arguments);if(this._started){this.layout();}_a82.remove(_a8e.domNode,this.baseClass+"Pane");_a83.set(_a8e.domNode,{top:"auto",bottom:"auto",left:"auto",right:"auto",position:"static"});_a83.set(_a8e.domNode,/top|bottom/.test(_a8e.region)?"width":"height","auto");}});_a87.ChildWidgetProperties={region:"",layoutAlign:"",layoutPriority:0};lang.extend(_a84,_a87.ChildWidgetProperties);return _a87;});},"dijit/layout/TabContainer":function(){define(["dojo/_base/lang","dojo/_base/declare","./_TabContainerBase","./TabController","./ScrollingTabController"],function(lang,_a8f,_a90,_a91,_a92){return _a8f("dijit.layout.TabContainer",_a90,{useMenu:true,useSlider:true,controllerWidget:"",_makeController:function(_a93){var cls=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout"),_a91=typeof this.controllerWidget=="string"?lang.getObject(this.controllerWidget):this.controllerWidget;return new _a91({id:this.id+"_tablist",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":cls,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},_a93);},postMixInProperties:function(){this.inherited(arguments);if(!this.controllerWidget){this.controllerWidget=(this.tabPosition=="top"||this.tabPosition=="bottom")&&!this.nested?_a92:_a91;}}});});},"dijit/layout/_TabContainerBase":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","./StackContainer","./utils","../_TemplatedMixin","dojo/text!./templates/TabContainer.html"],function(_a94,_a95,_a96,_a97,_a98,_a99,_a9a,_a9b){return _a94("dijit.layout._TabContainerBase",[_a98,_a9a],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:false,nested:false,templateString:_a9b,postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.srcNodeRef&&_a97.set(this.srcNodeRef,"visibility","hidden");this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);this.tablist=this._makeController(this.tablistNode);if(!this.doLayout){_a95.add(this.domNode,"dijitTabContainerNoLayout");}if(this.nested){_a95.add(this.domNode,"dijitTabContainerNested");_a95.add(this.tablist.containerNode,"dijitTabContainerTabListNested");_a95.add(this.tablistSpacer,"dijitTabContainerSpacerNested");_a95.add(this.containerNode,"dijitTabPaneWrapperNested");}else{_a95.add(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"));}},_setupChild:function(tab){_a95.add(tab.domNode,"dijitTabPane");this.inherited(arguments);},removeChild:function(_a9c){_a95.remove(_a9c.domNode,"dijitTabPane");this.inherited(arguments);},startup:function(){if(this._started){return;}this.tablist.startup();this.inherited(arguments);},layout:function(){if(!this._contentBox||typeof (this._contentBox.l)=="undefined"){return;}var sc=this.selectedChildWidget;if(this.doLayout){var _a9d=this.tabPosition.replace(/-h/,"");this.tablist.region=_a9d;var _a9e=[this.tablist,{domNode:this.tablistSpacer,region:_a9d},{domNode:this.containerNode,region:"center"}];_a99.layoutChildren(this.domNode,this._contentBox,_a9e);this._containerContentBox=_a99.marginBox2contentBox(this.containerNode,_a9e[2]);if(sc&&sc.resize){sc.resize(this._containerContentBox);}}else{if(this.tablist.resize){var s=this.tablist.domNode.style;s.width="0";var _a9f=_a96.getContentBox(this.domNode).w;s.width="";this.tablist.resize({w:_a9f});}if(sc&&sc.resize){sc.resize();}}},destroy:function(_aa0){if(this.tablist){this.tablist.destroy(_aa0);}this.inherited(arguments);}});});},"dijit/layout/TabController":function(){define(["dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/has","dojo/i18n","dojo/_base/lang","./StackController","../registry","../Menu","../MenuItem","dojo/text!./templates/_TabButton.html","dojo/i18n!../nls/common"],function(_aa1,dom,_aa2,_aa3,has,i18n,lang,_aa4,_aa5,Menu,_aa6,_aa7){var _aa8=_aa1("dijit.layout._TabButton"+(has("dojo-bidi")?"_NoBidi":""),_aa4.StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:_aa7,_setNameAttr:"focusNode",scrollOnFocus:false,buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.containerNode,false);},startup:function(){this.inherited(arguments);var n=this.domNode;this.defer(function(){n.className=n.className;},1);},_setCloseButtonAttr:function(disp){this._set("closeButton",disp);_aa3.toggle(this.domNode,"dijitClosable",disp);this.closeNode.style.display=disp?"":"none";if(disp){var _aa9=i18n.getLocalization("dijit","common");if(this.closeNode){_aa2.set(this.closeNode,"title",_aa9.itemClose);}}},_setDisabledAttr:function(_aaa){this.inherited(arguments);if(this.closeNode){if(_aaa){_aa2.remove(this.closeNode,"title");}else{var _aab=i18n.getLocalization("dijit","common");_aa2.set(this.closeNode,"title",_aab.itemClose);}}},_setLabelAttr:function(_aac){this.inherited(arguments);if(!this.showLabel&&!this.params.title){this.iconNode.alt=lang.trim(this.containerNode.innerText||this.containerNode.textContent||"");}}});if(has("dojo-bidi")){_aa8=_aa1("dijit.layout._TabButton",_aa8,{_setLabelAttr:function(_aad){this.inherited(arguments);this.applyTextDir(this.iconNode,this.iconNode.alt);}});}var _aae=_aa1("dijit.layout.TabController",_aa4,{baseClass:"dijitTabController",templateString:"<div role='tablist' data-dojo-attach-event='onkeydown:onkeydown'></div>",tabPosition:"top",buttonWidget:_aa8,buttonWidgetCloseClass:"dijitTabCloseButton",postCreate:function(){this.inherited(arguments);var _aaf=new Menu({id:this.id+"_Menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,targetNodeIds:[this.domNode],selector:function(node){return _aa3.contains(node,"dijitClosable")&&!_aa3.contains(node,"dijitTabDisabled");}});this.own(_aaf);var _ab0=i18n.getLocalization("dijit","common"),_ab1=this;_aaf.addChild(new _aa6({label:_ab0.itemClose,ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,onClick:function(evt){var _ab2=_aa5.byNode(this.getParent().currentTarget);_ab1.onCloseButtonClick(_ab2.page);}}));}});_aae.TabButton=_aa8;return _aae;});},"dijit/layout/StackController":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","../focus","../registry","../_Widget","../_TemplatedMixin","../_Container","../form/ToggleButton","dojo/touch"],function(_ab3,_ab4,_ab5,_ab6,keys,lang,on,_ab7,_ab8,_ab9,_aba,_abb,_abc,_abd){var _abe=_ab4("dijit.layout._StackButton",_abd,{tabIndex:"-1",closeButton:false,_aria_attr:"aria-selected",buildRendering:function(evt){this.inherited(arguments);(this.focusNode||this.domNode).setAttribute("role","tab");}});var _abf=_ab4("dijit.layout.StackController",[_aba,_abb,_abc],{baseClass:"dijitStackController",templateString:"<span role='tablist' data-dojo-attach-event='onkeydown'></span>",containerId:"",buttonWidget:_abe,buttonWidgetCloseClass:"dijitStackCloseButton",pane2button:function(id){return _ab9.byId(this.id+"_"+id);},postCreate:function(){this.inherited(arguments);this.own(_ab7.subscribe(this.containerId+"-startup",lang.hitch(this,"onStartup")),_ab7.subscribe(this.containerId+"-addChild",lang.hitch(this,"onAddChild")),_ab7.subscribe(this.containerId+"-removeChild",lang.hitch(this,"onRemoveChild")),_ab7.subscribe(this.containerId+"-selectChild",lang.hitch(this,"onSelectChild")),_ab7.subscribe(this.containerId+"-containerKeyDown",lang.hitch(this,"onContainerKeyDown")));this.containerNode.dojoClick=true;this.own(on(this.containerNode,"click",lang.hitch(this,function(evt){var _ac0=_ab9.getEnclosingWidget(evt.target);if(_ac0!=this.containerNode&&!_ac0.disabled&&_ac0.page){for(var _ac1=evt.target;_ac1!==this.containerNode;_ac1=_ac1.parentNode){if(_ab5.contains(_ac1,this.buttonWidgetCloseClass)){this.onCloseButtonClick(_ac0.page);break;}else{if(_ac1==_ac0.domNode){this.onButtonClick(_ac0.page);break;}}}}})));},onStartup:function(info){this.textDir=info.textDir;_ab3.forEach(info.children,this.onAddChild,this);if(info.selected){this.onSelectChild(info.selected);}var _ac2=_ab9.byId(this.containerId).containerNode,_ac3=lang.hitch(this,"pane2button"),_ac4={"title":"label","showtitle":"showLabel","iconclass":"iconClass","closable":"closeButton","tooltip":"title","disabled":"disabled","textdir":"textdir"},_ac5=function(attr,_ac6){return on(_ac2,"attrmodified-"+attr,function(evt){var _ac7=_ac3(evt.detail&&evt.detail.widget&&evt.detail.widget.id);if(_ac7){_ac7.set(_ac6,evt.detail.newValue);}});};for(var attr in _ac4){this.own(_ac5(attr,_ac4[attr]));}},destroy:function(_ac8){this.destroyDescendants(_ac8);this.inherited(arguments);},onAddChild:function(page,_ac9){var Cls=lang.isString(this.buttonWidget)?lang.getObject(this.buttonWidget):this.buttonWidget;var _aca=new Cls({id:this.id+"_"+page.id,name:this.id+"_"+page.id,label:page.title,disabled:page.disabled,ownerDocument:this.ownerDocument,dir:page.dir,lang:page.lang,textDir:page.textDir||this.textDir,showLabel:page.showTitle,iconClass:page.iconClass,closeButton:page.closable,title:page.tooltip,page:page});this.addChild(_aca,_ac9);page.controlButton=_aca;if(!this._currentChild){this.onSelectChild(page);}var _acb=page._wrapper.getAttribute("aria-labelledby")?page._wrapper.getAttribute("aria-labelledby")+" "+_aca.id:_aca.id;page._wrapper.removeAttribute("aria-label");page._wrapper.setAttribute("aria-labelledby",_acb);},onRemoveChild:function(page){if(this._currentChild===page){this._currentChild=null;}var _acc=this.pane2button(page.id);if(_acc){this.removeChild(_acc);_acc.destroy();}delete page.controlButton;},onSelectChild:function(page){if(!page){return;}if(this._currentChild){var _acd=this.pane2button(this._currentChild.id);_acd.set("checked",false);_acd.focusNode.setAttribute("tabIndex","-1");}var _ace=this.pane2button(page.id);_ace.set("checked",true);this._currentChild=page;_ace.focusNode.setAttribute("tabIndex","0");var _acf=_ab9.byId(this.containerId);},onButtonClick:function(page){var _ad0=this.pane2button(page.id);_ab8.focus(_ad0.focusNode);if(this._currentChild&&this._currentChild.id===page.id){_ad0.set("checked",true);}var _ad1=_ab9.byId(this.containerId);_ad1.selectChild(page);},onCloseButtonClick:function(page){var _ad2=_ab9.byId(this.containerId);_ad2.closeChild(page);if(this._currentChild){var b=this.pane2button(this._currentChild.id);if(b){_ab8.focus(b.focusNode||b.domNode);}}},adjacent:function(_ad3){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition))){_ad3=!_ad3;}var _ad4=this.getChildren();var idx=_ab3.indexOf(_ad4,this.pane2button(this._currentChild.id)),_ad5=_ad4[idx];var _ad6;do{idx=(idx+(_ad3?1:_ad4.length-1))%_ad4.length;_ad6=_ad4[idx];}while(_ad6.disabled&&_ad6!=_ad5);return _ad6;},onkeydown:function(e,_ad7){if(this.disabled||e.altKey){return;}var _ad8=null;if(e.ctrlKey||!e._djpage){switch(e.keyCode){case keys.LEFT_ARROW:case keys.UP_ARROW:if(!e._djpage){_ad8=false;}break;case keys.PAGE_UP:if(e.ctrlKey){_ad8=false;}break;case keys.RIGHT_ARROW:case keys.DOWN_ARROW:if(!e._djpage){_ad8=true;}break;case keys.PAGE_DOWN:if(e.ctrlKey){_ad8=true;}break;case keys.HOME:var _ad9=this.getChildren();for(var idx=0;idx<_ad9.length;idx++){var _ada=_ad9[idx];if(!_ada.disabled){this.onButtonClick(_ada.page);break;}}e.stopPropagation();e.preventDefault();break;case keys.END:var _ad9=this.getChildren();for(var idx=_ad9.length-1;idx>=0;idx--){var _ada=_ad9[idx];if(!_ada.disabled){this.onButtonClick(_ada.page);break;}}e.stopPropagation();e.preventDefault();break;case keys.DELETE:case "W".charCodeAt(0):if(this._currentChild.closable&&(e.keyCode==keys.DELETE||e.ctrlKey)){this.onCloseButtonClick(this._currentChild);e.stopPropagation();e.preventDefault();}break;case keys.TAB:if(e.ctrlKey){this.onButtonClick(this.adjacent(!e.shiftKey).page);e.stopPropagation();e.preventDefault();}break;}if(_ad8!==null){this.onButtonClick(this.adjacent(_ad8).page);e.stopPropagation();e.preventDefault();}}},onContainerKeyDown:function(info){info.e._djpage=info.page;this.onkeydown(info.e);}});_abf.StackButton=_abe;return _abf;});},"dijit/Menu":function(){define(["require","dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-geometry","dojo/dom-style","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/_base/window","dojo/window","./popup","./DropDownMenu","dojo/ready"],function(_adb,_adc,_add,dom,_ade,_adf,_ae0,keys,lang,on,has,win,_ae1,pm,_ae2,_ae3){if(has("dijit-legacy-requires")){_ae3(0,function(){var _ae4=["dijit/MenuItem","dijit/PopupMenuItem","dijit/CheckedMenuItem","dijit/MenuSeparator"];_adb(_ae4);});}return _add("dijit.Menu",_ae2,{constructor:function(){this._bindings=[];},targetNodeIds:[],selector:"",contextMenuForWindow:false,leftClickToOpen:false,refocus:true,postCreate:function(){if(this.contextMenuForWindow){this.bindDomNode(this.ownerDocumentBody);}else{_adc.forEach(this.targetNodeIds,this.bindDomNode,this);}this.inherited(arguments);},_iframeContentWindow:function(_ae5){return _ae1.get(this._iframeContentDocument(_ae5))||this._iframeContentDocument(_ae5)["__parent__"]||(_ae5.name&&document.frames[_ae5.name])||null;},_iframeContentDocument:function(_ae6){return _ae6.contentDocument||(_ae6.contentWindow&&_ae6.contentWindow.document)||(_ae6.name&&document.frames[_ae6.name]&&document.frames[_ae6.name].document)||null;},bindDomNode:function(node){node=dom.byId(node,this.ownerDocument);var cn;if(node.tagName.toLowerCase()=="iframe"){var _ae7=node,_ae8=this._iframeContentWindow(_ae7);cn=win.body(_ae8.document);}else{cn=(node==win.body(this.ownerDocument)?this.ownerDocument.documentElement:node);}var _ae9={node:node,iframe:_ae7};_ade.set(node,"_dijitMenu"+this.id,this._bindings.push(_ae9));var _aea=lang.hitch(this,function(cn){var _aeb=this.selector,_aec=_aeb?function(_aed){return on.selector(_aeb,_aed);}:function(_aee){return _aee;},self=this;return [on(cn,_aec(this.leftClickToOpen?"click":"contextmenu"),function(evt){evt.stopPropagation();evt.preventDefault();if((new Date()).getTime()<self._lastKeyDown+500){return;}self._scheduleOpen(this,_ae7,{x:evt.pageX,y:evt.pageY},evt.target);}),on(cn,_aec("keydown"),function(evt){if(evt.keyCode==93||(evt.shiftKey&&evt.keyCode==keys.F10)||(self.leftClickToOpen&&evt.keyCode==keys.SPACE)){evt.stopPropagation();evt.preventDefault();self._scheduleOpen(this,_ae7,null,evt.target);self._lastKeyDown=(new Date()).getTime();}})];});_ae9.connects=cn?_aea(cn):[];if(_ae7){_ae9.onloadHandler=lang.hitch(this,function(){var _aef=this._iframeContentWindow(_ae7),cn=win.body(_aef.document);_ae9.connects=_aea(cn);});if(_ae7.addEventListener){_ae7.addEventListener("load",_ae9.onloadHandler,false);}else{_ae7.attachEvent("onload",_ae9.onloadHandler);}}},unBindDomNode:function(_af0){var node;try{node=dom.byId(_af0,this.ownerDocument);}catch(e){return;}var _af1="_dijitMenu"+this.id;if(node&&_ade.has(node,_af1)){var bid=_ade.get(node,_af1)-1,b=this._bindings[bid],h;while((h=b.connects.pop())){h.remove();}var _af2=b.iframe;if(_af2){if(_af2.removeEventListener){_af2.removeEventListener("load",b.onloadHandler,false);}else{_af2.detachEvent("onload",b.onloadHandler);}}_ade.remove(node,_af1);delete this._bindings[bid];}},_scheduleOpen:function(_af3,_af4,_af5,_af6){if(!this._openTimer){this._openTimer=this.defer(function(){delete this._openTimer;this._openMyself({target:_af6,delegatedTarget:_af3,iframe:_af4,coords:_af5});},1);}},_openMyself:function(args){var _af7=args.target,_af8=args.iframe,_af9=args.coords,_afa=!_af9;this.currentTarget=args.delegatedTarget;if(_af9){if(_af8){var ifc=_adf.position(_af8,true),_afb=this._iframeContentWindow(_af8),_afc=_adf.docScroll(_afb.document);var cs=_ae0.getComputedStyle(_af8),tp=_ae0.toPixelValue,left=(has("ie")&&has("quirks")?0:tp(_af8,cs.paddingLeft))+(has("ie")&&has("quirks")?tp(_af8,cs.borderLeftWidth):0),top=(has("ie")&&has("quirks")?0:tp(_af8,cs.paddingTop))+(has("ie")&&has("quirks")?tp(_af8,cs.borderTopWidth):0);_af9.x+=ifc.x+left-_afc.x;_af9.y+=ifc.y+top-_afc.y;}}else{_af9=_adf.position(_af7,true);_af9.x+=10;_af9.y+=10;}var self=this;var _afd=this._focusManager.get("prevNode");var _afe=this._focusManager.get("curNode");var _aff=!_afe||(dom.isDescendant(_afe,this.domNode))?_afd:_afe;function _b00(){if(self.refocus&&_aff){_aff.focus();}pm.close(self);};pm.open({popup:this,x:_af9.x,y:_af9.y,onExecute:_b00,onCancel:_b00,orient:this.isLeftToRight()?"L":"R"});this.focus();if(!_afa){this.defer(function(){this._cleanUp(true);});}this._onBlur=function(){this.inherited("_onBlur",arguments);pm.close(this);};},destroy:function(){_adc.forEach(this._bindings,function(b){if(b){this.unBindDomNode(b.node);}},this);this.inherited(arguments);}});});},"dijit/layout/ScrollingTabController":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/fx","dojo/_base/lang","dojo/on","dojo/query","dojo/sniff","../registry","dojo/text!./templates/ScrollingTabController.html","dojo/text!./templates/_ScrollingTabControllerButton.html","./TabController","./utils","../_WidgetsInTemplateMixin","../Menu","../MenuItem","../form/Button","../_HasDropDown","dojo/NodeList-dom","../a11yclick"],function(_b01,_b02,_b03,_b04,_b05,fx,lang,on,_b06,has,_b07,_b08,_b09,_b0a,_b0b,_b0c,Menu,_b0d,_b0e,_b0f){var _b10=_b02("dijit.layout.ScrollingTabController",[_b0a,_b0c],{baseClass:"dijitTabController dijitScrollingTabController",templateString:_b08,useMenu:true,useSlider:true,tabStripClass:"",_minScroll:5,_setClassAttr:{node:"containerNode",type:"class"},buildRendering:function(){this.inherited(arguments);var n=this.domNode;this.scrollNode=this.tablistWrapper;this._initButtons();if(!this.tabStripClass){this.tabStripClass="dijitTabContainer"+this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"")+"None";_b03.add(n,"tabStrip-disabled");}_b03.add(this.tablistWrapper,this.tabStripClass);},onStartup:function(){this.inherited(arguments);_b05.set(this.domNode,"visibility","");this._postStartup=true;this.own(on(this.containerNode,"attrmodified-label, attrmodified-iconclass",lang.hitch(this,function(evt){if(this._dim){this.resize(this._dim);}})));},onAddChild:function(page,_b11){this.inherited(arguments);_b05.set(this.containerNode,"width",(_b05.get(this.containerNode,"width")+200)+"px");},onRemoveChild:function(page,_b12){var _b13=this.pane2button(page.id);if(this._selectedTab===_b13.domNode){this._selectedTab=null;}this.inherited(arguments);},_initButtons:function(){this._btnWidth=0;this._buttons=_b06("> .tabStripButton",this.domNode).filter(function(btn){if((this.useMenu&&btn==this._menuBtn.domNode)||(this.useSlider&&(btn==this._rightBtn.domNode||btn==this._leftBtn.domNode))){this._btnWidth+=_b04.getMarginSize(btn).w;return true;}else{_b05.set(btn,"display","none");return false;}},this);},_getTabsWidth:function(){var _b14=this.getChildren();if(_b14.length){var _b15=_b14[this.isLeftToRight()?0:_b14.length-1].domNode,_b16=_b14[this.isLeftToRight()?_b14.length-1:0].domNode;return _b16.offsetLeft+_b16.offsetWidth-_b15.offsetLeft;}else{return 0;}},_enableBtn:function(_b17){var _b18=this._getTabsWidth();_b17=_b17||_b05.get(this.scrollNode,"width");return _b18>0&&_b17<_b18;},resize:function(dim){this._dim=dim;this.scrollNode.style.height="auto";var cb=this._contentBox=_b0b.marginBox2contentBox(this.domNode,{h:0,w:dim.w});cb.h=this.scrollNode.offsetHeight;_b04.setContentSize(this.domNode,cb);var _b19=this._enableBtn(this._contentBox.w);this._buttons.style("display",_b19?"":"none");this._leftBtn.region="left";this._rightBtn.region="right";this._menuBtn.region=this.isLeftToRight()?"right":"left";_b0b.layoutChildren(this.domNode,this._contentBox,[this._menuBtn,this._leftBtn,this._rightBtn,{domNode:this.scrollNode,region:"center"}]);if(this._selectedTab){if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}this.scrollNode.scrollLeft=this._convertToScrollLeft(this._getScrollForSelectedTab());}this._setButtonClass(this._getScroll());this._postResize=true;return {h:this._contentBox.h,w:dim.w};},_getScroll:function(){return (this.isLeftToRight()||has("ie")<8||(has("trident")&&has("quirks"))||has("webkit"))?this.scrollNode.scrollLeft:_b05.get(this.containerNode,"width")-_b05.get(this.scrollNode,"width")+(has("trident")||has("edge")?-1:1)*this.scrollNode.scrollLeft;},_convertToScrollLeft:function(val){if(this.isLeftToRight()||has("ie")<8||(has("trident")&&has("quirks"))||has("webkit")){return val;}else{var _b1a=_b05.get(this.containerNode,"width")-_b05.get(this.scrollNode,"width");return (has("trident")||has("edge")?-1:1)*(val-_b1a);}},onSelectChild:function(page,_b1b){var tab=this.pane2button(page.id);if(!tab){return;}var node=tab.domNode;if(node!=this._selectedTab){this._selectedTab=node;if(this._postResize){var sl=this._getScroll();if(sl>node.offsetLeft||sl+_b05.get(this.scrollNode,"width")<node.offsetLeft+_b05.get(node,"width")){var anim=this.createSmoothScroll();if(_b1b){anim.onEnd=function(){tab.focus();};}anim.play();}else{if(_b1b){tab.focus();}}}}this.inherited(arguments);},_getScrollBounds:function(){var _b1c=this.getChildren(),_b1d=_b05.get(this.scrollNode,"width"),_b1e=_b05.get(this.containerNode,"width"),_b1f=_b1e-_b1d,_b20=this._getTabsWidth();if(_b1c.length&&_b20>_b1d){return {min:this.isLeftToRight()?0:_b1c[_b1c.length-1].domNode.offsetLeft,max:this.isLeftToRight()?(_b1c[_b1c.length-1].domNode.offsetLeft+_b1c[_b1c.length-1].domNode.offsetWidth)-_b1d:_b1f};}else{var _b21=this.isLeftToRight()?0:_b1f;return {min:_b21,max:_b21};}},_getScrollForSelectedTab:function(){var w=this.scrollNode,n=this._selectedTab,_b22=_b05.get(this.scrollNode,"width"),_b23=this._getScrollBounds();var pos=(n.offsetLeft+_b05.get(n,"width")/2)-_b22/2;pos=Math.min(Math.max(pos,_b23.min),_b23.max);return pos;},createSmoothScroll:function(x){if(arguments.length>0){var _b24=this._getScrollBounds();x=Math.min(Math.max(x,_b24.min),_b24.max);}else{x=this._getScrollForSelectedTab();}if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}var self=this,w=this.scrollNode,anim=new fx.Animation({beforeBegin:function(){if(this.curve){delete this.curve;}var oldS=w.scrollLeft,newS=self._convertToScrollLeft(x);anim.curve=new fx._Line(oldS,newS);},onAnimate:function(val){w.scrollLeft=val;}});this._anim=anim;this._setButtonClass(x);return anim;},_getBtnNode:function(e){var n=e.target;while(n&&!_b03.contains(n,"tabStripButton")){n=n.parentNode;}return n;},doSlideRight:function(e){this.doSlide(1,this._getBtnNode(e));},doSlideLeft:function(e){this.doSlide(-1,this._getBtnNode(e));},doSlide:function(_b25,node){if(node&&_b03.contains(node,"dijitTabDisabled")){return;}var _b26=_b05.get(this.scrollNode,"width");var d=(_b26*0.75)*_b25;var to=this._getScroll()+d;this._setButtonClass(to);this.createSmoothScroll(to).play();},_setButtonClass:function(_b27){var _b28=this._getScrollBounds();this._leftBtn.set("disabled",_b27<=_b28.min);this._rightBtn.set("disabled",_b27>=_b28.max);}});var _b29=_b02("dijit.layout._ScrollingTabControllerButtonMixin",null,{baseClass:"dijitTab tabStripButton",templateString:_b09,tabIndex:"",isFocusable:function(){return false;}});_b02("dijit.layout._ScrollingTabControllerButton",[_b0e,_b29]);_b02("dijit.layout._ScrollingTabControllerMenuButton",[_b0e,_b0f,_b29],{containerId:"",tabIndex:"-1",isLoaded:function(){return false;},loadDropDown:function(_b2a){this.dropDown=new Menu({id:this.containerId+"_menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir});var _b2b=_b07.byId(this.containerId);_b01.forEach(_b2b.getChildren(),function(page){var _b2c=new _b0d({id:page.id+"_stcMi",label:page.title,iconClass:page.iconClass,disabled:page.disabled,ownerDocument:this.ownerDocument,dir:page.dir,lang:page.lang,textDir:page.textDir||_b2b.textDir,onClick:function(){_b2b.selectChild(page);}});this.dropDown.addChild(_b2c);},this);_b2a();},closeDropDown:function(_b2d){this.inherited(arguments);if(this.dropDown){this._popupStateNode.removeAttribute("aria-owns");this.dropDown.destroyRecursive();delete this.dropDown;}}});return _b10;});},"dijit/ProgressBar":function(){define(["require","dojo/_base/declare","dojo/dom-class","dojo/_base/lang","dojo/number","./_Widget","./_TemplatedMixin","dojo/text!./templates/ProgressBar.html"],function(_b2e,_b2f,_b30,lang,_b31,_b32,_b33,_b34){return _b2f("dijit.ProgressBar",[_b32,_b33],{progress:"0",value:"",maximum:100,places:0,indeterminate:false,label:"",name:"",templateString:_b34,_indeterminateHighContrastImagePath:_b2e.toUrl("./themes/a11y/indeterminate_progress.gif"),postMixInProperties:function(){this.inherited(arguments);if(!(this.params&&"value" in this.params)){this.value=this.indeterminate?Infinity:this.progress;}},buildRendering:function(){this.inherited(arguments);this.indeterminateHighContrastImage.setAttribute("src",this._indeterminateHighContrastImagePath.toString());this.update();},_setDirAttr:function(val){var rtl=val.toLowerCase()=="rtl";_b30.toggle(this.domNode,"dijitProgressBarRtl",rtl);_b30.toggle(this.domNode,"dijitProgressBarIndeterminateRtl",this.indeterminate&&rtl);this.inherited(arguments);},update:function(_b35){lang.mixin(this,_b35||{});var tip=this.internalProgress,ap=this.domNode;var _b36=1;if(this.indeterminate){ap.removeAttribute("aria-valuenow");}else{if(String(this.progress).indexOf("%")!=-1){_b36=Math.min(parseFloat(this.progress)/100,1);this.progress=_b36*this.maximum;}else{this.progress=Math.min(this.progress,this.maximum);_b36=this.maximum?this.progress/this.maximum:0;}ap.setAttribute("aria-valuenow",this.progress);}ap.setAttribute("aria-labelledby",this.labelNode.id);ap.setAttribute("aria-valuemin",0);ap.setAttribute("aria-valuemax",this.maximum);this.labelNode.innerHTML=this.report(_b36);_b30.toggle(this.domNode,"dijitProgressBarIndeterminate",this.indeterminate);_b30.toggle(this.domNode,"dijitProgressBarIndeterminateRtl",this.indeterminate&&!this.isLeftToRight());tip.style.width=(_b36*100)+"%";this.onChange();},_setValueAttr:function(v){this._set("value",v);if(v==Infinity){this.update({indeterminate:true});}else{this.update({indeterminate:false,progress:v});}},_setLabelAttr:function(_b37){this._set("label",_b37);this.update();},_setIndeterminateAttr:function(_b38){this._set("indeterminate",_b38);this.update();},report:function(_b39){return this.label?this.label:(this.indeterminate?"&#160;":_b31.format(_b39,{type:"percent",places:this.places,locale:this.lang}));},onChange:function(){}});});},"dojo/number":function(){define(["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(lang,i18n,_b3a,_b3b,_b3c){var _b3d={};lang.setObject("dojo.number",_b3d);_b3d.format=function(_b3e,_b3f){_b3f=lang.mixin({},_b3f||{});var _b40=i18n.normalizeLocale(_b3f.locale),_b41=i18n.getLocalization("dojo.cldr","number",_b40);_b3f.customs=_b41;var _b42=_b3f.pattern||_b41[(_b3f.type||"decimal")+"Format"];if(isNaN(_b3e)||Math.abs(_b3e)==Infinity){return null;}return _b3d._applyPattern(_b3e,_b42,_b3f);};_b3d._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;_b3d._applyPattern=function(_b43,_b44,_b45){_b45=_b45||{};var _b46=_b45.customs.group,_b47=_b45.customs.decimal,_b48=_b44.split(";"),_b49=_b48[0];_b44=_b48[(_b43<0)?1:0]||("-"+_b49);if(_b44.indexOf("%")!=-1){_b43*=100;}else{if(_b44.indexOf("‰")!=-1){_b43*=1000;}else{if(_b44.indexOf("¤")!=-1){_b46=_b45.customs.currencyGroup||_b46;_b47=_b45.customs.currencyDecimal||_b47;_b44=_b44.replace(/([\s\xa0\u202f]*)(\u00a4{1,3})([\s\xa0\u202f]*)/,function(_b4a,_b4b,_b4c,_b4d){var prop=["symbol","currency","displayName"][_b4c.length-1],_b4e=_b45[prop]||_b45.currency||"";if(!_b4e){return "";}return _b4b+_b4e+_b4d;});}else{if(_b44.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _b4f=_b3d._numberPatternRE;var _b50=_b49.match(_b4f);if(!_b50){throw new Error("unable to find a number expression in pattern: "+_b44);}if(_b45.fractional===false){_b45.places=0;}return _b44.replace(_b4f,_b3d._formatAbsolute(_b43,_b50[0],{decimal:_b47,group:_b46,places:_b45.places,round:_b45.round}));};_b3d.round=function(_b51,_b52,_b53){var _b54=10/(_b53||10);return (_b54*+_b51).toFixed(_b52)/_b54;};if((0.9).toFixed()==0){var _b55=_b3d.round;_b3d.round=function(v,p,m){var d=Math.pow(10,-p||0),a=Math.abs(v);if(!v||a>=d){d=0;}else{a/=d;if(a<0.5||a>=0.95){d=0;}}return _b55(v,p,m)+(v>0?d:-d);};}_b3d._formatAbsolute=function(_b56,_b57,_b58){_b58=_b58||{};if(_b58.places===true){_b58.places=0;}if(_b58.places===Infinity){_b58.places=6;}var _b59=_b57.split("."),_b5a=typeof _b58.places=="string"&&_b58.places.indexOf(","),_b5b=_b58.places;if(_b5a){_b5b=_b58.places.substring(_b5a+1);}else{if(!(_b5b>=0)){_b5b=(_b59[1]||[]).length;}}if(!(_b58.round<0)){_b56=_b3d.round(_b56,_b5b,_b58.round);}var _b5c=String(Math.abs(_b56)).split("."),_b5d=_b5c[1]||"";if(_b59[1]||_b58.places){if(_b5a){_b58.places=_b58.places.substring(0,_b5a);}var pad=_b58.places!==undefined?_b58.places:(_b59[1]&&_b59[1].lastIndexOf("0")+1);if(pad>_b5d.length){_b5c[1]=_b3b.pad(_b5d,pad,"0",true);}if(_b5b<_b5d.length){_b5c[1]=_b5d.substr(0,_b5b);}}else{if(_b5c[1]){_b5c.pop();}}var _b5e=_b59[0].replace(",","");pad=_b5e.indexOf("0");if(pad!=-1){pad=_b5e.length-pad;if(pad>_b5c[0].length){_b5c[0]=_b3b.pad(_b5c[0],pad);}if(_b5e.indexOf("#")==-1){_b5c[0]=_b5c[0].substr(_b5c[0].length-pad);}}var _b5f=_b59[0].lastIndexOf(","),_b60,_b61;if(_b5f!=-1){_b60=_b59[0].length-_b5f-1;var _b62=_b59[0].substr(0,_b5f);_b5f=_b62.lastIndexOf(",");if(_b5f!=-1){_b61=_b62.length-_b5f-1;}}var _b63=[];for(var _b64=_b5c[0];_b64;){var off=_b64.length-_b60;_b63.push((off>0)?_b64.substr(off):_b64);_b64=(off>0)?_b64.slice(0,off):"";if(_b61){_b60=_b61;_b61=undefined;}}_b5c[0]=_b63.reverse().join(_b58.group||",");return _b5c.join(_b58.decimal||".");};_b3d.regexp=function(_b65){return _b3d._parseInfo(_b65).regexp;};_b3d._parseInfo=function(_b66){_b66=_b66||{};var _b67=i18n.normalizeLocale(_b66.locale),_b68=i18n.getLocalization("dojo.cldr","number",_b67),_b69=_b66.pattern||_b68[(_b66.type||"decimal")+"Format"],_b6a=_b68.group,_b6b=_b68.decimal,_b6c=1;if(_b69.indexOf("%")!=-1){_b6c/=100;}else{if(_b69.indexOf("‰")!=-1){_b6c/=1000;}else{var _b6d=_b69.indexOf("¤")!=-1;if(_b6d){_b6a=_b68.currencyGroup||_b6a;_b6b=_b68.currencyDecimal||_b6b;}}}var _b6e=_b69.split(";");if(_b6e.length==1){_b6e.push("-"+_b6e[0]);}var re=_b3c.buildGroupRE(_b6e,function(_b6f){_b6f="(?:"+_b3c.escapeString(_b6f,".")+")";return _b6f.replace(_b3d._numberPatternRE,function(_b70){var _b71={signed:false,separator:_b66.strict?_b6a:[_b6a,""],fractional:_b66.fractional,decimal:_b6b,exponent:false},_b72=_b70.split("."),_b73=_b66.places;if(_b72.length==1&&_b6c!=1){_b72[1]="###";}if(_b72.length==1||_b73===0){_b71.fractional=false;}else{if(_b73===undefined){_b73=_b66.pattern?_b72[1].lastIndexOf("0")+1:Infinity;}if(_b73&&_b66.fractional==undefined){_b71.fractional=true;}if(!_b66.places&&(_b73<_b72[1].length)){_b73+=","+_b72[1].length;}_b71.places=_b73;}var _b74=_b72[0].split(",");if(_b74.length>1){_b71.groupSize=_b74.pop().length;if(_b74.length>1){_b71.groupSize2=_b74.pop().length;}}return "("+_b3d._realNumberRegexp(_b71)+")";});},true);if(_b6d){re=re.replace(/([\s\xa0\u202f]*)(\u00a4{1,3})([\s\xa0\u202f]*)/g,function(_b75,_b76,_b77,_b78){var prop=["symbol","currency","displayName"][_b77.length-1],_b79=_b3c.escapeString(_b66[prop]||_b66.currency||"");if(!_b79){return "";}_b76=_b76?"[\\s\\xa0\\u202f]":"";_b78=_b78?"[\\s\\xa0\\u202f]":"";if(!_b66.strict){if(_b76){_b76+="*";}if(_b78){_b78+="*";}return "(?:"+_b76+_b79+_b78+")?";}return _b76+_b79+_b78;});}return {regexp:re.replace(/[\xa0\u202f ]/g,"[\\s\\xa0\\u202f]"),group:_b6a,decimal:_b6b,factor:_b6c};};_b3d.parse=function(_b7a,_b7b){var info=_b3d._parseInfo(_b7b),_b7c=(new RegExp("^"+info.regexp+"$")).exec(_b7a);if(!_b7c){return NaN;}var _b7d=_b7c[1];if(!_b7c[1]){if(!_b7c[2]){return NaN;}_b7d=_b7c[2];info.factor*=-1;}_b7d=_b7d.replace(new RegExp("["+info.group+"\\s\\xa0\\u202f"+"]","g"),"").replace(info.decimal,".");return _b7d*info.factor;};_b3d._realNumberRegexp=function(_b7e){_b7e=_b7e||{};if(!("places" in _b7e)){_b7e.places=Infinity;}if(typeof _b7e.decimal!="string"){_b7e.decimal=".";}if(!("fractional" in _b7e)||/^0/.test(_b7e.places)){_b7e.fractional=[true,false];}if(!("exponent" in _b7e)){_b7e.exponent=[true,false];}if(!("eSigned" in _b7e)){_b7e.eSigned=[true,false];}var _b7f=_b3d._integerRegexp(_b7e),_b80=_b3c.buildGroupRE(_b7e.fractional,function(q){var re="";if(q&&(_b7e.places!==0)){re="\\"+_b7e.decimal;if(_b7e.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_b7e.places+"}";}}return re;},true);var _b81=_b3c.buildGroupRE(_b7e.exponent,function(q){if(q){return "([eE]"+_b3d._integerRegexp({signed:_b7e.eSigned})+")";}return "";});var _b82=_b7f+_b80;if(_b80){_b82="(?:(?:"+_b82+")|(?:"+_b80+"))";}return _b82+_b81;};_b3d._integerRegexp=function(_b83){_b83=_b83||{};if(!("signed" in _b83)){_b83.signed=[true,false];}if(!("separator" in _b83)){_b83.separator="";}else{if(!("groupSize" in _b83)){_b83.groupSize=3;}}var _b84=_b3c.buildGroupRE(_b83.signed,function(q){return q?"[-+]":"";},true);var _b85=_b3c.buildGroupRE(_b83.separator,function(sep){if(!sep){return "(?:\\d+)";}sep=_b3c.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}else{if(sep==" "){sep="\\s\\u202f";}}}var grp=_b83.groupSize,grp2=_b83.groupSize2;if(grp2){var _b86="(?:0|[1-9]\\d{0,"+(grp2-1)+"}(?:["+sep+"]\\d{"+grp2+"})*["+sep+"]\\d{"+grp+"})";return ((grp-grp2)>0)?"(?:"+_b86+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_b86;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _b84+_b85;};return _b3d;});},"dijit/Toolbar":function(){define(["require","dojo/_base/declare","dojo/has","dojo/keys","dojo/ready","./_Widget","./_KeyNavContainer","./_TemplatedMixin"],function(_b87,_b88,has,keys,_b89,_b8a,_b8b,_b8c){if(has("dijit-legacy-requires")){_b89(0,function(){var _b8d=["dijit/ToolbarSeparator"];_b87(_b8d);});}return _b88("dijit.Toolbar",[_b8a,_b8c,_b8b],{templateString:"<div class=\"dijit\" role=\"toolbar\" tabIndex=\"${tabIndex}\" data-dojo-attach-point=\"containerNode\">"+"</div>",baseClass:"dijitToolbar",_onLeftArrow:function(){this.focusPrev();},_onRightArrow:function(){this.focusNext();}});});},"dijit/TooltipDialog":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","./focus","./layout/ContentPane","./_DialogMixin","./form/_FormMixin","./_TemplatedMixin","dojo/text!./templates/TooltipDialog.html","./main"],function(_b8e,_b8f,has,keys,lang,on,_b90,_b91,_b92,_b93,_b94,_b95,_b96){var _b97=_b8e("dijit.TooltipDialog",[_b91,_b94,_b93,_b92],{title:"",doLayout:false,autofocus:true,baseClass:"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:_b95,_setTitleAttr:"containerNode",postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKey")));},orient:function(node,_b98,_b99){var newC={"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft","BR-TL":"dijitTooltipBelow dijitTooltipABLeft","BL-TR":"dijitTooltipBelow dijitTooltipABRight","TL-BR":"dijitTooltipAbove dijitTooltipABRight","TR-BL":"dijitTooltipAbove dijitTooltipABLeft"}[_b98+"-"+_b99];_b8f.replace(this.domNode,newC,this._currentOrientClass||"");this._currentOrientClass=newC;},focus:function(){this._getFocusItems();_b90.focus(this._firstFocusItem);},onOpen:function(pos){this.orient(this.domNode,pos.aroundCorner,pos.corner);var _b9a=pos.aroundNodePos;if(pos.corner.charAt(0)=="M"&&pos.aroundCorner.charAt(0)=="M"){this.connectorNode.style.top=_b9a.y+((_b9a.h-this.connectorNode.offsetHeight)>>1)-pos.y+"px";this.connectorNode.style.left="";}else{if(pos.corner.charAt(1)=="M"&&pos.aroundCorner.charAt(1)=="M"){this.connectorNode.style.left=_b9a.x+((_b9a.w-this.connectorNode.offsetWidth)>>1)-pos.x+"px";}}this._onShow();},onClose:function(){this.onHide();},_onKey:function(evt){if(evt.keyCode==keys.ESCAPE){this.defer("onCancel");evt.stopPropagation();evt.preventDefault();}else{if(evt.keyCode==keys.TAB){var node=evt.target;this._getFocusItems();if(this._firstFocusItem==this._lastFocusItem){evt.stopPropagation();evt.preventDefault();}else{if(node==this._firstFocusItem&&evt.shiftKey){_b90.focus(this._lastFocusItem);evt.stopPropagation();evt.preventDefault();}else{if(node==this._lastFocusItem&&!evt.shiftKey){_b90.focus(this._firstFocusItem);evt.stopPropagation();evt.preventDefault();}else{evt.stopPropagation();}}}}}}});if(has("dojo-bidi")){_b97.extend({_setTitleAttr:function(_b9b){this.containerNode.title=(this.textDir&&this.enforceTextDirWithUcc)?this.enforceTextDirWithUcc(null,_b9b):_b9b;this._set("title",_b9b);},_setTextDirAttr:function(_b9c){if(!this._created||this.textDir!=_b9c){this._set("textDir",_b9c);if(this.textDir&&this.title){this.containerNode.title=this.enforceTextDirWithUcc(null,this.title);}}}});}return _b97;});},"dijit/Tree":function(){define(["dojo/_base/array","dojo/aspect","dojo/cookie","dojo/_base/declare","dojo/Deferred","dojo/promise/all","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/errors/create","dojo/fx","dojo/has","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","dojo/touch","dojo/when","./a11yclick","./focus","./registry","./_base/manager","./_Widget","./_TemplatedMixin","./_Container","./_Contained","./_CssStateMixin","./_KeyNavMixin","dojo/text!./templates/TreeNode.html","dojo/text!./templates/Tree.html","./tree/TreeStoreModel","./tree/ForestStoreModel","./tree/_dndSelector","dojo/query!css2"],function(_b9d,_b9e,_b9f,_ba0,_ba1,all,dom,_ba2,_ba3,_ba4,_ba5,_ba6,has,_ba7,keys,lang,on,_ba8,_ba9,when,_baa,_bab,_bac,_bad,_bae,_baf,_bb0,_bb1,_bb2,_bb3,_bb4,_bb5,_bb6,_bb7,_bb8){function _bb9(d){return lang.delegate(d.promise||d,{addCallback:function(_bba){this.then(_bba);},addErrback:function(_bbb){this.otherwise(_bbb);}});};var _bbc=_ba0("dijit._TreeNode",[_bae,_baf,_bb0,_bb1,_bb2],{item:null,isTreeNode:true,label:"",_setLabelAttr:function(val){this.labelNode[this.labelType=="html"?"innerHTML":"innerText" in this.labelNode?"innerText":"textContent"]=val;this._set("label",val);if(has("dojo-bidi")){this.applyTextDir(this.labelNode);}},labelType:"text",isExpandable:null,isExpanded:false,state:"NotLoaded",templateString:_bb4,baseClass:"dijitTreeNode",cssStateNodes:{rowNode:"dijitTreeRow"},_setTooltipAttr:{node:"rowNode",type:"attribute",attribute:"title"},buildRendering:function(){this.inherited(arguments);this._setExpando();this._updateItemClasses(this.item);if(this.isExpandable){this.labelNode.setAttribute("aria-expanded",this.isExpanded);}this.setSelected(false);},_setIndentAttr:function(_bbd){var _bbe=(Math.max(_bbd,0)*this.tree._nodePixelIndent)+"px";_ba4.set(this.domNode,"backgroundPosition",_bbe+" 0px");_ba4.set(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_bbe);_b9d.forEach(this.getChildren(),function(_bbf){_bbf.set("indent",_bbd+1);});this._set("indent",_bbd);},markProcessing:function(){this.state="Loading";this._setExpando(true);},unmarkProcessing:function(){this._setExpando(false);},_updateItemClasses:function(item){var tree=this.tree,_bc0=tree.model;if(tree._v10Compat&&item===_bc0.root){item=null;}this._applyClassAndStyle(item,"icon","Icon");this._applyClassAndStyle(item,"label","Label");this._applyClassAndStyle(item,"row","Row");this.tree._startPaint(true);},_applyClassAndStyle:function(item,_bc1,_bc2){var _bc3="_"+_bc1+"Class";var _bc4=_bc1+"Node";var _bc5=this[_bc3];this[_bc3]=this.tree["get"+_bc2+"Class"](item,this.isExpanded);_ba2.replace(this[_bc4],this[_bc3]||"",_bc5||"");_ba4.set(this[_bc4],this.tree["get"+_bc2+"Style"](item,this.isExpanded)||{});},_updateLayout:function(){var _bc6=this.getParent(),_bc7=!_bc6||!_bc6.rowNode||_bc6.rowNode.style.display=="none";_ba2.toggle(this.domNode,"dijitTreeIsRoot",_bc7);_ba2.toggle(this.domNode,"dijitTreeIsLast",!_bc7&&!this.getNextSibling());},_setExpando:function(_bc8){var _bc9=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_bca=["*","-","+","*"],idx=_bc8?0:(this.isExpandable?(this.isExpanded?1:2):3);_ba2.replace(this.expandoNode,_bc9[idx],_bc9);this.expandoNodeText.innerHTML=_bca[idx];},expand:function(){if(this._expandDeferred){return _bb9(this._expandDeferred);}if(this._collapseDeferred){this._collapseDeferred.cancel();delete this._collapseDeferred;}this.isExpanded=true;this.labelNode.setAttribute("aria-expanded","true");if(this.tree.showRoot||this!==this.tree.rootNode){this.containerNode.setAttribute("role","group");}_ba2.add(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","true");}var _bcb=_ba6.wipeIn({node:this.containerNode,duration:_bad.defaultDuration});var def=(this._expandDeferred=new _ba1(function(){_bcb.stop();}));_b9e.after(_bcb,"onEnd",function(){def.resolve(true);},true);_bcb.play();return _bb9(def);},collapse:function(){if(this._collapseDeferred){return _bb9(this._collapseDeferred);}if(this._expandDeferred){this._expandDeferred.cancel();delete this._expandDeferred;}this.isExpanded=false;this.labelNode.setAttribute("aria-expanded","false");if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","false");}_ba2.remove(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);var _bcc=_ba6.wipeOut({node:this.containerNode,duration:_bad.defaultDuration});var def=(this._collapseDeferred=new _ba1(function(){_bcc.stop();}));_b9e.after(_bcc,"onEnd",function(){def.resolve(true);},true);_bcc.play();return _bb9(def);},indent:0,setChildItems:function(_bcd){var tree=this.tree,_bce=tree.model,defs=[];var _bcf=tree.focusedChild;var _bd0=this.getChildren();_b9d.forEach(_bd0,function(_bd1){_bb0.prototype.removeChild.call(this,_bd1);},this);this.defer(function(){_b9d.forEach(_bd0,function(node){if(!node._destroyed&&!node.getParent()){tree.dndController.removeTreeNode(node);function _bd2(node){var id=_bce.getIdentity(node.item),ary=tree._itemNodesMap[id];if(ary.length==1){delete tree._itemNodesMap[id];}else{var _bd3=_b9d.indexOf(ary,node);if(_bd3!=-1){ary.splice(_bd3,1);}}_b9d.forEach(node.getChildren(),_bd2);};_bd2(node);if(tree.persist){var _bd4=_b9d.map(node.getTreePath(),function(item){return tree.model.getIdentity(item);}).join("/");for(var path in tree._openedNodes){if(path.substr(0,_bd4.length)==_bd4){delete tree._openedNodes[path];}}tree._saveExpandedNodes();}if(tree.lastFocusedChild&&!dom.isDescendant(tree.lastFocusedChild.domNode,tree.domNode)){delete tree.lastFocusedChild;}if(_bcf&&!dom.isDescendant(_bcf.domNode,tree.domNode)){tree.focus();}node.destroyRecursive();}});});this.state="Loaded";if(_bcd&&_bcd.length>0){this.isExpandable=true;_b9d.forEach(_bcd,function(item){var id=_bce.getIdentity(item),_bd5=tree._itemNodesMap[id],node;if(_bd5){for(var i=0;i<_bd5.length;i++){if(_bd5[i]&&!_bd5[i].getParent()){node=_bd5[i];node.set("indent",this.indent+1);break;}}}if(!node){node=this.tree._createTreeNode({item:item,tree:tree,isExpandable:_bce.mayHaveChildren(item),label:tree.getLabel(item),labelType:(tree.model&&tree.model.labelType)||"text",tooltip:tree.getTooltip(item),ownerDocument:tree.ownerDocument,dir:tree.dir,lang:tree.lang,textDir:tree.textDir,indent:this.indent+1});if(_bd5){_bd5.push(node);}else{tree._itemNodesMap[id]=[node];}}this.addChild(node);if(this.tree.autoExpand||this.tree._state(node)){defs.push(tree._expandNode(node));}},this);_b9d.forEach(this.getChildren(),function(_bd6){_bd6._updateLayout();});}else{this.isExpandable=false;}if(this._setExpando){this._setExpando(false);}this._updateItemClasses(this.item);var def=all(defs);this.tree._startPaint(def);return _bb9(def);},getTreePath:function(){var node=this;var path=[];while(node&&node!==this.tree.rootNode){path.unshift(node.item);node=node.getParent();}path.unshift(this.tree.rootNode.item);return path;},getIdentity:function(){return this.tree.model.getIdentity(this.item);},removeChild:function(node){this.inherited(arguments);var _bd7=this.getChildren();if(_bd7.length==0){this.isExpandable=false;this.collapse();}_b9d.forEach(_bd7,function(_bd8){_bd8._updateLayout();});},makeExpandable:function(){this.isExpandable=true;this._setExpando(false);},setSelected:function(_bd9){this.labelNode.setAttribute("aria-selected",_bd9?"true":"false");_ba2.toggle(this.rowNode,"dijitTreeRowSelected",_bd9);},focus:function(){_bab.focus(this.focusNode);}});if(has("dojo-bidi")){_bbc.extend({_setTextDirAttr:function(_bda){if(_bda&&((this.textDir!=_bda)||!this._created)){this._set("textDir",_bda);this.applyTextDir(this.labelNode);_b9d.forEach(this.getChildren(),function(_bdb){_bdb.set("textDir",_bda);},this);}}});}var Tree=_ba0("dijit.Tree",[_bae,_bb3,_baf,_bb2],{baseClass:"dijitTree",store:null,model:null,query:null,label:"",showRoot:true,childrenAttr:["children"],paths:[],path:[],selectedItems:null,selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:_bb5,persist:false,autoExpand:false,dndController:_bb8,dndParams:["onDndDrop","itemCreator","onDndCancel","checkAcceptance","checkItemAcceptance","dragThreshold","betweenThreshold"],onDndDrop:null,itemCreator:null,onDndCancel:null,checkAcceptance:null,checkItemAcceptance:null,dragThreshold:5,betweenThreshold:0,_nodePixelIndent:19,_publish:function(_bdc,_bdd){_ba8.publish(this.id,lang.mixin({tree:this,event:_bdc},_bdd||{}));},postMixInProperties:function(){this.tree=this;if(this.autoExpand){this.persist=false;}this._itemNodesMap={};if(!this.cookieName&&this.id){this.cookieName=this.id+"SaveStateCookie";}this.expandChildrenDeferred=new _ba1();this.pendingCommandsPromise=this.expandChildrenDeferred.promise;this.inherited(arguments);},postCreate:function(){this._initState();var self=this;this.own(on(this.containerNode,on.selector(".dijitTreeNode",_ba9.enter),function(evt){self._onNodeMouseEnter(_bac.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeNode",_ba9.leave),function(evt){self._onNodeMouseLeave(_bac.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_baa.press),function(evt){self._onNodePress(_bac.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_baa),function(evt){self._onClick(_bac.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow","dblclick"),function(evt){self._onDblClick(_bac.getEnclosingWidget(this),evt);}));if(!this.model){this._store2model();}this.own(_b9e.after(this.model,"onChange",lang.hitch(this,"_onItemChange"),true),_b9e.after(this.model,"onChildrenChange",lang.hitch(this,"_onItemChildrenChange"),true),_b9e.after(this.model,"onDelete",lang.hitch(this,"_onItemDelete"),true));this.inherited(arguments);if(this.dndController){if(lang.isString(this.dndController)){this.dndController=lang.getObject(this.dndController);}var _bde={};for(var i=0;i<this.dndParams.length;i++){if(this[this.dndParams[i]]){_bde[this.dndParams[i]]=this[this.dndParams[i]];}}this.dndController=new this.dndController(this,_bde);}this._load();this.onLoadDeferred=_bb9(this.pendingCommandsPromise);this.onLoadDeferred.then(lang.hitch(this,"onLoad"));},_store2model:function(){this._v10Compat=true;_ba7.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");var _bdf={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};if(this.params.mayHaveChildren){_bdf.mayHaveChildren=lang.hitch(this,"mayHaveChildren");}if(this.params.getItemChildren){_bdf.getChildren=lang.hitch(this,function(item,_be0,_be1){this.getItemChildren((this._v10Compat&&item===this.model.root)?null:item,_be0,_be1);});}this.model=new _bb7(_bdf);this.showRoot=Boolean(this.label);},onLoad:function(){},_load:function(){this.model.getRoot(lang.hitch(this,function(item){var rn=(this.rootNode=this.tree._createTreeNode({item:item,tree:this,isExpandable:true,label:this.label||this.getLabel(item),labelType:this.model.labelType||"text",textDir:this.textDir,indent:this.showRoot?0:-1}));if(!this.showRoot){rn.rowNode.style.display="none";this.domNode.setAttribute("role","presentation");this.domNode.removeAttribute("aria-expanded");this.domNode.removeAttribute("aria-multiselectable");if(this["aria-label"]){rn.containerNode.setAttribute("aria-label",this["aria-label"]);this.domNode.removeAttribute("aria-label");}else{if(this["aria-labelledby"]){rn.containerNode.setAttribute("aria-labelledby",this["aria-labelledby"]);this.domNode.removeAttribute("aria-labelledby");}}rn.labelNode.setAttribute("role","presentation");rn.labelNode.removeAttribute("aria-selected");rn.containerNode.setAttribute("role","tree");rn.containerNode.setAttribute("aria-expanded","true");rn.containerNode.setAttribute("aria-multiselectable",!this.dndController.singular);}else{this.domNode.setAttribute("aria-multiselectable",!this.dndController.singular);this.rootLoadingIndicator.style.display="none";}this.containerNode.appendChild(rn.domNode);var _be2=this.model.getIdentity(item);if(this._itemNodesMap[_be2]){this._itemNodesMap[_be2].push(rn);}else{this._itemNodesMap[_be2]=[rn];}rn._updateLayout();this._expandNode(rn).then(lang.hitch(this,function(){if(!this._destroyed){this.rootLoadingIndicator.style.display="none";this.expandChildrenDeferred.resolve(true);}}));}),lang.hitch(this,function(err){console.error(this,": error loading root: ",err);}));},getNodesByItem:function(item){if(!item){return [];}var _be3=lang.isString(item)?item:this.model.getIdentity(item);return [].concat(this._itemNodesMap[_be3]);},_setSelectedItemAttr:function(item){this.set("selectedItems",[item]);},_setSelectedItemsAttr:function(_be4){var tree=this;return this.pendingCommandsPromise=this.pendingCommandsPromise.always(lang.hitch(this,function(){var _be5=_b9d.map(_be4,function(item){return (!item||lang.isString(item))?item:tree.model.getIdentity(item);});var _be6=[];_b9d.forEach(_be5,function(id){_be6=_be6.concat(tree._itemNodesMap[id]||[]);});this.set("selectedNodes",_be6);}));},_setPathAttr:function(path){if(path.length){return _bb9(this.set("paths",[path]).then(function(_be7){return _be7[0];}));}else{return _bb9(this.set("paths",[]).then(function(_be8){return _be8[0];}));}},_setPathsAttr:function(_be9){var tree=this;function _bea(path,_beb){var _bec=path.shift();var _bed=_b9d.filter(_beb,function(node){return node.getIdentity()==_bec;})[0];if(!!_bed){if(path.length){return tree._expandNode(_bed).then(function(){return _bea(path,_bed.getChildren());});}else{return _bed;}}else{throw new Tree.PathError("Could not expand path at "+_bec);}};return _bb9(this.pendingCommandsPromise=this.pendingCommandsPromise.always(function(){return all(_b9d.map(_be9,function(path){path=_b9d.map(path,function(item){return item&&lang.isObject(item)?tree.model.getIdentity(item):item;});if(path.length){return _bea(path,[tree.rootNode]);}else{throw new Tree.PathError("Empty path");}}));}).then(function setNodes(_bee){tree.set("selectedNodes",_bee);return tree.paths;}));},_setSelectedNodeAttr:function(node){this.set("selectedNodes",[node]);},_setSelectedNodesAttr:function(_bef){this.dndController.setSelection(_bef);},expandAll:function(){var _bf0=this;function _bf1(node){return _bf0._expandNode(node).then(function(){var _bf2=_b9d.filter(node.getChildren()||[],function(node){return node.isExpandable;});return all(_b9d.map(_bf2,_bf1));});};return _bb9(_bf1(this.rootNode));},collapseAll:function(){var _bf3=this;function _bf4(node){var _bf5=_b9d.filter(node.getChildren()||[],function(node){return node.isExpandable;}),defs=all(_b9d.map(_bf5,_bf4));if(!node.isExpanded||(node==_bf3.rootNode&&!_bf3.showRoot)){return defs;}else{return defs.then(function(){return _bf3._collapseNode(node);});}};return _bb9(_bf4(this.rootNode));},mayHaveChildren:function(){},getItemChildren:function(){},getLabel:function(item){return this.model.getLabel(item);},getIconClass:function(item,_bf6){return (!item||this.model.mayHaveChildren(item))?(_bf6?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";},getLabelClass:function(){},getRowClass:function(){},getIconStyle:function(){},getLabelStyle:function(){},getRowStyle:function(){},getTooltip:function(){return "";},_onDownArrow:function(evt,node){var _bf7=this._getNext(node);if(_bf7&&_bf7.isTreeNode){this.focusNode(_bf7);}},_onUpArrow:function(evt,node){var _bf8=node.getPreviousSibling();if(_bf8){node=_bf8;while(node.isExpandable&&node.isExpanded&&node.hasChildren()){var _bf9=node.getChildren();node=_bf9[_bf9.length-1];}}else{var _bfa=node.getParent();if(!(!this.showRoot&&_bfa===this.rootNode)){node=_bfa;}}if(node&&node.isTreeNode){this.focusNode(node);}},_onRightArrow:function(evt,node){if(node.isExpandable&&!node.isExpanded){this._expandNode(node);}else{if(node.hasChildren()){node=node.getChildren()[0];if(node&&node.isTreeNode){this.focusNode(node);}}}},_onLeftArrow:function(evt,node){if(node.isExpandable&&node.isExpanded){this._collapseNode(node);}else{var _bfb=node.getParent();if(_bfb&&_bfb.isTreeNode&&!(!this.showRoot&&_bfb===this.rootNode)){this.focusNode(_bfb);}}},focusLastChild:function(){var node=this._getLast();if(node&&node.isTreeNode){this.focusNode(node);}},_getFirst:function(){return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];},_getLast:function(){var node=this.rootNode;while(node.isExpanded){var c=node.getChildren();if(!c.length){break;}node=c[c.length-1];}return node;},_getNext:function(node){if(node.isExpandable&&node.isExpanded&&node.hasChildren()){return node.getChildren()[0];}else{while(node&&node.isTreeNode){var _bfc=node.getNextSibling();if(_bfc){return _bfc;}node=node.getParent();}return null;}},childSelector:".dijitTreeRow",isExpandoNode:function(node,_bfd){return dom.isDescendant(node,_bfd.expandoNode)||dom.isDescendant(node,_bfd.expandoNodeText);},_onNodePress:function(_bfe,e){this.focusNode(_bfe);},__click:function(_bff,e,_c00,func){var _c01=e.target,_c02=this.isExpandoNode(_c01,_bff);if(_bff.isExpandable&&(_c00||_c02)){this._onExpandoClick({node:_bff});}else{this._publish("execute",{item:_bff.item,node:_bff,evt:e});this[func](_bff.item,_bff,e);this.focusNode(_bff);}e.stopPropagation();e.preventDefault();},_onClick:function(_c03,e){this.__click(_c03,e,this.openOnClick,"onClick");},_onDblClick:function(_c04,e){this.__click(_c04,e,this.openOnDblClick,"onDblClick");},_onExpandoClick:function(_c05){var node=_c05.node;this.focusNode(node);if(node.isExpanded){this._collapseNode(node);}else{this._expandNode(node);}},onClick:function(){},onDblClick:function(){},onOpen:function(){},onClose:function(){},_getNextNode:function(node){_ba7.deprecated(this.declaredClass+"::_getNextNode(node) is deprecated. Use _getNext(node) instead.","","2.0");return this._getNext(node);},_getRootOrFirstNode:function(){_ba7.deprecated(this.declaredClass+"::_getRootOrFirstNode() is deprecated. Use _getFirst() instead.","","2.0");return this._getFirst();},_collapseNode:function(node){if(node._expandNodeDeferred){delete node._expandNodeDeferred;}if(node.state=="Loading"){return;}if(node.isExpanded){var ret=node.collapse();this.onClose(node.item,node);this._state(node,false);this._startPaint(ret);return ret;}},_expandNode:function(node){if(node._expandNodeDeferred){return node._expandNodeDeferred;}var _c06=this.model,item=node.item,_c07=this;if(!node._loadDeferred){node.markProcessing();node._loadDeferred=new _ba1();_c06.getChildren(item,function(_c08){node.unmarkProcessing();node.setChildItems(_c08).then(function(){node._loadDeferred.resolve(_c08);});},function(err){console.error(_c07,": error loading "+node.label+" children: ",err);node._loadDeferred.reject(err);});}var def=node._loadDeferred.then(lang.hitch(this,function(){var def2=node.expand();this.onOpen(node.item,node);this._state(node,true);return def2;}));this._startPaint(def);return def;},focusNode:function(node){var tmp=[];for(var _c09=this.domNode;_c09&&_c09.tagName&&_c09.tagName.toUpperCase()!=="IFRAME";_c09=_c09.parentNode){tmp.push({domNode:_c09.contentWindow||_c09,scrollLeft:_c09.scrollLeft||0,scrollTop:_c09.scrollTop||0});}this.focusChild(node);this.defer(function(){for(var i=0,max=tmp.length;i<max;i++){tmp[i].domNode.scrollLeft=tmp[i].scrollLeft;tmp[i].domNode.scrollTop=tmp[i].scrollTop;}},0);},_onNodeMouseEnter:function(){},_onNodeMouseLeave:function(){},_onItemChange:function(item){var _c0a=this.model,_c0b=_c0a.getIdentity(item),_c0c=this._itemNodesMap[_c0b];if(_c0c){var _c0d=this.getLabel(item),_c0e=this.getTooltip(item);_b9d.forEach(_c0c,function(node){node.set({item:item,label:_c0d,tooltip:_c0e});node._updateItemClasses(item);});}},_onItemChildrenChange:function(_c0f,_c10){var _c11=this.model,_c12=_c11.getIdentity(_c0f),_c13=this._itemNodesMap[_c12];if(_c13){_b9d.forEach(_c13,function(_c14){_c14.setChildItems(_c10);});}},_onItemDelete:function(item){var _c15=this.model,_c16=_c15.getIdentity(item),_c17=this._itemNodesMap[_c16];if(_c17){_b9d.forEach(_c17,function(node){this.dndController.removeTreeNode(node);var _c18=node.getParent();if(_c18){_c18.removeChild(node);}if(this.lastFocusedChild&&!dom.isDescendant(this.lastFocusedChild.domNode,this.domNode)){delete this.lastFocusedChild;}if(this.focusedChild&&!dom.isDescendant(this.focusedChild.domNode,this.domNode)){this.focus();}node.destroyRecursive();},this);delete this._itemNodesMap[_c16];}},_initState:function(){this._openedNodes={};if(this.persist&&this.cookieName){var oreo=_b9f(this.cookieName);if(oreo){_b9d.forEach(oreo.split(","),function(item){this._openedNodes[item]=true;},this);}}},_state:function(node,_c19){if(!this.persist){return false;}var path=_b9d.map(node.getTreePath(),function(item){return this.model.getIdentity(item);},this).join("/");if(arguments.length===1){return this._openedNodes[path];}else{if(_c19){this._openedNodes[path]=true;}else{delete this._openedNodes[path];}this._saveExpandedNodes();}},_saveExpandedNodes:function(){if(this.persist&&this.cookieName){var ary=[];for(var id in this._openedNodes){ary.push(id);}_b9f(this.cookieName,ary.join(","),{expires:365});}},destroy:function(){if(this._curSearch){this._curSearch.timer.remove();delete this._curSearch;}if(this.rootNode){this.rootNode.destroyRecursive();}if(this.dndController&&!lang.isString(this.dndController)){this.dndController.destroy();}this.rootNode=null;this.inherited(arguments);},destroyRecursive:function(){this.destroy();},resize:function(_c1a){if(_c1a){_ba3.setMarginBox(this.domNode,_c1a);}this._nodePixelIndent=_ba3.position(this.tree.indentDetector).w||this._nodePixelIndent;this.expandChildrenDeferred.then(lang.hitch(this,function(){this.rootNode.set("indent",this.showRoot?0:-1);this._adjustWidths();}));},_outstandingPaintOperations:0,_startPaint:function(p){this._outstandingPaintOperations++;if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}var oc=lang.hitch(this,function(){this._outstandingPaintOperations--;if(this._outstandingPaintOperations<=0&&!this._adjustWidthsTimer&&this._started){this._adjustWidthsTimer=this.defer("_adjustWidths");}});when(p,oc,oc);},_adjustWidths:function(){if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}this.containerNode.style.width="auto";this.containerNode.style.width=this.domNode.scrollWidth>this.domNode.offsetWidth?"auto":"100%";},_createTreeNode:function(args){return new _bbc(args);},focus:function(){if(this.lastFocusedChild){this.focusNode(this.lastFocusedChild);}else{this.focusFirstChild();}}});if(has("dojo-bidi")){Tree.extend({_setTextDirAttr:function(_c1b){if(_c1b&&this.textDir!=_c1b){this._set("textDir",_c1b);this.rootNode.set("textDir",_c1b);}}});}Tree.PathError=_ba5("TreePathError");Tree._TreeNode=_bbc;return Tree;});},"dijit/tree/TreeStoreModel":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/_base/lang"],function(_c1c,_c1d,_c1e,lang){return _c1e("dijit.tree.TreeStoreModel",null,{store:null,childrenAttrs:["children"],newItemIdAttr:"id",labelAttr:"",root:null,query:null,deferItemLoadingUntilExpand:false,constructor:function(args){lang.mixin(this,args);this.connects=[];var _c1f=this.store;if(!_c1f.getFeatures()["dojo.data.api.Identity"]){throw new Error("dijit.tree.TreeStoreModel: store must support dojo.data.Identity");}if(_c1f.getFeatures()["dojo.data.api.Notification"]){this.connects=this.connects.concat([_c1d.after(_c1f,"onNew",lang.hitch(this,"onNewItem"),true),_c1d.after(_c1f,"onDelete",lang.hitch(this,"onDeleteItem"),true),_c1d.after(_c1f,"onSet",lang.hitch(this,"onSetItem"),true)]);}},destroy:function(){var h;while(h=this.connects.pop()){h.remove();}},getRoot:function(_c20,_c21){if(this.root){_c20(this.root);}else{this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_c22){if(_c22.length!=1){throw new Error("dijit.tree.TreeStoreModel: root query returned "+_c22.length+" items, but must return exactly one");}this.root=_c22[0];_c20(this.root);}),onError:_c21});}},mayHaveChildren:function(item){return _c1c.some(this.childrenAttrs,function(attr){return this.store.hasAttribute(item,attr);},this);},getChildren:function(_c23,_c24,_c25){var _c26=this.store;if(!_c26.isItemLoaded(_c23)){var _c27=lang.hitch(this,arguments.callee);_c26.loadItem({item:_c23,onItem:function(_c28){_c27(_c28,_c24,_c25);},onError:_c25});return;}var _c29=[];for(var i=0;i<this.childrenAttrs.length;i++){var vals=_c26.getValues(_c23,this.childrenAttrs[i]);_c29=_c29.concat(vals);}var _c2a=0;if(!this.deferItemLoadingUntilExpand){_c1c.forEach(_c29,function(item){if(!_c26.isItemLoaded(item)){_c2a++;}});}if(_c2a==0){_c24(_c29);}else{_c1c.forEach(_c29,function(item,idx){if(!_c26.isItemLoaded(item)){_c26.loadItem({item:item,onItem:function(item){_c29[idx]=item;if(--_c2a==0){_c24(_c29);}},onError:_c25});}});}},isItem:function(_c2b){return this.store.isItem(_c2b);},fetchItemByIdentity:function(_c2c){this.store.fetchItemByIdentity(_c2c);},getIdentity:function(item){return this.store.getIdentity(item);},getLabel:function(item){if(this.labelAttr){return this.store.getValue(item,this.labelAttr);}else{return this.store.getLabel(item);}},newItem:function(args,_c2d,_c2e){var _c2f={parent:_c2d,attribute:this.childrenAttrs[0]},_c30;if(this.newItemIdAttr&&args[this.newItemIdAttr]){this.fetchItemByIdentity({identity:args[this.newItemIdAttr],scope:this,onItem:function(item){if(item){this.pasteItem(item,null,_c2d,true,_c2e);}else{_c30=this.store.newItem(args,_c2f);if(_c30&&(_c2e!=undefined)){this.pasteItem(_c30,_c2d,_c2d,false,_c2e);}}}});}else{_c30=this.store.newItem(args,_c2f);if(_c30&&(_c2e!=undefined)){this.pasteItem(_c30,_c2d,_c2d,false,_c2e);}}},pasteItem:function(_c31,_c32,_c33,_c34,_c35){var _c36=this.store,_c37=this.childrenAttrs[0];if(_c32){_c1c.forEach(this.childrenAttrs,function(attr){if(_c36.containsValue(_c32,attr,_c31)){if(!_c34){var _c38=_c1c.filter(_c36.getValues(_c32,attr),function(x){return x!=_c31;});_c36.setValues(_c32,attr,_c38);}_c37=attr;}});}if(_c33){if(typeof _c35=="number"){var _c39=_c36.getValues(_c33,_c37).slice();_c39.splice(_c35,0,_c31);_c36.setValues(_c33,_c37,_c39);}else{_c36.setValues(_c33,_c37,_c36.getValues(_c33,_c37).concat(_c31));}}},onChange:function(){},onChildrenChange:function(){},onDelete:function(){},onNewItem:function(item,_c3a){if(!_c3a){return;}this.getChildren(_c3a.item,lang.hitch(this,function(_c3b){this.onChildrenChange(_c3a.item,_c3b);}));},onDeleteItem:function(item){this.onDelete(item);},onSetItem:function(item,_c3c){if(_c1c.indexOf(this.childrenAttrs,_c3c)!=-1){this.getChildren(item,lang.hitch(this,function(_c3d){this.onChildrenChange(item,_c3d);}));}else{this.onChange(item);}}});});},"dijit/tree/ForestStoreModel":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","./TreeStoreModel"],function(_c3e,_c3f,_c40,lang,_c41){return _c3f("dijit.tree.ForestStoreModel",_c41,{rootId:"$root$",rootLabel:"ROOT",query:null,constructor:function(_c42){this.root={store:this,root:true,id:_c42.rootId,label:_c42.rootLabel,children:_c42.rootChildren};},mayHaveChildren:function(item){return item===this.root||this.inherited(arguments);},getChildren:function(_c43,_c44,_c45){if(_c43===this.root){if(this.root.children){_c44(this.root.children);}else{this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_c46){this.root.children=_c46;_c44(_c46);}),onError:_c45});}}else{this.inherited(arguments);}},isItem:function(_c47){return (_c47===this.root)?true:this.inherited(arguments);},fetchItemByIdentity:function(_c48){if(_c48.identity==this.root.id){var _c49=_c48.scope||_c40.global;if(_c48.onItem){_c48.onItem.call(_c49,this.root);}}else{this.inherited(arguments);}},getIdentity:function(item){return (item===this.root)?this.root.id:this.inherited(arguments);},getLabel:function(item){return (item===this.root)?this.root.label:this.inherited(arguments);},newItem:function(args,_c4a,_c4b){if(_c4a===this.root){this.onNewRootItem(args);return this.store.newItem(args);}else{return this.inherited(arguments);}},onNewRootItem:function(){},pasteItem:function(_c4c,_c4d,_c4e,_c4f,_c50){if(_c4d===this.root){if(!_c4f){this.onLeaveRoot(_c4c);}}this.inherited(arguments,[_c4c,_c4d===this.root?null:_c4d,_c4e===this.root?null:_c4e,_c4f,_c50]);if(_c4e===this.root){this.onAddToRoot(_c4c);}},onAddToRoot:function(item){},onLeaveRoot:function(item){},_requeryTop:function(){var _c51=this.root.children||[];this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_c52){this.root.children=_c52;if(_c51.length!=_c52.length||_c3e.some(_c51,function(item,idx){return _c52[idx]!=item;})){this.onChildrenChange(this.root,_c52);}})});},onNewItem:function(item,_c53){this._requeryTop();this.inherited(arguments);},onDeleteItem:function(item){if(_c3e.indexOf(this.root.children,item)!=-1){this._requeryTop();}this.inherited(arguments);},onSetItem:function(item,_c54,_c55,_c56){this._requeryTop();this.inherited(arguments);}});});},"dijit/tree/_dndSelector":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/dnd/common","dojo/dom","dojo/mouse","dojo/on","dojo/touch","../a11yclick","./_dndContainer"],function(_c57,_c58,_c59,lang,_c5a,dom,_c5b,on,_c5c,_c5d,_c5e){return _c58("dijit.tree._dndSelector",_c5e,{constructor:function(){this.selection={};this.anchor=null;this.events.push(on(this.tree.domNode,_c5c.press,lang.hitch(this,"onMouseDown")),on(this.tree.domNode,_c5c.release,lang.hitch(this,"onMouseUp")),on(this.tree.domNode,_c5c.move,lang.hitch(this,"onMouseMove")),on(this.tree.domNode,_c5d.press,lang.hitch(this,"onClickPress")),on(this.tree.domNode,_c5d.release,lang.hitch(this,"onClickRelease")));},singular:false,getSelectedTreeNodes:function(){var _c5f=[],sel=this.selection;for(var i in sel){_c5f.push(sel[i]);}return _c5f;},selectNone:function(){this.setSelection([]);return this;},destroy:function(){this.inherited(arguments);this.selection=this.anchor=null;},addTreeNode:function(node,_c60){this.setSelection(this.getSelectedTreeNodes().concat([node]));if(_c60){this.anchor=node;}return node;},removeTreeNode:function(node){var _c61=_c57.filter(this.getSelectedTreeNodes(),function(_c62){return !dom.isDescendant(_c62.domNode,node.domNode);});this.setSelection(_c61);return node;},isTreeNodeSelected:function(node){return node.id&&!!this.selection[node.id];},setSelection:function(_c63){var _c64=this.getSelectedTreeNodes();_c57.forEach(this._setDifference(_c64,_c63),lang.hitch(this,function(node){node.setSelected(false);if(this.anchor==node){delete this.anchor;}delete this.selection[node.id];}));_c57.forEach(this._setDifference(_c63,_c64),lang.hitch(this,function(node){node.setSelected(true);this.selection[node.id]=node;}));this._updateSelectionProperties();},_setDifference:function(xs,ys){_c57.forEach(ys,function(y){y.__exclude__=true;});var ret=_c57.filter(xs,function(x){return !x.__exclude__;});_c57.forEach(ys,function(y){delete y["__exclude__"];});return ret;},_updateSelectionProperties:function(){var _c65=this.getSelectedTreeNodes();var _c66=[],_c67=[];_c57.forEach(_c65,function(node){var ary=node.getTreePath();_c67.push(node);_c66.push(ary);},this);var _c68=_c57.map(_c67,function(node){return node.item;});this.tree._set("paths",_c66);this.tree._set("path",_c66[0]||[]);this.tree._set("selectedNodes",_c67);this.tree._set("selectedNode",_c67[0]||null);this.tree._set("selectedItems",_c68);this.tree._set("selectedItem",_c68[0]||null);},onClickPress:function(e){if(this.current&&this.current.isExpandable&&this.tree.isExpandoNode(e.target,this.current)){return;}if(e.type=="mousedown"&&_c5b.isLeft(e)){e.preventDefault();}var _c69=e.type=="keydown"?this.tree.focusedChild:this.current;if(!_c69){return;}var copy=_c5a.getCopyKeyState(e),id=_c69.id;if(!this.singular&&!e.shiftKey&&this.selection[id]){this._doDeselect=true;return;}else{this._doDeselect=false;}this.userSelect(_c69,copy,e.shiftKey);},onClickRelease:function(e){if(!this._doDeselect){return;}this._doDeselect=false;this.userSelect(e.type=="keyup"?this.tree.focusedChild:this.current,_c5a.getCopyKeyState(e),e.shiftKey);},onMouseMove:function(){this._doDeselect=false;},onMouseDown:function(){},onMouseUp:function(){},_compareNodes:function(n1,n2){if(n1===n2){return 0;}if("sourceIndex" in document.documentElement){return n1.sourceIndex-n2.sourceIndex;}else{if("compareDocumentPosition" in document.documentElement){return n1.compareDocumentPosition(n2)&2?1:-1;}else{if(document.createRange){var r1=doc.createRange();r1.setStartBefore(n1);var r2=doc.createRange();r2.setStartBefore(n2);return r1.compareBoundaryPoints(r1.END_TO_END,r2);}else{throw Error("dijit.tree._compareNodes don't know how to compare two different nodes in this browser");}}}},userSelect:function(node,_c6a,_c6b){if(this.singular){if(this.anchor==node&&_c6a){this.selectNone();}else{this.setSelection([node]);this.anchor=node;}}else{if(_c6b&&this.anchor){var cr=this._compareNodes(this.anchor.rowNode,node.rowNode),_c6c,end,_c6d=this.anchor;if(cr<0){_c6c=_c6d;end=node;}else{_c6c=node;end=_c6d;}var _c6e=[];while(_c6c!=end){_c6e.push(_c6c);_c6c=this.tree._getNext(_c6c);}_c6e.push(end);this.setSelection(_c6e);}else{if(this.selection[node.id]&&_c6a){this.removeTreeNode(node);}else{if(_c6a){this.addTreeNode(node,true);}else{this.setSelection([node]);this.anchor=node;}}}}},getItem:function(key){var _c6f=this.selection[key];return {data:_c6f,type:["treeNode"]};},forInSelectedItems:function(f,o){o=o||_c59.global;for(var id in this.selection){f.call(o,this.getItem(id),id,this);}}});});},"dijit/tree/_dndContainer":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom-class","dojo/_base/lang","dojo/on","dojo/touch"],function(_c70,_c71,_c72,lang,on,_c73){return _c71("dijit.tree._dndContainer",null,{constructor:function(tree,_c74){this.tree=tree;this.node=tree.domNode;lang.mixin(this,_c74);this.containerState="";_c72.add(this.node,"dojoDndContainer");this.events=[on(this.node,_c73.enter,lang.hitch(this,"onOverEvent")),on(this.node,_c73.leave,lang.hitch(this,"onOutEvent")),_c70.after(this.tree,"_onNodeMouseEnter",lang.hitch(this,"onMouseOver"),true),_c70.after(this.tree,"_onNodeMouseLeave",lang.hitch(this,"onMouseOut"),true),on(this.node,"dragstart, selectstart",function(evt){evt.preventDefault();})];},destroy:function(){var h;while(h=this.events.pop()){h.remove();}this.node=this.parent=null;},onMouseOver:function(_c75){this.current=_c75;},onMouseOut:function(){this.current=null;},_changeState:function(type,_c76){var _c77="dojoDnd"+type;var _c78=type.toLowerCase()+"State";_c72.replace(this.node,_c77+_c76,_c77+this[_c78]);this[_c78]=_c76;},_addItemClass:function(node,type){_c72.add(node,"dojoDndItem"+type);},_removeItemClass:function(node,type){_c72.remove(node,"dojoDndItem"+type);},onOverEvent:function(){this._changeState("Container","Over");},onOutEvent:function(){this._changeState("Container","");}});});},"dijit/tree/dndSource":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dnd/common","dojo/dom-class","dojo/dom-geometry","dojo/_base/lang","dojo/mouse","dojo/on","dojo/touch","dojo/topic","dojo/dnd/Manager","./_dndSelector"],function(_c79,_c7a,_c7b,_c7c,_c7d,lang,_c7e,on,_c7f,_c80,_c81,_c82){var _c83=_c7a("dijit.tree.dndSource",_c82,{isSource:true,accept:["text","treeNode"],copyOnly:false,dragThreshold:5,betweenThreshold:0,generateText:true,constructor:function(tree,_c84){if(!_c84){_c84={};}lang.mixin(this,_c84);var type=_c84.accept instanceof Array?_c84.accept:["text","treeNode"];this.accept=null;if(type.length){this.accept={};for(var i=0;i<type.length;++i){this.accept[type[i]]=1;}}this.isDragging=false;this.mouseDown=false;this.targetAnchor=null;this.targetBox=null;this.dropPosition="";this._lastX=0;this._lastY=0;this.sourceState="";if(this.isSource){_c7c.add(this.node,"dojoDndSource");}this.targetState="";if(this.accept){_c7c.add(this.node,"dojoDndTarget");}this.topics=[_c80.subscribe("/dnd/source/over",lang.hitch(this,"onDndSourceOver")),_c80.subscribe("/dnd/start",lang.hitch(this,"onDndStart")),_c80.subscribe("/dnd/drop",lang.hitch(this,"onDndDrop")),_c80.subscribe("/dnd/cancel",lang.hitch(this,"onDndCancel"))];},checkAcceptance:function(){return true;},copyState:function(_c85){return this.copyOnly||_c85;},destroy:function(){this.inherited(arguments);var h;while(h=this.topics.pop()){h.remove();}this.targetAnchor=null;},_onDragMouse:function(e,_c86){var m=_c81.manager(),_c87=this.targetAnchor,_c88=this.current,_c89=this.dropPosition;var _c8a="Over";if(_c88&&this.betweenThreshold>0){if(!this.targetBox||_c87!=_c88){this.targetBox=_c7d.position(_c88.rowNode,true);}if((e.pageY-this.targetBox.y)<=this.betweenThreshold){_c8a="Before";}else{if((e.pageY-this.targetBox.y)>=(this.targetBox.h-this.betweenThreshold)){_c8a="After";}}}if(_c86||_c88!=_c87||_c8a!=_c89){if(_c87){this._removeItemClass(_c87.rowNode,_c89);}if(_c88){this._addItemClass(_c88.rowNode,_c8a);}if(!_c88){m.canDrop(false);}else{if(_c88==this.tree.rootNode&&_c8a!="Over"){m.canDrop(false);}else{var _c8b=false,_c8c=false;if(m.source==this){_c8c=(_c8a==="Over");for(var _c8d in this.selection){var _c8e=this.selection[_c8d];if(_c8e.item===_c88.item){_c8b=true;break;}if(_c8e.getParent().id!==_c88.id){_c8c=false;}}}m.canDrop(!_c8b&&!_c8c&&!this._isParentChildDrop(m.source,_c88.rowNode)&&this.checkItemAcceptance(_c88.rowNode,m.source,_c8a.toLowerCase()));}}this.targetAnchor=_c88;this.dropPosition=_c8a;}},onMouseMove:function(e){if(this.isDragging&&this.targetState=="Disabled"){return;}this.inherited(arguments);var m=_c81.manager();if(this.isDragging){this._onDragMouse(e);}else{if(this.mouseDown&&this.isSource&&(Math.abs(e.pageX-this._lastX)>=this.dragThreshold||Math.abs(e.pageY-this._lastY)>=this.dragThreshold)){var _c8f=this.getSelectedTreeNodes();if(_c8f.length){if(_c8f.length>1){var seen=this.selection,i=0,r=[],n,p;nextitem:while((n=_c8f[i++])){for(p=n.getParent();p&&p!==this.tree;p=p.getParent()){if(seen[p.id]){continue nextitem;}}r.push(n);}_c8f=r;}_c8f=_c79.map(_c8f,function(n){return n.domNode;});m.startDrag(this,_c8f,this.copyState(_c7b.getCopyKeyState(e)));this._onDragMouse(e,true);}}}},onMouseDown:function(e){if(e.type=="touchstart"||_c7e.isLeft(e)){this.mouseDown=true;this.mouseButton=e.button;this._lastX=e.pageX;this._lastY=e.pageY;}this.inherited(arguments);},onMouseUp:function(e){if(this.mouseDown){this.mouseDown=false;this.inherited(arguments);}},onMouseOut:function(){this.inherited(arguments);this._unmarkTargetAnchor();},checkItemAcceptance:function(){return true;},onDndSourceOver:function(_c90){if(this!=_c90){this.mouseDown=false;this._unmarkTargetAnchor();}else{if(this.isDragging){var m=_c81.manager();m.canDrop(false);}}},onDndStart:function(_c91,_c92,copy){if(this.isSource){this._changeState("Source",this==_c91?(copy?"Copied":"Moved"):"");}var _c93=this.checkAcceptance(_c91,_c92);this._changeState("Target",_c93?"":"Disabled");if(this==_c91){_c81.manager().overSource(this);}this.isDragging=true;},itemCreator:function(_c94){return _c79.map(_c94,function(node){return {"id":node.id,"name":node.textContent||node.innerText||""};});},onDndDrop:function(_c95,_c96,copy){if(this.containerState=="Over"){var tree=this.tree,_c97=tree.model,_c98=this.targetAnchor,_c99=false;this.isDragging=false;var _c9a;var _c9b;var _c9c;_c9a=(_c98&&_c98.item)||tree.item;if(this.dropPosition=="Before"||this.dropPosition=="After"){_c9a=(_c98.getParent()&&_c98.getParent().item)||tree.item;_c9b=_c98.getIndexInParent();if(this.dropPosition=="After"){_c9b=_c98.getIndexInParent()+1;_c9c=_c98.getNextSibling()&&_c98.getNextSibling().item;}else{_c9c=_c98.item;}}else{_c9a=(_c98&&_c98.item)||tree.item;_c99=true;}var _c9d;_c79.forEach(_c96,function(node,idx){var _c9e=_c95.getItem(node.id);if(_c79.indexOf(_c9e.type,"treeNode")!=-1){var _c9f=_c9e.data,_ca0=_c9f.item,_ca1=_c9f.getParent().item;}if(_c95==this){if(typeof _c9b=="number"){if(_c9a==_ca1&&_c9f.getIndexInParent()<_c9b){_c9b-=1;}}_c97.pasteItem(_ca0,_ca1,_c9a,copy,_c9b,_c9c);}else{if(_c97.isItem(_ca0)){_c97.pasteItem(_ca0,_ca1,_c9a,copy,_c9b,_c9c);}else{if(!_c9d){_c9d=this.itemCreator(_c96,_c98.rowNode,_c95);}_c97.newItem(_c9d[idx],_c9a,_c9b,_c9c);}}},this);if(_c99){this.tree._expandNode(_c98);}}this.onDndCancel();},onDndCancel:function(){this._unmarkTargetAnchor();this.isDragging=false;this.mouseDown=false;delete this.mouseButton;this._changeState("Source","");this._changeState("Target","");},onOverEvent:function(){this.inherited(arguments);_c81.manager().overSource(this);},onOutEvent:function(){this._unmarkTargetAnchor();var m=_c81.manager();if(this.isDragging){m.canDrop(false);}m.outSource(this);this.inherited(arguments);},_isParentChildDrop:function(_ca2,_ca3){if(!_ca2.tree||_ca2.tree!=this.tree){return false;}var root=_ca2.tree.domNode;var ids=_ca2.selection;var node=_ca3.parentNode;while(node!=root&&!ids[node.id]){node=node.parentNode;}return node.id&&ids[node.id];},_unmarkTargetAnchor:function(){if(!this.targetAnchor){return;}this._removeItemClass(this.targetAnchor.rowNode,this.dropPosition);this.targetAnchor=null;this.targetBox=null;this.dropPosition=null;},_markDndStatus:function(copy){this._changeState("Source",copy?"Copied":"Moved");}});return _c83;});},"dojo/dnd/Manager":function(){define(["../_base/array","../_base/declare","../_base/lang","../_base/window","../dom-class","../Evented","../has","../keys","../on","../topic","../touch","./common","./autoscroll","./Avatar"],function(_ca4,_ca5,lang,win,_ca6,_ca7,has,keys,on,_ca8,_ca9,dnd,_caa,_cab){var _cac=_ca5("dojo.dnd.Manager",[_ca7],{constructor:function(){this.avatar=null;this.source=null;this.nodes=[];this.copy=true;this.target=null;this.canDropFlag=false;this.events=[];},OFFSET_X:has("touch")?4:16,OFFSET_Y:has("touch")?4:16,overSource:function(_cad){if(this.avatar){this.target=(_cad&&_cad.targetState!="Disabled")?_cad:null;this.canDropFlag=Boolean(this.target);this.avatar.update();}_ca8.publish("/dnd/source/over",_cad);},outSource:function(_cae){if(this.avatar){if(this.target==_cae){this.target=null;this.canDropFlag=false;this.avatar.update();_ca8.publish("/dnd/source/over",null);}}else{_ca8.publish("/dnd/source/over",null);}},startDrag:function(_caf,_cb0,copy){_caa.autoScrollStart(win.doc);this.source=_caf;this.nodes=_cb0;this.copy=Boolean(copy);this.avatar=this.makeAvatar();win.body().appendChild(this.avatar.node);_ca8.publish("/dnd/start",_caf,_cb0,this.copy);function _cb1(e){e.preventDefault();e.stopPropagation();};this.events=[on(win.doc,_ca9.move,lang.hitch(this,"onMouseMove")),on(win.doc,_ca9.release,lang.hitch(this,"onMouseUp")),on(win.doc,"keydown",lang.hitch(this,"onKeyDown")),on(win.doc,"keyup",lang.hitch(this,"onKeyUp")),on(win.doc,"dragstart",_cb1),on(win.body(),"selectstart",_cb1)];var c="dojoDnd"+(copy?"Copy":"Move");_ca6.add(win.body(),c);},canDrop:function(flag){var _cb2=Boolean(this.target&&flag);if(this.canDropFlag!=_cb2){this.canDropFlag=_cb2;this.avatar.update();}},stopDrag:function(){_ca6.remove(win.body(),["dojoDndCopy","dojoDndMove"]);_ca4.forEach(this.events,function(_cb3){_cb3.remove();});this.events=[];this.avatar.destroy();this.avatar=null;this.source=this.target=null;this.nodes=[];},makeAvatar:function(){return new _cab(this);},updateAvatar:function(){this.avatar.update();},onMouseMove:function(e){var a=this.avatar;if(a){_caa.autoScrollNodes(e);var s=a.node.style;s.left=(e.pageX+this.OFFSET_X)+"px";s.top=(e.pageY+this.OFFSET_Y)+"px";var copy=Boolean(this.source.copyState(dnd.getCopyKeyState(e)));if(this.copy!=copy){this._setCopyStatus(copy);}}if(has("touch")){e.preventDefault();}},onMouseUp:function(e){if(this.avatar){if(this.target&&this.canDropFlag){var copy=Boolean(this.source.copyState(dnd.getCopyKeyState(e)));_ca8.publish("/dnd/drop/before",this.source,this.nodes,copy,this.target,e);_ca8.publish("/dnd/drop",this.source,this.nodes,copy,this.target,e);}else{_ca8.publish("/dnd/cancel");}this.stopDrag();}},onKeyDown:function(e){if(this.avatar){switch(e.keyCode){case keys.CTRL:var copy=Boolean(this.source.copyState(true));if(this.copy!=copy){this._setCopyStatus(copy);}break;case keys.ESCAPE:_ca8.publish("/dnd/cancel");this.stopDrag();break;}}},onKeyUp:function(e){if(this.avatar&&e.keyCode==keys.CTRL){var copy=Boolean(this.source.copyState(false));if(this.copy!=copy){this._setCopyStatus(copy);}}},_setCopyStatus:function(copy){this.copy=copy;this.source._markDndStatus(this.copy);this.updateAvatar();_ca6.replace(win.body(),"dojoDnd"+(this.copy?"Copy":"Move"),"dojoDnd"+(this.copy?"Move":"Copy"));}});dnd._manager=null;_cac.manager=dnd.manager=function(){if(!dnd._manager){dnd._manager=new _cac();}return dnd._manager;};return _cac;});},"dojo/dnd/Avatar":function(){define(["../_base/declare","../_base/window","../dom","../dom-attr","../dom-class","../dom-construct","../hccss","../query"],function(_cb4,win,dom,_cb5,_cb6,_cb7,has,_cb8){return _cb4("dojo.dnd.Avatar",null,{constructor:function(_cb9){this.manager=_cb9;this.construct();},construct:function(){var a=_cb7.create("table",{"class":"dojoDndAvatar",style:{position:"absolute",zIndex:"1999",margin:"0px"}}),_cba=this.manager.source,node,b=_cb7.create("tbody",null,a),tr=_cb7.create("tr",null,b),td=_cb7.create("td",null,tr),k=Math.min(5,this.manager.nodes.length),i=0;if(has("highcontrast")){_cb7.create("span",{id:"a11yIcon",innerHTML:this.manager.copy?"+":"<"},td);}_cb7.create("span",{innerHTML:_cba.generateText?this._generateText():""},td);_cb5.set(tr,{"class":"dojoDndAvatarHeader",style:{opacity:0.9}});for(;i<k;++i){if(_cba.creator){node=_cba._normalizedCreator(_cba.getItem(this.manager.nodes[i].id).data,"avatar").node;}else{node=this.manager.nodes[i].cloneNode(true);if(node.tagName.toLowerCase()=="tr"){var _cbb=_cb7.create("table"),_cbc=_cb7.create("tbody",null,_cbb);_cbc.appendChild(node);node=_cbb;}}node.id="";tr=_cb7.create("tr",null,b);td=_cb7.create("td",null,tr);td.appendChild(node);_cb5.set(tr,{"class":"dojoDndAvatarItem",style:{opacity:(9-i)/10}});}this.node=a;},destroy:function(){_cb7.destroy(this.node);this.node=false;},update:function(){_cb6.toggle(this.node,"dojoDndAvatarCanDrop",this.manager.canDropFlag);if(has("highcontrast")){var icon=dom.byId("a11yIcon");var text="+";if(this.manager.canDropFlag&&!this.manager.copy){text="< ";}else{if(!this.manager.canDropFlag&&!this.manager.copy){text="o";}else{if(!this.manager.canDropFlag){text="x";}}}icon.innerHTML=text;}_cb8(("tr.dojoDndAvatarHeader td span"+(has("highcontrast")?" span":"")),this.node).forEach(function(node){node.innerHTML=this.manager.source.generateText?this._generateText():"";},this);},_generateText:function(){return this.manager.nodes.length.toString();}});});},"url:dijit/templates/ColorPalette.html":"<div class=\"dijitInline dijitColorPalette\" role=\"grid\">\n\t<table data-dojo-attach-point=\"paletteTableNode\" class=\"dijitPaletteTable\" cellSpacing=\"0\" cellPadding=\"0\" role=\"presentation\">\n\t\t<tbody data-dojo-attach-point=\"gridNode\"></tbody>\n\t</table>\n</div>\n","url:dijit/templates/Dialog.html":"<div class=\"dijitDialog\" role=\"dialog\" aria-labelledby=\"${id}_title\">\n\t<div data-dojo-attach-point=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t\t<span data-dojo-attach-point=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\"\n\t\t\t\trole=\"heading\" level=\"1\"></span>\n\t\t<span data-dojo-attach-point=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" data-dojo-attach-event=\"ondijitclick: onCancel\" title=\"${buttonCancel}\" role=\"button\" tabindex=\"-1\">\n\t\t\t<span data-dojo-attach-point=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\n\t${!actionBarTemplate}\n</div>\n\n","url:dijit/form/templates/Button.html":"<span class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><span class=\"dijitReset dijitInline dijitButtonNode\"\n\t\tdata-dojo-attach-event=\"ondijitclick:__onClick\" role=\"presentation\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode,focusNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span class=\"dijitReset dijitToggleButtonIconChar\">&#x25CF;</span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\"\n\t\tdata-dojo-attach-event=\"onclick:_onClick\"\n\t\ttabIndex=\"-1\" aria-hidden=\"true\" data-dojo-attach-point=\"valueNode\"\n/></span>\n","url:dijit/form/templates/CheckBox.html":"<div class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><input\n\t \t${!nameAttrSetting} type=\"${type}\" role=\"${type}\" aria-checked=\"false\" ${checkedAttrSetting}\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\n\t\tdata-dojo-attach-point=\"focusNode\"\n\t \tdata-dojo-attach-event=\"ondijitclick:_onClick\"\n/></div>\n","url:dijit/form/templates/DropDownButton.html":"<span class=\"dijit dijitReset dijitInline\"\n\t><span class='dijitReset dijitInline dijitButtonNode'\n\t\tdata-dojo-attach-event=\"ondijitclick:__onClick\" data-dojo-attach-point=\"_buttonNode\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"focusNode,titleNode,_arrowWrapperNode,_popupStateNode\"\n\t\t\trole=\"button\" aria-haspopup=\"true\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\"\n\t\t\t\tdata-dojo-attach-point=\"iconNode\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonInner\"></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonChar\">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\" tabIndex=\"-1\"\n\t\tdata-dojo-attach-event=\"onclick:_onClick\" data-dojo-attach-point=\"valueNode\" aria-hidden=\"true\"\n/></span>\n","url:dijit/form/templates/ComboButton.html":"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tcellspacing='0' cellpadding='0' role=\"presentation\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonNode\" data-dojo-attach-point=\"buttonNode\" data-dojo-attach-event=\"ondijitclick:__onClick,onkeydown:_onButtonKeyDown\"\n\t\t><div id=\"${id}_button\" class=\"dijitReset dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" data-dojo-attach-point=\"containerNode\" role=\"presentation\"></div\n\t\t></div\n\t\t></td\n\t\t><td id=\"${id}_arrow\" class='dijitReset dijitRight dijitButtonNode dijitArrowButton'\n\t\t\tdata-dojo-attach-point=\"_popupStateNode,focusNode,_buttonNode\"\n\t\t\tdata-dojo-attach-event=\"onkeydown:_onArrowKeyDown\"\n\t\t\ttitle=\"${optionsTitle}\"\n\t\t\trole=\"button\" aria-haspopup=\"true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" role=\"presentation\">&#9660;</div\n\t\t></td\n\t\t><td style=\"display:none !important;\"\n\t\t\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" data-dojo-attach-point=\"valueNode\"\n\t\t\t\tclass=\"dijitOffScreen\" aria-hidden=\"true\" data-dojo-attach-event=\"onclick:_onClick\"\n\t\t/></td></tr></tbody\n></table>\n","url:dijit/form/templates/TextBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\" id=\"widget_${id}\" role=\"presentation\"\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n","url:dijit/templates/Tooltip.html":"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\" data-dojo-attach-event=\"mouseenter:onMouseEnter,mouseleave:onMouseLeave\"\n\t><div class=\"dijitTooltipConnector\" data-dojo-attach-point=\"connectorNode\"></div\n\t><div class=\"dijitTooltipContainer dijitTooltipContents\" data-dojo-attach-point=\"containerNode\" role='alert'></div\n></div>\n","url:dijit/form/templates/ValidationTextBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\" role=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n","url:dijit/form/templates/DropDownBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\"\n\trole=\"combobox\"\n\taria-haspopup=\"true\"\n\tdata-dojo-attach-point=\"_popupStateNode\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdata-dojo-attach-point=\"_buttonNode\" role=\"presentation\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"button presentation\" aria-hidden=\"true\"\n\t\t\t${_buttonInputDisabled}\n\t/></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' ${!nameAttrSetting} type=\"${type}\" autocomplete=\"off\"\n\t\t\tdata-dojo-attach-point=\"textbox,focusNode\" role=\"textbox\"\n\t/></div\n></div>\n","url:dijit/templates/Menu.html":"<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" role=\"menu\" tabIndex=\"${tabIndex}\"\n\t cellspacing=\"0\">\n\t<tbody class=\"dijitReset\" data-dojo-attach-point=\"containerNode\"></tbody>\n</table>\n","url:dijit/templates/MenuItem.html":"<tr class=\"dijitReset\" data-dojo-attach-point=\"focusNode\" role=\"menuitem\" tabIndex=\"-1\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitMenuItemIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,textDirNode\"\n\t\trole=\"presentation\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">\n\t\t<span data-dojo-attach-point=\"arrowWrapper\" style=\"visibility: hidden\">\n\t\t\t<span class=\"dijitInline dijitIcon dijitMenuExpand\"></span>\n\t\t\t<span class=\"dijitMenuExpandA11y\">+</span>\n\t\t</span>\n\t</td>\n</tr>\n","url:dijit/templates/MenuSeparator.html":"<tr class=\"dijitMenuSeparator\" role=\"separator\">\n\t<td class=\"dijitMenuSeparatorIconCell\">\n\t\t<div class=\"dijitMenuSeparatorTop\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n\t<td colspan=\"3\" class=\"dijitMenuSeparatorLabelCell\">\n\t\t<div class=\"dijitMenuSeparatorTop dijitMenuSeparatorLabel\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n</tr>\n","url:dijit/form/templates/Select.html":"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tdata-dojo-attach-point=\"_buttonNode,tableNode,focusNode,_popupStateNode\" cellspacing='0' cellpadding='0'\n\trole=\"listbox\" aria-haspopup=\"true\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents\" role=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitInputField dijitButtonText\" data-dojo-attach-point=\"containerNode,textDirNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitValidationContainer\"\n\t\t\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t/></div\n\t\t\t><input type=\"hidden\" ${!nameAttrSetting} data-dojo-attach-point=\"valueNode\" value=\"${value}\" aria-hidden=\"true\"\n\t\t/></td\n\t\t><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer\"\n\t\t\tdata-dojo-attach-point=\"titleNode\" role=\"presentation\"\n\t\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t\t${_buttonInputDisabled}\n\t\t/></td\n\t></tr></tbody\n></table>\n","url:dijit/templates/InlineEditBox.html":"<span data-dojo-attach-point=\"editNode\" role=\"presentation\" class=\"dijitReset dijitInline dijitOffScreen\"\n\t><span data-dojo-attach-point=\"editorPlaceholder\"></span\n\t><span data-dojo-attach-point=\"buttonContainer\"\n\t\t><button data-dojo-type=\"./form/Button\" data-dojo-props=\"label: '${buttonSave}', 'class': 'saveButton'\"\n\t\t\tdata-dojo-attach-point=\"saveButton\" data-dojo-attach-event=\"onClick:save\"></button\n\t\t><button data-dojo-type=\"./form/Button\" data-dojo-props=\"label: '${buttonCancel}', 'class': 'cancelButton'\"\n\t\t\tdata-dojo-attach-point=\"cancelButton\" data-dojo-attach-event=\"onClick:cancel\"></button\n\t></span\n></span>\n","url:dijit/templates/CheckedMenuItem.html":"<tr class=\"dijitReset\" data-dojo-attach-point=\"focusNode\" role=\"${role}\" tabIndex=\"-1\" aria-checked=\"${checked}\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<span class=\"dijitInline dijitIcon dijitMenuItemIcon dijitCheckedMenuItemIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t\t<span class=\"dijitMenuItemIconChar dijitCheckedMenuItemIconChar\">${!checkedChar}</span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,labelNode,textDirNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">&#160;</td>\n</tr>\n","url:dijit/layout/templates/AccordionButton.html":"<div data-dojo-attach-event='ondijitclick:_onTitleClick' class='dijitAccordionTitle' role=\"presentation\">\n\t<div data-dojo-attach-point='titleNode,focusNode' data-dojo-attach-event='onkeydown:_onTitleKeyDown'\n\t\t\tclass='dijitAccordionTitleFocus' role=\"tab\" aria-expanded=\"false\"\n\t\t><span class='dijitInline dijitAccordionArrow' role=\"presentation\"></span\n\t\t><span class='arrowTextUp' role=\"presentation\">+</span\n\t\t><span class='arrowTextDown' role=\"presentation\">-</span\n\t\t><span role=\"presentation\" class=\"dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t\t<span role=\"presentation\" data-dojo-attach-point='titleTextNode, textDirNode' class='dijitAccordionText'></span>\n\t</div>\n</div>\n","url:dijit/layout/templates/TabContainer.html":"<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" data-dojo-attach-point=\"tablistNode\"></div>\n\t<div data-dojo-attach-point=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" data-dojo-attach-point=\"containerNode\"></div>\n</div>\n","url:dijit/layout/templates/_TabButton.html":"<div role=\"presentation\" data-dojo-attach-point=\"titleNode,innerDiv,tabContent\" class=\"dijitTabInner dijitTabContent\">\n\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTabButtonIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t<span data-dojo-attach-point='containerNode,focusNode' class='tabLabel'></span>\n\t<span class=\"dijitInline dijitTabCloseButton dijitTabCloseIcon\" data-dojo-attach-point='closeNode'\n\t\t role=\"presentation\">\n\t\t<span data-dojo-attach-point='closeText' class='dijitTabCloseText'>[x]</span\n\t\t\t\t></span>\n</div>\n","url:dijit/layout/templates/ScrollingTabController.html":"<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerMenuButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_menuBtn\"\n\t\t data-dojo-props=\"containerId: '${containerId}', iconClass: 'dijitTabStripMenuIcon',\n\t\t\t\t\tdropDownPosition: ['below-alt', 'above-alt']\"\n\t\t data-dojo-attach-point=\"_menuBtn\" showLabel=\"false\" title=\"\">&#9660;</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_leftBtn\"\n\t\t data-dojo-props=\"iconClass:'dijitTabStripSlideLeftIcon', showLabel:false, title:''\"\n\t\t data-dojo-attach-point=\"_leftBtn\" data-dojo-attach-event=\"onClick: doSlideLeft\">&#9664;</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_rightBtn\"\n\t\t data-dojo-props=\"iconClass:'dijitTabStripSlideRightIcon', showLabel:false, title:''\"\n\t\t data-dojo-attach-point=\"_rightBtn\" data-dojo-attach-event=\"onClick: doSlideRight\">&#9654;</div>\n\t<div class='dijitTabListWrapper' data-dojo-attach-point='tablistWrapper'>\n\t\t<div role='tablist' data-dojo-attach-event='onkeydown:onkeydown'\n\t\t\t data-dojo-attach-point='containerNode' class='nowrapTabStrip'></div>\n\t</div>\n</div>","url:dijit/layout/templates/_ScrollingTabControllerButton.html":"<div data-dojo-attach-event=\"ondijitclick:_onClick\" class=\"dijitTabInnerDiv dijitTabContent dijitButtonContents\" data-dojo-attach-point=\"focusNode\" role=\"button\">\n\t<span role=\"presentation\" class=\"dijitInline dijitTabStripIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t<span data-dojo-attach-point=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n</div>","url:dijit/templates/ProgressBar.html":"<div class=\"dijitProgressBar dijitProgressBarEmpty\" role=\"progressbar\"\n\t><div data-dojo-attach-point=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\" role=\"presentation\"></div\n\t\t><span style=\"visibility:hidden\">&#160;</span\n\t></div\n\t><div data-dojo-attach-point=\"labelNode\" class=\"dijitProgressBarLabel\" id=\"${id}_label\"></div\n\t><span data-dojo-attach-point=\"indeterminateHighContrastImage\"\n\t\t class=\"dijitInline dijitProgressBarIndeterminateHighContrastImage\"></span\n></div>\n","url:dijit/templates/TooltipDialog.html":"<div role=\"alertdialog\" tabIndex=\"-1\">\n\t<div class=\"dijitTooltipContainer\" role=\"presentation\">\n\t\t<div data-dojo-attach-point=\"contentsNode\" class=\"dijitTooltipContents dijitTooltipFocusNode\">\n\t\t\t<div data-dojo-attach-point=\"containerNode\"></div>\n\t\t\t${!actionBarTemplate}\n\t\t</div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" role=\"presentation\" data-dojo-attach-point=\"connectorNode\"></div>\n</div>\n","url:dijit/templates/TreeNode.html":"<div class=\"dijitTreeNode\" role=\"presentation\"\n\t><div data-dojo-attach-point=\"rowNode\" class=\"dijitTreeRow\" role=\"presentation\"\n\t\t><span data-dojo-attach-point=\"expandoNode\" class=\"dijitInline dijitTreeExpando\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"expandoNodeText\" class=\"dijitExpandoText\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" role=\"presentation\">\n\t\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTreeIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span data-dojo-attach-point=\"labelNode,focusNode\" class=\"dijitTreeLabel\" role=\"treeitem\"\n\t\t\t\t tabindex=\"-1\" aria-selected=\"false\" id=\"${id}_label\"></span>\n\t\t</span\n\t></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeNodeContainer\" role=\"presentation\"\n\t\t style=\"display: none;\" aria-labelledby=\"${id}_label\"></div>\n</div>\n","url:dijit/templates/Tree.html":"<div role=\"tree\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" data-dojo-attach-point=\"indentDetector\"></div>\n\t<div class=\"dijitTreeExpando dijitTreeExpandoLoading\" data-dojo-attach-point=\"rootLoadingIndicator\"></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeContainer\" role=\"presentation\">\n\t</div>\n</div>\n","*now":function(r){r(["dojo/i18n!*preload*dojo/nls/tt-rss-layer*[\"ar\",\"ca\",\"cs\",\"da\",\"de\",\"el\",\"en-gb\",\"en-us\",\"es-es\",\"fi-fi\",\"fr-fr\",\"he-il\",\"hu\",\"it-it\",\"ja-jp\",\"ko-kr\",\"nl-nl\",\"nb\",\"pl\",\"pt-br\",\"pt-pt\",\"ru\",\"sk\",\"sl\",\"sv\",\"th\",\"tr\",\"zh-tw\",\"zh-cn\",\"ROOT\"]"]);}}});define("dojo/tt-rss-layer",[],1); \ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 000000000..05a590c3c
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,4380 @@
+{
+ "name": "tt-rss",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
+ "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.12.13"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.12.11",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
+ "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==",
+ "dev": true
+ },
+ "@babel/highlight": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz",
+ "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.12.11",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/parser": {
+ "version": "7.13.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.4.tgz",
+ "integrity": "sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA==",
+ "dev": true
+ },
+ "@eslint/eslintrc": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz",
+ "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.12.4",
+ "debug": "^4.1.1",
+ "espree": "^7.3.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.20",
+ "minimatch": "^3.0.4",
+ "strip-json-comments": "^3.1.1"
+ }
+ },
+ "accord": {
+ "version": "0.29.0",
+ "resolved": "https://registry.npmjs.org/accord/-/accord-0.29.0.tgz",
+ "integrity": "sha512-3OOR92FTc2p5/EcOzPcXp+Cbo+3C15nV9RXHlOUBCBpHhcB+0frbSNR9ehED/o7sTcyGVtqGJpguToEdlXhD0w==",
+ "dev": true,
+ "requires": {
+ "convert-source-map": "^1.5.0",
+ "glob": "^7.0.5",
+ "indx": "^0.2.3",
+ "lodash.clone": "^4.3.2",
+ "lodash.defaults": "^4.0.1",
+ "lodash.flatten": "^4.2.0",
+ "lodash.merge": "^4.4.0",
+ "lodash.partialright": "^4.1.4",
+ "lodash.pick": "^4.2.1",
+ "lodash.uniq": "^4.3.0",
+ "resolve": "^1.5.0",
+ "semver": "^5.3.0",
+ "uglify-js": "^2.8.22",
+ "when": "^3.7.8"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
+ "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2",
+ "longest": "^1.0.1",
+ "repeat-string": "^1.5.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "dev": true
+ },
+ "ansi-cyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
+ "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-red": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
+ "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "append-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
+ "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
+ "dev": true,
+ "requires": {
+ "buffer-equal": "^1.0.0"
+ }
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-filter": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
+ "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=",
+ "dev": true,
+ "requires": {
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
+ "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=",
+ "dev": true,
+ "requires": {
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
+ "dev": true
+ },
+ "array-initial": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
+ "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=",
+ "dev": true,
+ "requires": {
+ "array-slice": "^1.0.0",
+ "is-number": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
+ }
+ }
+ },
+ "array-last": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
+ "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==",
+ "dev": true,
+ "requires": {
+ "is-number": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
+ }
+ }
+ },
+ "array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true
+ },
+ "array-sort": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
+ "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
+ "dev": true,
+ "requires": {
+ "default-compare": "^1.0.0",
+ "get-value": "^2.0.6",
+ "kind-of": "^5.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true
+ },
+ "async-done": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
+ "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.2",
+ "process-nextick-args": "^2.0.0",
+ "stream-exhaust": "^1.0.1"
+ }
+ },
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+ "dev": true
+ },
+ "async-settle": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
+ "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=",
+ "dev": true,
+ "requires": {
+ "async-done": "^1.2.2"
+ }
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "bach": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
+ "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=",
+ "dev": true,
+ "requires": {
+ "arr-filter": "^1.1.1",
+ "arr-flatten": "^1.0.1",
+ "arr-map": "^2.0.0",
+ "array-each": "^1.0.0",
+ "array-initial": "^1.0.0",
+ "array-last": "^1.1.1",
+ "async-done": "^1.2.2",
+ "async-settle": "^1.0.0",
+ "now-and-later": "^2.0.0"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true
+ },
+ "bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "buffer-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
+ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=",
+ "dev": true
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "dev": true
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "requires": {
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+ "dev": true
+ },
+ "clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
+ "dev": true
+ },
+ "cloneable-readable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
+ "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "process-nextick-args": "^2.0.0",
+ "readable-stream": "^2.3.5"
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "collection-map": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
+ "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=",
+ "dev": true,
+ "requires": {
+ "arr-map": "^2.0.2",
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "convert-source-map": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+ "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "copy-anything": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz",
+ "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==",
+ "dev": true,
+ "requires": {
+ "is-what": "^3.12.0"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "copy-props": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz",
+ "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==",
+ "dev": true,
+ "requires": {
+ "each-props": "^1.3.0",
+ "is-plain-object": "^2.0.1"
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "d": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
+ "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "dev": true,
+ "requires": {
+ "es5-ext": "^0.10.50",
+ "type": "^1.0.1"
+ }
+ },
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "default-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
+ "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^5.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "default-resolution": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
+ "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "dev": true
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "each-props": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
+ "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.1",
+ "object.defaults": "^1.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enquirer": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+ "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^4.1.1"
+ }
+ },
+ "errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es5-ext": {
+ "version": "0.10.53",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
+ "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
+ "dev": true,
+ "requires": {
+ "es6-iterator": "~2.0.3",
+ "es6-symbol": "~3.1.3",
+ "next-tick": "~1.0.0"
+ }
+ },
+ "es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "es6-symbol": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
+ "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "dev": true,
+ "requires": {
+ "d": "^1.0.1",
+ "ext": "^1.1.2"
+ }
+ },
+ "es6-weak-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
+ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "eslint": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.19.0.tgz",
+ "integrity": "sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@eslint/eslintrc": "^0.3.0",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "enquirer": "^2.3.5",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^2.1.0",
+ "eslint-visitor-keys": "^2.0.0",
+ "espree": "^7.3.1",
+ "esquery": "^1.2.0",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^6.0.0",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash": "^4.17.20",
+ "minimatch": "^3.0.4",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "progress": "^2.0.0",
+ "regexpp": "^3.1.0",
+ "semver": "^7.2.1",
+ "strip-ansi": "^6.0.0",
+ "strip-json-comments": "^3.1.0",
+ "table": "^6.0.4",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ }
+ },
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz",
+ "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
+ "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.4.0",
+ "acorn-jsx": "^5.3.1",
+ "eslint-visitor-keys": "^1.3.0"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.2.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+ "dev": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "estree-walker": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "ext": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
+ "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
+ "dev": true,
+ "requires": {
+ "type": "^2.0.0"
+ },
+ "dependencies": {
+ "type": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz",
+ "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==",
+ "dev": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "fancy-log": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
+ "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+ "dev": true,
+ "requires": {
+ "ansi-gray": "^0.1.1",
+ "color-support": "^1.1.3",
+ "parse-node-version": "^1.0.0",
+ "time-stamp": "^1.0.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "file-entry-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz",
+ "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^3.0.4"
+ }
+ },
+ "file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "dev": true,
+ "optional": true
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
+ "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
+ "dev": true,
+ "requires": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ }
+ },
+ "fined": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
+ "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^2.0.3",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.2.0",
+ "parse-filepath": "^1.0.1"
+ }
+ },
+ "flagged-respawn": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
+ "dev": true
+ },
+ "flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "requires": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ }
+ },
+ "flatted": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz",
+ "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==",
+ "dev": true
+ },
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fs-mkdirp-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
+ "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "through2": "^2.0.3"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "dev": true
+ },
+ "get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "glob-stream": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
+ "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.0",
+ "glob": "^7.1.1",
+ "glob-parent": "^3.1.0",
+ "is-negated-glob": "^1.0.0",
+ "ordered-read-streams": "^1.0.0",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.1.5",
+ "remove-trailing-separator": "^1.0.1",
+ "to-absolute-glob": "^2.0.0",
+ "unique-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ }
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "glob-watcher": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz",
+ "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-done": "^1.2.0",
+ "chokidar": "^2.0.0",
+ "is-negated-glob": "^1.0.0",
+ "just-debounce": "^1.0.0",
+ "normalize-path": "^3.0.0",
+ "object.defaults": "^1.1.0"
+ }
+ },
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ }
+ },
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ },
+ "dependencies": {
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "glogg": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
+ "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
+ "dev": true,
+ "requires": {
+ "sparkles": "^1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
+ "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
+ "dev": true
+ },
+ "gulp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
+ "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
+ "dev": true,
+ "requires": {
+ "glob-watcher": "^5.0.3",
+ "gulp-cli": "^2.2.0",
+ "undertaker": "^1.2.1",
+ "vinyl-fs": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "^0.1.0"
+ }
+ },
+ "gulp-cli": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
+ "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^1.0.1",
+ "archy": "^1.0.0",
+ "array-sort": "^1.0.0",
+ "color-support": "^1.1.3",
+ "concat-stream": "^1.6.0",
+ "copy-props": "^2.0.1",
+ "fancy-log": "^1.3.2",
+ "gulplog": "^1.0.0",
+ "interpret": "^1.4.0",
+ "isobject": "^3.0.1",
+ "liftoff": "^3.1.0",
+ "matchdep": "^2.0.0",
+ "mute-stdout": "^1.0.0",
+ "pretty-hrtime": "^1.0.0",
+ "replace-homedir": "^1.0.0",
+ "semver-greatest-satisfied-range": "^1.1.0",
+ "v8flags": "^3.2.0",
+ "yargs": "^7.1.0"
+ }
+ }
+ }
+ },
+ "gulp-less": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-4.0.1.tgz",
+ "integrity": "sha512-hmM2k0FfQp7Ptm3ZaqO2CkMX3hqpiIOn4OHtuSsCeFym63F7oWlEua5v6u1cIjVUKYsVIs9zPg9vbqTEb/udpA==",
+ "dev": true,
+ "requires": {
+ "accord": "^0.29.0",
+ "less": "2.6.x || ^3.7.1",
+ "object-assign": "^4.0.1",
+ "plugin-error": "^0.1.2",
+ "replace-ext": "^1.0.0",
+ "through2": "^2.0.0",
+ "vinyl-sourcemaps-apply": "^0.2.0"
+ }
+ },
+ "gulp-touch-fd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/gulp-touch-fd/-/gulp-touch-fd-2.0.0.tgz",
+ "integrity": "sha512-rXhmJaWGylYoVJJ7tL2enb4jJBfzSU5rLnuaTj9TUaYf1HwRYmLlSJRPUvFB/8rH5YzxdZ2K0sSWB56bZt3jfA==",
+ "dev": true,
+ "requires": {
+ "map-stream": "0.0.7"
+ }
+ },
+ "gulplog": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "dev": true,
+ "requires": {
+ "glogg": "^1.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "has-symbols": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "^1.0.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
+ "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+ "dev": true,
+ "optional": true
+ },
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indx": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz",
+ "integrity": "sha1-Fdz1bunPZcAjTFE8J/vVgOcPvFA=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "dev": true
+ },
+ "is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "dev": true,
+ "requires": {
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-core-module": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
+ "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-negated-glob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
+ "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
+ "requires": {
+ "is-unc-path": "^1.0.0"
+ }
+ },
+ "is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "dev": true,
+ "requires": {
+ "unc-path-regex": "^0.1.2"
+ }
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-valid-glob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
+ "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
+ "dev": true
+ },
+ "is-what": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.12.0.tgz",
+ "integrity": "sha512-2ilQz5/f/o9V7WRWJQmpFYNmQFZ9iM+OXRonZKcYgTkCzjb949Vi4h282PD1UfmgHk666rcWonbRJ++KI41VGw==",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "just-debounce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz",
+ "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ },
+ "last-run": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
+ "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=",
+ "dev": true,
+ "requires": {
+ "default-resolution": "^2.0.0",
+ "es6-weak-map": "^2.0.1"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true
+ },
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.5"
+ }
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "lead": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
+ "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
+ "dev": true,
+ "requires": {
+ "flush-write-stream": "^1.0.2"
+ }
+ },
+ "less": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
+ "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
+ "dev": true,
+ "requires": {
+ "copy-anything": "^2.0.1",
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "native-request": "^1.0.5",
+ "source-map": "~0.6.0",
+ "tslib": "^1.10.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ }
+ },
+ "liftoff": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
+ "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.0",
+ "findup-sync": "^3.0.0",
+ "fined": "^1.0.1",
+ "flagged-respawn": "^1.0.0",
+ "is-plain-object": "^2.0.4",
+ "object.map": "^1.0.0",
+ "rechoir": "^0.6.2",
+ "resolve": "^1.1.7"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
+ "dev": true
+ },
+ "lodash.clone": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
+ "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=",
+ "dev": true
+ },
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
+ "dev": true
+ },
+ "lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "lodash.partialright": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz",
+ "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=",
+ "dev": true
+ },
+ "lodash.pick": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
+ "dev": true
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+ "dev": true
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "make-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
+ "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "matchdep": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
+ "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=",
+ "dev": true,
+ "requires": {
+ "findup-sync": "^2.0.0",
+ "micromatch": "^3.0.4",
+ "resolve": "^1.4.0",
+ "stack-trace": "0.0.10"
+ },
+ "dependencies": {
+ "findup-sync": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+ "dev": true,
+ "requires": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^3.1.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ }
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "mute-stdout": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
+ "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.14.2",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
+ "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "native-request": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz",
+ "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==",
+ "dev": true,
+ "optional": true
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "next-tick": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
+ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+ "dev": true
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "now-and-later": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
+ "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.2"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "dev": true,
+ "requires": {
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+ "dev": true,
+ "requires": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "object.reduce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
+ "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=",
+ "dev": true,
+ "requires": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "dev": true,
+ "requires": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ }
+ },
+ "ordered-read-streams": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
+ "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "dev": true,
+ "requires": {
+ "lcid": "^1.0.0"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+ "dev": true,
+ "requires": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "dev": true
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "dev": true,
+ "requires": {
+ "path-root-regex": "^0.1.0"
+ }
+ },
+ "path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "plugin-error": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
+ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
+ "dev": true,
+ "requires": {
+ "ansi-cyan": "^0.1.1",
+ "ansi-red": "^0.1.1",
+ "arr-diff": "^1.0.1",
+ "arr-union": "^2.0.1",
+ "extend-shallow": "^1.1.2"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
+ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.0.1",
+ "array-slice": "^0.2.3"
+ }
+ },
+ "arr-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
+ "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
+ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^1.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
+ "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
+ "dev": true
+ }
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true
+ },
+ "pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true,
+ "optional": true
+ },
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexpp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "dev": true
+ },
+ "remove-bom-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
+ "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5",
+ "is-utf8": "^0.2.1"
+ }
+ },
+ "remove-bom-stream": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
+ "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
+ "dev": true,
+ "requires": {
+ "remove-bom-buffer": "^3.0.0",
+ "safe-buffer": "^5.1.0",
+ "through2": "^2.0.3"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "replace-ext": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
+ "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
+ "dev": true
+ },
+ "replace-homedir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
+ "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1",
+ "is-absolute": "^1.0.0",
+ "remove-trailing-separator": "^1.1.0"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+ "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.1.0",
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "resolve-options": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
+ "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=",
+ "dev": true,
+ "requires": {
+ "value-or-function": "^3.0.0"
+ }
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "dev": true,
+ "requires": {
+ "align-text": "^0.1.1"
+ }
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "semver": {
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "semver-greatest-satisfied-range": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
+ "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=",
+ "dev": true,
+ "requires": {
+ "sver-compat": "^1.5.0"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "dev": true
+ },
+ "sparkles": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
+ "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
+ "dev": true
+ },
+ "spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz",
+ "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==",
+ "dev": true
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+ "dev": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "stream-exhaust": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
+ "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
+ "dev": true
+ },
+ "stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "sver-compat": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
+ "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=",
+ "dev": true,
+ "requires": {
+ "es6-iterator": "^2.0.1",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "table": {
+ "version": "6.0.7",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz",
+ "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^7.0.2",
+ "lodash": "^4.17.20",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.0.tgz",
+ "integrity": "sha512-svS9uILze/cXbH0z2myCK2Brqprx/+JJYK5pHicT/GQiBfzzhUVAIT6MwqJg8y4xV/zoGsUeuPuwtoiKSGE15g==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "through2-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
+ "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
+ "dev": true,
+ "requires": {
+ "through2": "~2.0.0",
+ "xtend": "~4.0.0"
+ }
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+ "dev": true
+ },
+ "to-absolute-glob": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
+ "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
+ "dev": true,
+ "requires": {
+ "is-absolute": "^1.0.0",
+ "is-negated-glob": "^1.0.0"
+ }
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "to-through": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
+ "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=",
+ "dev": true,
+ "requires": {
+ "through2": "^2.0.3"
+ }
+ },
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1"
+ }
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "requires": {
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ }
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true,
+ "optional": true
+ },
+ "unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "dev": true
+ },
+ "undertaker": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz",
+ "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.0.1",
+ "arr-map": "^2.0.0",
+ "bach": "^1.0.0",
+ "collection-map": "^1.0.0",
+ "es6-weak-map": "^2.0.1",
+ "fast-levenshtein": "^1.0.0",
+ "last-run": "^1.1.0",
+ "object.defaults": "^1.0.0",
+ "object.reduce": "^1.0.0",
+ "undertaker-registry": "^1.0.0"
+ },
+ "dependencies": {
+ "fast-levenshtein": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz",
+ "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=",
+ "dev": true
+ }
+ }
+ },
+ "undertaker-registry": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
+ "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "unique-stream": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
+ "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
+ "dev": true,
+ "requires": {
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "through2-filter": "^3.0.0"
+ }
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ }
+ }
+ },
+ "upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "v8-compile-cache": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz",
+ "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==",
+ "dev": true
+ },
+ "v8flags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+ "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "value-or-function": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
+ "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=",
+ "dev": true
+ },
+ "vinyl": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+ "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
+ "dev": true,
+ "requires": {
+ "clone": "^2.1.1",
+ "clone-buffer": "^1.0.0",
+ "clone-stats": "^1.0.0",
+ "cloneable-readable": "^1.0.0",
+ "remove-trailing-separator": "^1.0.1",
+ "replace-ext": "^1.0.0"
+ }
+ },
+ "vinyl-fs": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
+ "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
+ "dev": true,
+ "requires": {
+ "fs-mkdirp-stream": "^1.0.0",
+ "glob-stream": "^6.1.0",
+ "graceful-fs": "^4.0.0",
+ "is-valid-glob": "^1.0.0",
+ "lazystream": "^1.0.0",
+ "lead": "^1.0.0",
+ "object.assign": "^4.0.4",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.3.3",
+ "remove-bom-buffer": "^3.0.0",
+ "remove-bom-stream": "^1.2.0",
+ "resolve-options": "^1.1.0",
+ "through2": "^2.0.0",
+ "to-through": "^2.0.0",
+ "value-or-function": "^3.0.0",
+ "vinyl": "^2.0.0",
+ "vinyl-sourcemap": "^1.1.0"
+ }
+ },
+ "vinyl-sourcemap": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
+ "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=",
+ "dev": true,
+ "requires": {
+ "append-buffer": "^1.0.2",
+ "convert-source-map": "^1.5.0",
+ "graceful-fs": "^4.1.6",
+ "normalize-path": "^2.1.1",
+ "now-and-later": "^2.0.0",
+ "remove-bom-buffer": "^3.0.0",
+ "vinyl": "^2.0.0"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "vinyl-sourcemaps-apply": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz",
+ "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.5.1"
+ }
+ },
+ "when": {
+ "version": "3.7.8",
+ "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
+ "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+ "dev": true
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "xgettext-js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xgettext-js/-/xgettext-js-3.0.0.tgz",
+ "integrity": "sha512-htBdz05sG37ulma47azvkIaS1R02ecsp1QmhS7N0qmHffi5pbsd+34W7hg+Eb7bgbUZQQd4vO0Z1j5X9CjKXQg==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.5.5",
+ "estree-walker": "^0.6.1",
+ "lodash": "^4.17.15"
+ }
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ },
+ "y18n": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+ "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz",
+ "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^3.0.0",
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^1.4.0",
+ "read-pkg-up": "^1.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^1.0.2",
+ "which-module": "^1.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "5.0.0-security.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "5.0.0-security.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz",
+ "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^3.0.0",
+ "object.assign": "^4.1.0"
+ }
+ }
+ }
+}
diff --git a/plugins/auth_internal/init.php b/plugins/auth_internal/init.php
index f113cd31e..697d0d0d2 100644
--- a/plugins/auth_internal/init.php
+++ b/plugins/auth_internal/init.php
@@ -36,7 +36,7 @@ class Auth_Internal extends Auth_Base {
return false;
} else {
- $return = urlencode($_REQUEST["return"]);
+ $return = urlencode(with_trailing_slash($_REQUEST["return"]));
?>
<!DOCTYPE html>
<html>
@@ -81,7 +81,7 @@ class Auth_Internal extends Auth_Base {
<body class="flat ttrss_utility otp css_loading">
<h1><?= __("Authentication") ?></h1>
<div class="content">
- <form dojoType="dijit.form.Form" action="public.php?return=<?= urlencode(with_trailing_slash($return)) ?>" method="post" class="otpform">
+ <form dojoType="dijit.form.Form" action="public.php?return=<?= $return ?>" method="post" class="otpform">
<?php foreach (["login", "password", "bw_limit", "safe_mode", "remember_me", "profile"] as $key) {
print \Controls\hidden_tag($key, $_POST[$key] ?? "");
diff --git a/themes/compact.css b/themes/compact.css
index 16cf6b5aa..b0330b885 100644
--- a/themes/compact.css
+++ b/themes/compact.css
@@ -1299,12 +1299,6 @@ body.ttrss_utility hr {
font-size: 11px;
font-weight: normal;
}
-.cdm .header .tags {
- max-width: 50%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
.cdm .footer {
height: 30px;
padding-left: 5px;
@@ -1323,6 +1317,7 @@ body.ttrss_utility hr {
}
.cdm .footer .left {
flex-grow: 2;
+ min-width: 0;
}
.cdm .footer .left > * {
margin-right: 4px;
@@ -1330,6 +1325,12 @@ body.ttrss_utility hr {
.cdm .footer .right > * {
margin-left: 4px;
}
+.cdm .footer .tags {
+ max-width: 50%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
diff --git a/themes/compact_night.css b/themes/compact_night.css
index 8da1cd32a..12b94dc85 100644
--- a/themes/compact_night.css
+++ b/themes/compact_night.css
@@ -1299,12 +1299,6 @@ body.ttrss_utility hr {
font-size: 11px;
font-weight: normal;
}
-.cdm .header .tags {
- max-width: 50%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
.cdm .footer {
height: 30px;
padding-left: 5px;
@@ -1323,6 +1317,7 @@ body.ttrss_utility hr {
}
.cdm .footer .left {
flex-grow: 2;
+ min-width: 0;
}
.cdm .footer .left > * {
margin-right: 4px;
@@ -1330,6 +1325,12 @@ body.ttrss_utility hr {
.cdm .footer .right > * {
margin-left: 4px;
}
+.cdm .footer .tags {
+ max-width: 50%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
diff --git a/themes/light-high-contrast.css b/themes/light-high-contrast.css
index ffd952f9f..217d10eac 100644
--- a/themes/light-high-contrast.css
+++ b/themes/light-high-contrast.css
@@ -1299,12 +1299,6 @@ body.ttrss_utility hr {
font-size: 11px;
font-weight: normal;
}
-.cdm .header .tags {
- max-width: 50%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
.cdm .footer {
height: 30px;
padding-left: 5px;
@@ -1323,6 +1317,7 @@ body.ttrss_utility hr {
}
.cdm .footer .left {
flex-grow: 2;
+ min-width: 0;
}
.cdm .footer .left > * {
margin-right: 4px;
@@ -1330,6 +1325,12 @@ body.ttrss_utility hr {
.cdm .footer .right > * {
margin-left: 4px;
}
+.cdm .footer .tags {
+ max-width: 50%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
diff --git a/themes/light.css b/themes/light.css
index cf2358c50..e7aa0c11e 100644
--- a/themes/light.css
+++ b/themes/light.css
@@ -1299,12 +1299,6 @@ body.ttrss_utility hr {
font-size: 11px;
font-weight: normal;
}
-.cdm .header .tags {
- max-width: 50%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
.cdm .footer {
height: 30px;
padding-left: 5px;
@@ -1323,6 +1317,7 @@ body.ttrss_utility hr {
}
.cdm .footer .left {
flex-grow: 2;
+ min-width: 0;
}
.cdm .footer .left > * {
margin-right: 4px;
@@ -1330,6 +1325,12 @@ body.ttrss_utility hr {
.cdm .footer .right > * {
margin-left: 4px;
}
+.cdm .footer .tags {
+ max-width: 50%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
diff --git a/themes/light/cdm.less b/themes/light/cdm.less
index bf677decf..506019d4e 100644
--- a/themes/light/cdm.less
+++ b/themes/light/cdm.less
@@ -79,13 +79,6 @@
font-size : @font-size-small;
font-weight : normal;
}
-
- .tags {
- max-width : 50%;
- overflow : hidden;
- white-space : nowrap;
- text-overflow : ellipsis;
- }
}
.footer {
@@ -107,6 +100,7 @@
.left {
flex-grow : 2;
+ min-width : 0;
> * {
margin-right : 4px;
@@ -118,6 +112,13 @@
margin-left : 4px;
}
}
+
+ .tags {
+ max-width : 50%;
+ overflow : hidden;
+ white-space : nowrap;
+ text-overflow : ellipsis;
+ }
}
.content-inner {
diff --git a/themes/night.css b/themes/night.css
index b1d0f61ce..33a239af0 100644
--- a/themes/night.css
+++ b/themes/night.css
@@ -1300,12 +1300,6 @@ body.ttrss_utility hr {
font-size: 11px;
font-weight: normal;
}
-.cdm .header .tags {
- max-width: 50%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
.cdm .footer {
height: 30px;
padding-left: 5px;
@@ -1324,6 +1318,7 @@ body.ttrss_utility hr {
}
.cdm .footer .left {
flex-grow: 2;
+ min-width: 0;
}
.cdm .footer .left > * {
margin-right: 4px;
@@ -1331,6 +1326,12 @@ body.ttrss_utility hr {
.cdm .footer .right > * {
margin-left: 4px;
}
+.cdm .footer .tags {
+ max-width: 50%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
diff --git a/themes/night_blue.css b/themes/night_blue.css
index f77f04efb..6676426ef 100644
--- a/themes/night_blue.css
+++ b/themes/night_blue.css
@@ -1300,12 +1300,6 @@ body.ttrss_utility hr {
font-size: 11px;
font-weight: normal;
}
-.cdm .header .tags {
- max-width: 50%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
.cdm .footer {
height: 30px;
padding-left: 5px;
@@ -1324,6 +1318,7 @@ body.ttrss_utility hr {
}
.cdm .footer .left {
flex-grow: 2;
+ min-width: 0;
}
.cdm .footer .left > * {
margin-right: 4px;
@@ -1331,6 +1326,12 @@ body.ttrss_utility hr {
.cdm .footer .right > * {
margin-left: 4px;
}
+.cdm .footer .tags {
+ max-width: 50%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
diff --git a/utils/phpstan-watcher.sh b/utils/phpstan-watcher.sh
index d1acc906f..4c8f1bfa1 100644
--- a/utils/phpstan-watcher.sh
+++ b/utils/phpstan-watcher.sh
@@ -10,8 +10,10 @@ echo PWD: $(pwd)
while true; do
inotifywait . -e close_write -r -t 300 | grep -q .php && \
(
+ MODIFIED=$(git ls-files -m | grep .php)
+
docker run --rm -v $(pwd):/app -v /tmp/phpstan-8.1:/tmp/phpstan \
- --workdir /app php:${PHP_VERSION}-cli php -d memory_limit=-1 ./vendor/bin/phpstan --memory-limit=2G --error-format=raw
+ --workdir /app registry.fakecake.org/cthulhoo/ci-alpine:3.16 php81 -d memory_limit=-1 ./vendor/bin/phpstan --memory-limit=2G --error-format=raw analyze ${MODIFIED}
echo All done, RC=$?.
)
sleep 1
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 8235051f8..e6e3ad736 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -2,24 +2,6 @@
// autoload.php @generated by Composer
-if (PHP_VERSION_ID < 50600) {
- if (!headers_sent()) {
- header('HTTP/1.1 500 Internal Server Error');
- }
- $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
- if (!ini_get('display_errors')) {
- if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
- fwrite(STDERR, $err);
- } elseif (!headers_sent()) {
- echo $err;
- }
- }
- trigger_error(
- $err,
- E_USER_ERROR
- );
-}
-
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit19fc2ff1c0f9a92279c7979386bb2056::getLoader();
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index a72151c77..4d989a212 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -42,79 +42,30 @@ namespace Composer\Autoload;
*/
class ClassLoader
{
- /** @var \Closure(string):void */
- private static $includeFile;
-
- /** @var ?string */
private $vendorDir;
// PSR-4
- /**
- * @var array[]
- * @psalm-var array<string, array<string, int>>
- */
private $prefixLengthsPsr4 = array();
- /**
- * @var array[]
- * @psalm-var array<string, array<int, string>>
- */
private $prefixDirsPsr4 = array();
- /**
- * @var array[]
- * @psalm-var array<string, string>
- */
private $fallbackDirsPsr4 = array();
// PSR-0
- /**
- * @var array[]
- * @psalm-var array<string, array<string, string[]>>
- */
private $prefixesPsr0 = array();
- /**
- * @var array[]
- * @psalm-var array<string, string>
- */
private $fallbackDirsPsr0 = array();
- /** @var bool */
private $useIncludePath = false;
-
- /**
- * @var string[]
- * @psalm-var array<string, string>
- */
private $classMap = array();
-
- /** @var bool */
private $classMapAuthoritative = false;
-
- /**
- * @var bool[]
- * @psalm-var array<string, bool>
- */
private $missingClasses = array();
-
- /** @var ?string */
private $apcuPrefix;
- /**
- * @var self[]
- */
private static $registeredLoaders = array();
- /**
- * @param ?string $vendorDir
- */
public function __construct($vendorDir = null)
{
$this->vendorDir = $vendorDir;
- self::initializeIncludeClosure();
}
- /**
- * @return string[]
- */
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
@@ -124,47 +75,28 @@ class ClassLoader
return array();
}
- /**
- * @return array[]
- * @psalm-return array<string, array<int, string>>
- */
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}
- /**
- * @return array[]
- * @psalm-return array<string, string>
- */
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}
- /**
- * @return array[]
- * @psalm-return array<string, string>
- */
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}
- /**
- * @return string[] Array of classname => path
- * @psalm-return array<string, string>
- */
public function getClassMap()
{
return $this->classMap;
}
/**
- * @param string[] $classMap Class to filename map
- * @psalm-param array<string, string> $classMap
- *
- * @return void
+ * @param array $classMap Class to filename map
*/
public function addClassMap(array $classMap)
{
@@ -179,11 +111,9 @@ class ClassLoader
* 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 string[]|string $paths The PSR-0 root directories
- * @param bool $prepend Whether to prepend the directories
- *
- * @return void
+ * @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)
{
@@ -226,13 +156,11 @@ class ClassLoader
* 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 string[]|string $paths The PSR-4 base directories
- * @param bool $prepend Whether to prepend the directories
+ * @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
- *
- * @return void
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
@@ -276,10 +204,8 @@ class ClassLoader
* 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 string[]|string $paths The PSR-0 base directories
- *
- * @return void
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 base directories
*/
public function set($prefix, $paths)
{
@@ -294,12 +220,10 @@ class ClassLoader
* 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 string[]|string $paths The PSR-4 base directories
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
- *
- * @return void
*/
public function setPsr4($prefix, $paths)
{
@@ -319,8 +243,6 @@ class ClassLoader
* Turns on searching the include path for class files.
*
* @param bool $useIncludePath
- *
- * @return void
*/
public function setUseIncludePath($useIncludePath)
{
@@ -343,8 +265,6 @@ class ClassLoader
* that have not been registered with the class map.
*
* @param bool $classMapAuthoritative
- *
- * @return void
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
@@ -365,8 +285,6 @@ class ClassLoader
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
- *
- * @return void
*/
public function setApcuPrefix($apcuPrefix)
{
@@ -387,18 +305,14 @@ class ClassLoader
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
- *
- * @return void
*/
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
if (null === $this->vendorDir) {
- return;
- }
-
- if ($prepend) {
+ //no-op
+ } elseif ($prepend) {
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
} else {
unset(self::$registeredLoaders[$this->vendorDir]);
@@ -408,8 +322,6 @@ class ClassLoader
/**
* Unregisters this instance as an autoloader.
- *
- * @return void
*/
public function unregister()
{
@@ -424,18 +336,15 @@ class ClassLoader
* Loads the given class or interface.
*
* @param string $class The name of the class
- * @return true|null True if loaded, null otherwise
+ * @return bool|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
- $includeFile = self::$includeFile;
- $includeFile($file);
+ includeFile($file);
return true;
}
-
- return null;
}
/**
@@ -490,11 +399,6 @@ class ClassLoader
return self::$registeredLoaders;
}
- /**
- * @param string $class
- * @param string $ext
- * @return string|false
- */
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
@@ -560,26 +464,14 @@ class ClassLoader
return false;
}
+}
- /**
- * @return void
- */
- private static function initializeIncludeClosure()
- {
- if (self::$includeFile !== null) {
- return;
- }
-
- /**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- *
- * @param string $file
- * @return void
- */
- self::$includeFile = \Closure::bind(static function($file) {
- include $file;
- }, null, null);
- }
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+ include $file;
}
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
index c6b54af7b..cf83ee179 100644
--- a/vendor/composer/InstalledVersions.php
+++ b/vendor/composer/InstalledVersions.php
@@ -18,29 +18,459 @@ use Composer\Semver\VersionParser;
/**
* This class is copied in every Composer installed project and available to all
*
- * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
- *
- * To require its presence, you can require `composer-runtime-api ^2.0`
- *
- * @final
+ * To require it's presence, you can require `composer-runtime-api ^2.0`
*/
class InstalledVersions
{
- /**
- * @var mixed[]|null
- * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
- */
- private static $installed;
-
- /**
- * @var bool|null
- */
+ private static $installed = array (
+ 'root' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'a37eab2610a0a2bcb655258781c1c7e925dc94c0',
+ 'name' => '__root__',
+ ),
+ 'versions' =>
+ array (
+ '__root__' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'a37eab2610a0a2bcb655258781c1c7e925dc94c0',
+ ),
+ 'beberlei/assert' =>
+ array (
+ 'pretty_version' => 'v3.3.2',
+ 'version' => '3.3.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cb70015c04be1baee6f5f5c953703347c0ac1655',
+ ),
+ 'chillerlan/php-qrcode' =>
+ array (
+ 'pretty_version' => '4.3.4',
+ 'version' => '4.3.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d',
+ ),
+ 'chillerlan/php-settings-container' =>
+ array (
+ 'pretty_version' => '2.1.4',
+ 'version' => '2.1.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1beb7df3c14346d4344b0b2e12f6f9a74feabd4a',
+ ),
+ 'doctrine/instantiator' =>
+ array (
+ 'pretty_version' => '1.4.1',
+ 'version' => '1.4.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc',
+ ),
+ 'j4mie/idiorm' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ 0 => '9999999-dev',
+ ),
+ 'reference' => 'efc8ea06698f53e2c479c7696f2b154c47c3a3cb',
+ ),
+ 'jonahgeorge/jaeger-client-php' =>
+ array (
+ 'pretty_version' => 'v1.4.4',
+ 'version' => '1.4.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '3173d9c68ad8cea16058f25337982b00cc3d1c2b',
+ ),
+ 'mervick/material-design-icons' =>
+ array (
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '635435c8d3df3a6da3241648caf8a65d1c07cc1a',
+ ),
+ 'myclabs/deep-copy' =>
+ array (
+ 'pretty_version' => '1.11.0',
+ 'version' => '1.11.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614',
+ ),
+ 'nikic/php-parser' =>
+ array (
+ 'pretty_version' => 'v4.14.0',
+ 'version' => '4.14.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '34bea19b6e03d8153165d8f30bba4c3be86184c1',
+ ),
+ 'opentracing/opentracing' =>
+ array (
+ 'pretty_version' => '1.0.2',
+ 'version' => '1.0.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cd60bd1fb2a25280600bc74c7f9e0c13881a9116',
+ ),
+ 'packaged/thrift' =>
+ array (
+ 'pretty_version' => '0.13.01',
+ 'version' => '0.13.01.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e3dbcfb79e319971d64264ffe9c340590cc8a228',
+ ),
+ 'paragonie/constant_time_encoding' =>
+ array (
+ 'pretty_version' => 'v2.6.3',
+ 'version' => '2.6.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '58c3f47f650c94ec05a151692652a868995d2938',
+ ),
+ 'phar-io/manifest' =>
+ array (
+ 'pretty_version' => '2.0.3',
+ 'version' => '2.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53',
+ ),
+ 'phar-io/version' =>
+ array (
+ 'pretty_version' => '3.2.1',
+ 'version' => '3.2.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
+ ),
+ 'phpdocumentor/reflection-common' =>
+ array (
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
+ ),
+ 'phpdocumentor/reflection-docblock' =>
+ array (
+ 'pretty_version' => '5.3.0',
+ 'version' => '5.3.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
+ ),
+ 'phpdocumentor/type-resolver' =>
+ array (
+ 'pretty_version' => '1.6.1',
+ 'version' => '1.6.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '77a32518733312af16a44300404e945338981de3',
+ ),
+ 'phpspec/prophecy' =>
+ array (
+ 'pretty_version' => 'v1.15.0',
+ 'version' => '1.15.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
+ ),
+ 'phpstan/phpstan' =>
+ array (
+ 'pretty_version' => '1.10.3',
+ 'version' => '1.10.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5419375b5891add97dc74be71e6c1c34baaddf64',
+ ),
+ 'phpunit/php-code-coverage' =>
+ array (
+ 'pretty_version' => '9.2.15',
+ 'version' => '9.2.15.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f',
+ ),
+ 'phpunit/php-file-iterator' =>
+ array (
+ 'pretty_version' => '3.0.6',
+ 'version' => '3.0.6.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf',
+ ),
+ 'phpunit/php-invoker' =>
+ array (
+ 'pretty_version' => '3.1.1',
+ 'version' => '3.1.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
+ ),
+ 'phpunit/php-text-template' =>
+ array (
+ 'pretty_version' => '2.0.4',
+ 'version' => '2.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
+ ),
+ 'phpunit/php-timer' =>
+ array (
+ 'pretty_version' => '5.0.3',
+ 'version' => '5.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
+ ),
+ 'phpunit/phpunit' =>
+ array (
+ 'pretty_version' => '9.5.16',
+ 'version' => '9.5.16.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5ff8c545a50226c569310a35f4fa89d79f1ddfdc',
+ ),
+ 'psr/cache' =>
+ array (
+ 'pretty_version' => '3.0.0',
+ 'version' => '3.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf',
+ ),
+ 'psr/log' =>
+ array (
+ 'pretty_version' => '3.0.0',
+ 'version' => '3.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
+ ),
+ 'sebastian/cli-parser' =>
+ array (
+ 'pretty_version' => '1.0.1',
+ 'version' => '1.0.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
+ ),
+ 'sebastian/code-unit' =>
+ array (
+ 'pretty_version' => '1.0.8',
+ 'version' => '1.0.8.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
+ ),
+ 'sebastian/code-unit-reverse-lookup' =>
+ array (
+ 'pretty_version' => '2.0.3',
+ 'version' => '2.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
+ ),
+ 'sebastian/comparator' =>
+ array (
+ 'pretty_version' => '4.0.6',
+ 'version' => '4.0.6.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
+ ),
+ 'sebastian/complexity' =>
+ array (
+ 'pretty_version' => '2.0.2',
+ 'version' => '2.0.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
+ ),
+ 'sebastian/diff' =>
+ array (
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
+ ),
+ 'sebastian/environment' =>
+ array (
+ 'pretty_version' => '5.1.4',
+ 'version' => '5.1.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1b5dff7bb151a4db11d49d90e5408e4e938270f7',
+ ),
+ 'sebastian/exporter' =>
+ array (
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9',
+ ),
+ 'sebastian/global-state' =>
+ array (
+ 'pretty_version' => '5.0.5',
+ 'version' => '5.0.5.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2',
+ ),
+ 'sebastian/lines-of-code' =>
+ array (
+ 'pretty_version' => '1.0.3',
+ 'version' => '1.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
+ ),
+ 'sebastian/object-enumerator' =>
+ array (
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
+ ),
+ 'sebastian/object-reflector' =>
+ array (
+ 'pretty_version' => '2.0.4',
+ 'version' => '2.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
+ ),
+ 'sebastian/recursion-context' =>
+ array (
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
+ ),
+ 'sebastian/resource-operations' =>
+ array (
+ 'pretty_version' => '3.0.3',
+ 'version' => '3.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
+ ),
+ 'sebastian/type' =>
+ array (
+ 'pretty_version' => '2.3.4',
+ 'version' => '2.3.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b8cd8a1c753c90bc1a0f5372170e3e489136f914',
+ ),
+ 'sebastian/version' =>
+ array (
+ 'pretty_version' => '3.0.2',
+ 'version' => '3.0.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
+ ),
+ 'spomky-labs/otphp' =>
+ array (
+ 'pretty_version' => 'v10.0.3',
+ 'version' => '10.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '9784d9f7c790eed26e102d6c78f12c754036c366',
+ ),
+ 'thecodingmachine/safe' =>
+ array (
+ 'pretty_version' => 'v2.2.2',
+ 'version' => '2.2.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '440284f9592c9df402832452a6871a8b3c48d97e',
+ ),
+ 'theseer/tokenizer' =>
+ array (
+ 'pretty_version' => '1.2.1',
+ 'version' => '1.2.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
+ ),
+ 'webmozart/assert' =>
+ array (
+ 'pretty_version' => '1.11.0',
+ 'version' => '1.11.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991',
+ ),
+ ),
+);
private static $canGetVendors;
-
- /**
- * @var array[]
- * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
- */
private static $installedByVendor = array();
/**
@@ -56,6 +486,7 @@ class InstalledVersions
$packages[] = array_keys($installed['versions']);
}
+
if (1 === \count($packages)) {
return $packages[0];
}
@@ -64,41 +495,18 @@ class InstalledVersions
}
/**
- * Returns a list of all package names with a specific type e.g. 'library'
- *
- * @param string $type
- * @return string[]
- * @psalm-return list<string>
- */
- public static function getInstalledPackagesByType($type)
- {
- $packagesByType = array();
-
- foreach (self::getInstalled() as $installed) {
- foreach ($installed['versions'] as $name => $package) {
- if (isset($package['type']) && $package['type'] === $type) {
- $packagesByType[] = $name;
- }
- }
- }
-
- return $packagesByType;
- }
-
- /**
* Checks whether the given package is installed
*
* This also returns true if the package name is provided or replaced by another package
*
* @param string $packageName
- * @param bool $includeDevRequirements
* @return bool
*/
- public static function isInstalled($packageName, $includeDevRequirements = true)
+ public static function isInstalled($packageName)
{
foreach (self::getInstalled() as $installed) {
if (isset($installed['versions'][$packageName])) {
- return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
+ return true;
}
}
@@ -112,9 +520,10 @@ class InstalledVersions
*
* Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
*
- * @param VersionParser $parser Install composer/semver to have access to this class and functionality
- * @param string $packageName
- * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ *
* @return bool
*/
public static function satisfies(VersionParser $parser, $packageName, $constraint)
@@ -225,25 +634,8 @@ class InstalledVersions
}
/**
- * @param string $packageName
- * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
- */
- public static function getInstallPath($packageName)
- {
- foreach (self::getInstalled() as $installed) {
- if (!isset($installed['versions'][$packageName])) {
- continue;
- }
-
- return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
- }
-
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
- }
-
- /**
* @return array
- * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}
*/
public static function getRootPackage()
{
@@ -255,39 +647,15 @@ class InstalledVersions
/**
* Returns the raw installed.php data for custom implementations
*
- * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
* @return array[]
- * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}, versions: list<string, array{pretty_version: ?string, version: ?string, aliases: ?string[], reference: ?string, replaced: ?string[], provided: ?string[]}>}
*/
public static function getRawData()
{
- @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
-
- if (null === self::$installed) {
- // only require the installed.php file if this file is loaded from its dumped location,
- // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
- if (substr(__DIR__, -8, 1) !== 'C') {
- self::$installed = include __DIR__ . '/installed.php';
- } else {
- self::$installed = array();
- }
- }
-
return self::$installed;
}
/**
- * Returns the raw data of all installed.php which are currently loaded for custom implementations
- *
- * @return array[]
- * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
- */
- public static function getAllRawData()
- {
- return self::getInstalled();
- }
-
- /**
* Lets you reload the static array from another file
*
* This is only useful for complex integrations in which a project needs to use
@@ -303,7 +671,7 @@ class InstalledVersions
* @param array[] $data A vendor/composer/installed.php data set
* @return void
*
- * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}, versions: list<string, array{pretty_version: ?string, version: ?string, aliases: ?string[], reference: ?string, replaced: ?string[], provided: ?string[]}>} $data
*/
public static function reload($data)
{
@@ -313,7 +681,6 @@ class InstalledVersions
/**
* @return array[]
- * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
*/
private static function getInstalled()
{
@@ -324,27 +691,16 @@ class InstalledVersions
$installed = array();
if (self::$canGetVendors) {
+ // @phpstan-ignore-next-line
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
- if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
- self::$installed = $installed[count($installed) - 1];
- }
}
}
}
- if (null === self::$installed) {
- // only require the installed.php file if this file is loaded from its dumped location,
- // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
- if (substr(__DIR__, -8, 1) !== 'C') {
- self::$installed = require __DIR__ . '/installed.php';
- } else {
- self::$installed = array();
- }
- }
$installed[] = self::$installed;
return $installed;
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
index f27399a04..62ecfd8d0 100644
--- a/vendor/composer/LICENSE
+++ b/vendor/composer/LICENSE
@@ -1,4 +1,3 @@
-
Copyright (c) Nils Adermann, Jordi Boggiano
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -18,4 +17,3 @@ 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
index 6835b271a..9e751e17c 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -2,7 +2,7 @@
// autoload_classmap.php @generated by Composer
-$vendorDir = dirname(__DIR__);
+$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index cfc7a8338..f940286e8 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -2,10 +2,12 @@
// autoload_files.php @generated by Composer
-$vendorDir = dirname(__DIR__);
+$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
+ '9b38cf48e83f5d8f60375221cd213eee' => $vendorDir . '/phpstan/phpstan/bootstrap.php',
+ 'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
'a4ecaeafb8cfb009ad0e052c90355e98' => $vendorDir . '/beberlei/assert/lib/Assert/functions.php',
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'51fcf4e06c07cc00c920b44bcd900e7a' => $vendorDir . '/thecodingmachine/safe/deprecated/apc.php',
@@ -95,6 +97,7 @@ return array(
'4af1dca6db8c527c6eed27bff85ff0e5' => $vendorDir . '/thecodingmachine/safe/generated/yaz.php',
'fe43ca06499ac37bc2dedd823af71eb5' => $vendorDir . '/thecodingmachine/safe/generated/zip.php',
'356736db98a6834f0a886b8d509b0ecd' => $vendorDir . '/thecodingmachine/safe/generated/zlib.php',
- '9b38cf48e83f5d8f60375221cd213eee' => $vendorDir . '/phpstan/phpstan/bootstrap.php',
- 'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
+ 'ff1b7935a93a4a9517db3ebe0533892a' => $vendorDir . '/opentracing/opentracing/src/OpenTracing/Tags.php',
+ '0db36546c71c357f5ee70c39bb03966f' => $vendorDir . '/opentracing/opentracing/src/OpenTracing/Formats.php',
+ '822502b10d2c1dae82956ef999e8b4be' => $vendorDir . '/jonahgeorge/jaeger-client-php/src/Jaeger/Constants.php',
);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
index 15a2ff3ad..b7fc0125d 100644
--- a/vendor/composer/autoload_namespaces.php
+++ b/vendor/composer/autoload_namespaces.php
@@ -2,7 +2,7 @@
// autoload_namespaces.php @generated by Composer
-$vendorDir = dirname(__DIR__);
+$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index e8aa5c7b4..98ef4f1fd 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -2,7 +2,7 @@
// autoload_psr4.php @generated by Composer
-$vendorDir = dirname(__DIR__);
+$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
@@ -10,10 +10,15 @@ return array(
'chillerlan\\Settings\\' => array($vendorDir . '/chillerlan/php-settings-container/src'),
'chillerlan\\QRCode\\' => array($vendorDir . '/chillerlan/php-qrcode/src'),
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
+ 'Thrift\\' => array($vendorDir . '/packaged/thrift/src'),
+ 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
+ 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'),
+ 'OpenTracing\\' => array($vendorDir . '/opentracing/opentracing/src/OpenTracing'),
'OTPHP\\' => array($vendorDir . '/spomky-labs/otphp/src'),
+ 'Jaeger\\' => array($vendorDir . '/jonahgeorge/jaeger-client-php/src/Jaeger'),
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
'Assert\\' => array($vendorDir . '/beberlei/assert/lib/Assert'),
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index ebee29895..51b54d2f0 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -23,26 +23,51 @@ class ComposerAutoloaderInit19fc2ff1c0f9a92279c7979386bb2056
}
spl_autoload_register(array('ComposerAutoloaderInit19fc2ff1c0f9a92279c7979386bb2056', 'loadClassLoader'), true, true);
- self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInit19fc2ff1c0f9a92279c7979386bb2056', 'loadClassLoader'));
- require __DIR__ . '/autoload_static.php';
- call_user_func(\Composer\Autoload\ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056::getInitializer($loader));
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
+ if ($useStaticLoader) {
+ require __DIR__ . '/autoload_static.php';
- $loader->register(true);
+ call_user_func(\Composer\Autoload\ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056::getInitializer($loader));
+ } else {
+ $map = require __DIR__ . '/autoload_namespaces.php';
+ foreach ($map as $namespace => $path) {
+ $loader->set($namespace, $path);
+ }
- $filesToLoad = \Composer\Autoload\ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056::$files;
- $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
- if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
- $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+ $map = require __DIR__ . '/autoload_psr4.php';
+ foreach ($map as $namespace => $path) {
+ $loader->setPsr4($namespace, $path);
+ }
- require $file;
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
}
- }, null, null);
- foreach ($filesToLoad as $fileIdentifier => $file) {
- $requireFile($fileIdentifier, $file);
+ }
+
+ $loader->register(true);
+
+ if ($useStaticLoader) {
+ $includeFiles = Composer\Autoload\ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056::$files;
+ } else {
+ $includeFiles = require __DIR__ . '/autoload_files.php';
+ }
+ foreach ($includeFiles as $fileIdentifier => $file) {
+ composerRequire19fc2ff1c0f9a92279c7979386bb2056($fileIdentifier, $file);
}
return $loader;
}
}
+
+function composerRequire19fc2ff1c0f9a92279c7979386bb2056($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
index a9ddd4831..67d12d734 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -7,6 +7,8 @@ namespace Composer\Autoload;
class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
{
public static $files = array (
+ '9b38cf48e83f5d8f60375221cd213eee' => __DIR__ . '/..' . '/phpstan/phpstan/bootstrap.php',
+ 'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
'a4ecaeafb8cfb009ad0e052c90355e98' => __DIR__ . '/..' . '/beberlei/assert/lib/Assert/functions.php',
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'51fcf4e06c07cc00c920b44bcd900e7a' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/apc.php',
@@ -96,8 +98,9 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
'4af1dca6db8c527c6eed27bff85ff0e5' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/yaz.php',
'fe43ca06499ac37bc2dedd823af71eb5' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/zip.php',
'356736db98a6834f0a886b8d509b0ecd' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/zlib.php',
- '9b38cf48e83f5d8f60375221cd213eee' => __DIR__ . '/..' . '/phpstan/phpstan/bootstrap.php',
- 'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
+ 'ff1b7935a93a4a9517db3ebe0533892a' => __DIR__ . '/..' . '/opentracing/opentracing/src/OpenTracing/Tags.php',
+ '0db36546c71c357f5ee70c39bb03966f' => __DIR__ . '/..' . '/opentracing/opentracing/src/OpenTracing/Formats.php',
+ '822502b10d2c1dae82956ef999e8b4be' => __DIR__ . '/..' . '/jonahgeorge/jaeger-client-php/src/Jaeger/Constants.php',
);
public static $prefixLengthsPsr4 = array (
@@ -114,16 +117,27 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
array (
'Webmozart\\Assert\\' => 17,
),
+ 'T' =>
+ array (
+ 'Thrift\\' => 7,
+ ),
'P' =>
array (
+ 'Psr\\Log\\' => 8,
+ 'Psr\\Cache\\' => 10,
'Prophecy\\' => 9,
'PhpParser\\' => 10,
'ParagonIE\\ConstantTime\\' => 23,
),
'O' =>
array (
+ 'OpenTracing\\' => 12,
'OTPHP\\' => 6,
),
+ 'J' =>
+ array (
+ 'Jaeger\\' => 7,
+ ),
'D' =>
array (
'Doctrine\\Instantiator\\' => 22,
@@ -154,6 +168,18 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
array (
0 => __DIR__ . '/..' . '/webmozart/assert/src',
),
+ 'Thrift\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/packaged/thrift/src',
+ ),
+ 'Psr\\Log\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/log/src',
+ ),
+ 'Psr\\Cache\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/cache/src',
+ ),
'Prophecy\\' =>
array (
0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
@@ -166,10 +192,18 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
array (
0 => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src',
),
+ 'OpenTracing\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/opentracing/opentracing/src/OpenTracing',
+ ),
'OTPHP\\' =>
array (
0 => __DIR__ . '/..' . '/spomky-labs/otphp/src',
),
+ 'Jaeger\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/jonahgeorge/jaeger-client-php/src/Jaeger',
+ ),
'Doctrine\\Instantiator\\' =>
array (
0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 6a7b5c878..0be499810 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -360,6 +360,77 @@
"install-path": "../j4mie/idiorm"
},
{
+ "name": "jonahgeorge/jaeger-client-php",
+ "version": "v1.4.4",
+ "version_normalized": "1.4.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jonahgeorge/jaeger-client-php.git",
+ "reference": "3173d9c68ad8cea16058f25337982b00cc3d1c2b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jonahgeorge/jaeger-client-php/zipball/3173d9c68ad8cea16058f25337982b00cc3d1c2b",
+ "reference": "3173d9c68ad8cea16058f25337982b00cc3d1c2b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-sockets": "*",
+ "opentracing/opentracing": "^1.0",
+ "packaged/thrift": "^0.13",
+ "php": "^7.1 || ^8.0 || ^8.1",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0",
+ "psr/log": "^1.0 || ^2.0 || ^3.0"
+ },
+ "require-dev": {
+ "cache/array-adapter": "^1.0",
+ "phpunit/phpunit": "^7 || ^8 || ^9",
+ "squizlabs/php_codesniffer": "3.*",
+ "symfony/polyfill-php73": "^1.10"
+ },
+ "time": "2023-01-31T13:40:20+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "./src/Jaeger/Constants.php"
+ ],
+ "psr-4": {
+ "Jaeger\\": "src/Jaeger/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonah George",
+ "homepage": "http://twitter.com/jonahgeorge"
+ },
+ {
+ "name": "José Carlos Chávez",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/jonahgeorge/jaeger-client-php/graphs/contributors"
+ }
+ ],
+ "description": "Jaeger Bindings for PHP OpenTracing API",
+ "keywords": [
+ "jaeger",
+ "opentracing",
+ "trace",
+ "tracing"
+ ],
+ "support": {
+ "issues": "https://github.com/jonahgeorge/jaeger-client-php/issues",
+ "source": "https://github.com/jonahgeorge/jaeger-client-php/tree/v1.4.4"
+ },
+ "install-path": "../jonahgeorge/jaeger-client-php"
+ },
+ {
"name": "mervick/material-design-icons",
"version": "2.2.0",
"version_normalized": "2.2.0.0",
@@ -527,6 +598,100 @@
"install-path": "../nikic/php-parser"
},
{
+ "name": "opentracing/opentracing",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/opentracing/opentracing-php.git",
+ "reference": "cd60bd1fb2a25280600bc74c7f9e0c13881a9116"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/opentracing/opentracing-php/zipball/cd60bd1fb2a25280600bc74c7f9e0c13881a9116",
+ "reference": "cd60bd1fb2a25280600bc74c7f9e0c13881a9116",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "~0.12",
+ "phpunit/phpunit": "^7.0 || ^9.0",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "time": "2022-01-27T19:59:21+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/OpenTracing/Tags.php",
+ "src/OpenTracing/Formats.php"
+ ],
+ "psr-4": {
+ "OpenTracing\\": "src/OpenTracing/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "José Carlos Chávez",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "OpenTracing API for PHP",
+ "support": {
+ "issues": "https://github.com/opentracing/opentracing-php/issues",
+ "source": "https://github.com/opentracing/opentracing-php/tree/1.0.2"
+ },
+ "install-path": "../opentracing/opentracing"
+ },
+ {
+ "name": "packaged/thrift",
+ "version": "0.13.01",
+ "version_normalized": "0.13.01.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/packaged/thrift.git",
+ "reference": "e3dbcfb79e319971d64264ffe9c340590cc8a228"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/packaged/thrift/zipball/e3dbcfb79e319971d64264ffe9c340590cc8a228",
+ "reference": "e3dbcfb79e319971d64264ffe9c340590cc8a228",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0 || ^8.0"
+ },
+ "time": "2021-01-25T13:32:28+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Thrift\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "description": "Apache Thrift",
+ "homepage": "http://thrift.apache.org/",
+ "keywords": [
+ "apache",
+ "thrift"
+ ],
+ "support": {
+ "issues": "https://github.com/packaged/thrift/issues",
+ "source": "https://github.com/packaged/thrift/tree/0.13.01"
+ },
+ "install-path": "../packaged/thrift"
+ },
+ {
"name": "paragonie/constant_time_encoding",
"version": "v2.6.3",
"version_normalized": "2.6.3.0",
@@ -1454,6 +1619,111 @@
"install-path": "../phpunit/phpunit"
},
{
+ "name": "psr/cache",
+ "version": "3.0.0",
+ "version_normalized": "3.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "time": "2021-02-03T23:26:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
+ },
+ "install-path": "../psr/cache"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.0",
+ "version_normalized": "3.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "time": "2021-07-14T16:46:02+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
+ },
+ "install-path": "../psr/log"
+ },
+ {
"name": "sebastian/cli-parser",
"version": "1.0.1",
"version_normalized": "1.0.1.0",
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 13f4018bf..cec06e2b7 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -1,403 +1,448 @@
-<?php return array(
- 'root' => array(
- 'name' => '__root__',
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'reference' => 'b7a6c948d078a59739f14de8454e0e7237d0722e',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../../',
- 'aliases' => array(),
- 'dev' => true,
- ),
- 'versions' => array(
- '__root__' => array(
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'reference' => 'b7a6c948d078a59739f14de8454e0e7237d0722e',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../../',
- 'aliases' => array(),
- 'dev_requirement' => false,
- ),
- 'beberlei/assert' => array(
- 'pretty_version' => 'v3.3.2',
- 'version' => '3.3.2.0',
- 'reference' => 'cb70015c04be1baee6f5f5c953703347c0ac1655',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../beberlei/assert',
- 'aliases' => array(),
- 'dev_requirement' => false,
- ),
- 'chillerlan/php-qrcode' => array(
- 'pretty_version' => '4.3.4',
- 'version' => '4.3.4.0',
- 'reference' => '2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../chillerlan/php-qrcode',
- 'aliases' => array(),
- 'dev_requirement' => false,
- ),
- 'chillerlan/php-settings-container' => array(
- 'pretty_version' => '2.1.4',
- 'version' => '2.1.4.0',
- 'reference' => '1beb7df3c14346d4344b0b2e12f6f9a74feabd4a',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../chillerlan/php-settings-container',
- 'aliases' => array(),
- 'dev_requirement' => false,
- ),
- 'doctrine/instantiator' => array(
- 'pretty_version' => '1.4.1',
- 'version' => '1.4.1.0',
- 'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../doctrine/instantiator',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'j4mie/idiorm' => array(
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'reference' => 'efc8ea06698f53e2c479c7696f2b154c47c3a3cb',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../j4mie/idiorm',
- 'aliases' => array(
- 0 => '9999999-dev',
- ),
- 'dev_requirement' => false,
- ),
- 'mervick/material-design-icons' => array(
- 'pretty_version' => '2.2.0',
- 'version' => '2.2.0.0',
- 'reference' => '635435c8d3df3a6da3241648caf8a65d1c07cc1a',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../mervick/material-design-icons',
- 'aliases' => array(),
- 'dev_requirement' => false,
- ),
- 'myclabs/deep-copy' => array(
- 'pretty_version' => '1.11.0',
- 'version' => '1.11.0.0',
- 'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../myclabs/deep-copy',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'nikic/php-parser' => array(
- 'pretty_version' => 'v4.14.0',
- 'version' => '4.14.0.0',
- 'reference' => '34bea19b6e03d8153165d8f30bba4c3be86184c1',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../nikic/php-parser',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'paragonie/constant_time_encoding' => array(
- 'pretty_version' => 'v2.6.3',
- 'version' => '2.6.3.0',
- 'reference' => '58c3f47f650c94ec05a151692652a868995d2938',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../paragonie/constant_time_encoding',
- 'aliases' => array(),
- 'dev_requirement' => false,
- ),
- 'phar-io/manifest' => array(
- 'pretty_version' => '2.0.3',
- 'version' => '2.0.3.0',
- 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phar-io/manifest',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phar-io/version' => array(
- 'pretty_version' => '3.2.1',
- 'version' => '3.2.1.0',
- 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phar-io/version',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpdocumentor/reflection-common' => array(
- 'pretty_version' => '2.2.0',
- 'version' => '2.2.0.0',
- 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpdocumentor/reflection-common',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpdocumentor/reflection-docblock' => array(
- 'pretty_version' => '5.3.0',
- 'version' => '5.3.0.0',
- 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpdocumentor/type-resolver' => array(
- 'pretty_version' => '1.6.1',
- 'version' => '1.6.1.0',
- 'reference' => '77a32518733312af16a44300404e945338981de3',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpspec/prophecy' => array(
- 'pretty_version' => 'v1.15.0',
- 'version' => '1.15.0.0',
- 'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpspec/prophecy',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpstan/phpstan' => array(
- 'pretty_version' => '1.10.3',
- 'version' => '1.10.3.0',
- 'reference' => '5419375b5891add97dc74be71e6c1c34baaddf64',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpstan/phpstan',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpunit/php-code-coverage' => array(
- 'pretty_version' => '9.2.15',
- 'version' => '9.2.15.0',
- 'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpunit/php-file-iterator' => array(
- 'pretty_version' => '3.0.6',
- 'version' => '3.0.6.0',
- 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpunit/php-file-iterator',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpunit/php-invoker' => array(
- 'pretty_version' => '3.1.1',
- 'version' => '3.1.1.0',
- 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpunit/php-invoker',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpunit/php-text-template' => array(
- 'pretty_version' => '2.0.4',
- 'version' => '2.0.4.0',
- 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpunit/php-text-template',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpunit/php-timer' => array(
- 'pretty_version' => '5.0.3',
- 'version' => '5.0.3.0',
- 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpunit/php-timer',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'phpunit/phpunit' => array(
- 'pretty_version' => '9.5.16',
- 'version' => '9.5.16.0',
- 'reference' => '5ff8c545a50226c569310a35f4fa89d79f1ddfdc',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../phpunit/phpunit',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/cli-parser' => array(
- 'pretty_version' => '1.0.1',
- 'version' => '1.0.1.0',
- 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/cli-parser',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/code-unit' => array(
- 'pretty_version' => '1.0.8',
- 'version' => '1.0.8.0',
- 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/code-unit',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/code-unit-reverse-lookup' => array(
- 'pretty_version' => '2.0.3',
- 'version' => '2.0.3.0',
- 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/comparator' => array(
- 'pretty_version' => '4.0.6',
- 'version' => '4.0.6.0',
- 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/comparator',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/complexity' => array(
- 'pretty_version' => '2.0.2',
- 'version' => '2.0.2.0',
- 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/complexity',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/diff' => array(
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/diff',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/environment' => array(
- 'pretty_version' => '5.1.4',
- 'version' => '5.1.4.0',
- 'reference' => '1b5dff7bb151a4db11d49d90e5408e4e938270f7',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/environment',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/exporter' => array(
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/exporter',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/global-state' => array(
- 'pretty_version' => '5.0.5',
- 'version' => '5.0.5.0',
- 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/global-state',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/lines-of-code' => array(
- 'pretty_version' => '1.0.3',
- 'version' => '1.0.3.0',
- 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/lines-of-code',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/object-enumerator' => array(
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/object-enumerator',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/object-reflector' => array(
- 'pretty_version' => '2.0.4',
- 'version' => '2.0.4.0',
- 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/object-reflector',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/recursion-context' => array(
- 'pretty_version' => '4.0.4',
- 'version' => '4.0.4.0',
- 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/recursion-context',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/resource-operations' => array(
- 'pretty_version' => '3.0.3',
- 'version' => '3.0.3.0',
- 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/resource-operations',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/type' => array(
- 'pretty_version' => '2.3.4',
- 'version' => '2.3.4.0',
- 'reference' => 'b8cd8a1c753c90bc1a0f5372170e3e489136f914',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/type',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'sebastian/version' => array(
- 'pretty_version' => '3.0.2',
- 'version' => '3.0.2.0',
- 'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../sebastian/version',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'spomky-labs/otphp' => array(
- 'pretty_version' => 'v10.0.3',
- 'version' => '10.0.3.0',
- 'reference' => '9784d9f7c790eed26e102d6c78f12c754036c366',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../spomky-labs/otphp',
- 'aliases' => array(),
- 'dev_requirement' => false,
- ),
- 'thecodingmachine/safe' => array(
- 'pretty_version' => 'v2.2.2',
- 'version' => '2.2.2.0',
- 'reference' => '440284f9592c9df402832452a6871a8b3c48d97e',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../thecodingmachine/safe',
- 'aliases' => array(),
- 'dev_requirement' => false,
- ),
- 'theseer/tokenizer' => array(
- 'pretty_version' => '1.2.1',
- 'version' => '1.2.1.0',
- 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../theseer/tokenizer',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
- 'webmozart/assert' => array(
- 'pretty_version' => '1.11.0',
- 'version' => '1.11.0.0',
- 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../webmozart/assert',
- 'aliases' => array(),
- 'dev_requirement' => true,
- ),
+<?php return array (
+ 'root' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
),
+ 'reference' => 'a37eab2610a0a2bcb655258781c1c7e925dc94c0',
+ 'name' => '__root__',
+ ),
+ 'versions' =>
+ array (
+ '__root__' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'a37eab2610a0a2bcb655258781c1c7e925dc94c0',
+ ),
+ 'beberlei/assert' =>
+ array (
+ 'pretty_version' => 'v3.3.2',
+ 'version' => '3.3.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cb70015c04be1baee6f5f5c953703347c0ac1655',
+ ),
+ 'chillerlan/php-qrcode' =>
+ array (
+ 'pretty_version' => '4.3.4',
+ 'version' => '4.3.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d',
+ ),
+ 'chillerlan/php-settings-container' =>
+ array (
+ 'pretty_version' => '2.1.4',
+ 'version' => '2.1.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1beb7df3c14346d4344b0b2e12f6f9a74feabd4a',
+ ),
+ 'doctrine/instantiator' =>
+ array (
+ 'pretty_version' => '1.4.1',
+ 'version' => '1.4.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc',
+ ),
+ 'j4mie/idiorm' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ 0 => '9999999-dev',
+ ),
+ 'reference' => 'efc8ea06698f53e2c479c7696f2b154c47c3a3cb',
+ ),
+ 'jonahgeorge/jaeger-client-php' =>
+ array (
+ 'pretty_version' => 'v1.4.4',
+ 'version' => '1.4.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '3173d9c68ad8cea16058f25337982b00cc3d1c2b',
+ ),
+ 'mervick/material-design-icons' =>
+ array (
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '635435c8d3df3a6da3241648caf8a65d1c07cc1a',
+ ),
+ 'myclabs/deep-copy' =>
+ array (
+ 'pretty_version' => '1.11.0',
+ 'version' => '1.11.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614',
+ ),
+ 'nikic/php-parser' =>
+ array (
+ 'pretty_version' => 'v4.14.0',
+ 'version' => '4.14.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '34bea19b6e03d8153165d8f30bba4c3be86184c1',
+ ),
+ 'opentracing/opentracing' =>
+ array (
+ 'pretty_version' => '1.0.2',
+ 'version' => '1.0.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cd60bd1fb2a25280600bc74c7f9e0c13881a9116',
+ ),
+ 'packaged/thrift' =>
+ array (
+ 'pretty_version' => '0.13.01',
+ 'version' => '0.13.01.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e3dbcfb79e319971d64264ffe9c340590cc8a228',
+ ),
+ 'paragonie/constant_time_encoding' =>
+ array (
+ 'pretty_version' => 'v2.6.3',
+ 'version' => '2.6.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '58c3f47f650c94ec05a151692652a868995d2938',
+ ),
+ 'phar-io/manifest' =>
+ array (
+ 'pretty_version' => '2.0.3',
+ 'version' => '2.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53',
+ ),
+ 'phar-io/version' =>
+ array (
+ 'pretty_version' => '3.2.1',
+ 'version' => '3.2.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
+ ),
+ 'phpdocumentor/reflection-common' =>
+ array (
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
+ ),
+ 'phpdocumentor/reflection-docblock' =>
+ array (
+ 'pretty_version' => '5.3.0',
+ 'version' => '5.3.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
+ ),
+ 'phpdocumentor/type-resolver' =>
+ array (
+ 'pretty_version' => '1.6.1',
+ 'version' => '1.6.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '77a32518733312af16a44300404e945338981de3',
+ ),
+ 'phpspec/prophecy' =>
+ array (
+ 'pretty_version' => 'v1.15.0',
+ 'version' => '1.15.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
+ ),
+ 'phpstan/phpstan' =>
+ array (
+ 'pretty_version' => '1.10.3',
+ 'version' => '1.10.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5419375b5891add97dc74be71e6c1c34baaddf64',
+ ),
+ 'phpunit/php-code-coverage' =>
+ array (
+ 'pretty_version' => '9.2.15',
+ 'version' => '9.2.15.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f',
+ ),
+ 'phpunit/php-file-iterator' =>
+ array (
+ 'pretty_version' => '3.0.6',
+ 'version' => '3.0.6.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf',
+ ),
+ 'phpunit/php-invoker' =>
+ array (
+ 'pretty_version' => '3.1.1',
+ 'version' => '3.1.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
+ ),
+ 'phpunit/php-text-template' =>
+ array (
+ 'pretty_version' => '2.0.4',
+ 'version' => '2.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
+ ),
+ 'phpunit/php-timer' =>
+ array (
+ 'pretty_version' => '5.0.3',
+ 'version' => '5.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
+ ),
+ 'phpunit/phpunit' =>
+ array (
+ 'pretty_version' => '9.5.16',
+ 'version' => '9.5.16.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5ff8c545a50226c569310a35f4fa89d79f1ddfdc',
+ ),
+ 'psr/cache' =>
+ array (
+ 'pretty_version' => '3.0.0',
+ 'version' => '3.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf',
+ ),
+ 'psr/log' =>
+ array (
+ 'pretty_version' => '3.0.0',
+ 'version' => '3.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
+ ),
+ 'sebastian/cli-parser' =>
+ array (
+ 'pretty_version' => '1.0.1',
+ 'version' => '1.0.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
+ ),
+ 'sebastian/code-unit' =>
+ array (
+ 'pretty_version' => '1.0.8',
+ 'version' => '1.0.8.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
+ ),
+ 'sebastian/code-unit-reverse-lookup' =>
+ array (
+ 'pretty_version' => '2.0.3',
+ 'version' => '2.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
+ ),
+ 'sebastian/comparator' =>
+ array (
+ 'pretty_version' => '4.0.6',
+ 'version' => '4.0.6.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
+ ),
+ 'sebastian/complexity' =>
+ array (
+ 'pretty_version' => '2.0.2',
+ 'version' => '2.0.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
+ ),
+ 'sebastian/diff' =>
+ array (
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
+ ),
+ 'sebastian/environment' =>
+ array (
+ 'pretty_version' => '5.1.4',
+ 'version' => '5.1.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1b5dff7bb151a4db11d49d90e5408e4e938270f7',
+ ),
+ 'sebastian/exporter' =>
+ array (
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9',
+ ),
+ 'sebastian/global-state' =>
+ array (
+ 'pretty_version' => '5.0.5',
+ 'version' => '5.0.5.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2',
+ ),
+ 'sebastian/lines-of-code' =>
+ array (
+ 'pretty_version' => '1.0.3',
+ 'version' => '1.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
+ ),
+ 'sebastian/object-enumerator' =>
+ array (
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
+ ),
+ 'sebastian/object-reflector' =>
+ array (
+ 'pretty_version' => '2.0.4',
+ 'version' => '2.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
+ ),
+ 'sebastian/recursion-context' =>
+ array (
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
+ ),
+ 'sebastian/resource-operations' =>
+ array (
+ 'pretty_version' => '3.0.3',
+ 'version' => '3.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
+ ),
+ 'sebastian/type' =>
+ array (
+ 'pretty_version' => '2.3.4',
+ 'version' => '2.3.4.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b8cd8a1c753c90bc1a0f5372170e3e489136f914',
+ ),
+ 'sebastian/version' =>
+ array (
+ 'pretty_version' => '3.0.2',
+ 'version' => '3.0.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
+ ),
+ 'spomky-labs/otphp' =>
+ array (
+ 'pretty_version' => 'v10.0.3',
+ 'version' => '10.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '9784d9f7c790eed26e102d6c78f12c754036c366',
+ ),
+ 'thecodingmachine/safe' =>
+ array (
+ 'pretty_version' => 'v2.2.2',
+ 'version' => '2.2.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '440284f9592c9df402832452a6871a8b3c48d97e',
+ ),
+ 'theseer/tokenizer' =>
+ array (
+ 'pretty_version' => '1.2.1',
+ 'version' => '1.2.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
+ ),
+ 'webmozart/assert' =>
+ array (
+ 'pretty_version' => '1.11.0',
+ 'version' => '1.11.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991',
+ ),
+ ),
);
diff --git a/vendor/jonahgeorge/jaeger-client-php/.editorconfig b/vendor/jonahgeorge/jaeger-client-php/.editorconfig
new file mode 100644
index 000000000..1492202b4
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/.editorconfig
@@ -0,0 +1,16 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+indent_style = space
+indent_size = 4
+trim_trailing_whitespace = true
+
+[*.md]
+trim_trailing_whitespace = false
+
+[*.yml]
+indent_style = space
+indent_size = 2
diff --git a/vendor/jonahgeorge/jaeger-client-php/.github/workflows/main.yaml b/vendor/jonahgeorge/jaeger-client-php/.github/workflows/main.yaml
new file mode 100644
index 000000000..d0e5dc1f5
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/.github/workflows/main.yaml
@@ -0,0 +1,44 @@
+name: Test
+
+on: [push, pull_request]
+
+jobs:
+ run:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ php-versions: ['7.1', '7.2', '7.3', '7.4', '8.0', '8.1']
+ name: PHP ${{ matrix.php-versions }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ coverage: xdebug
+
+ - name: Get composer cache directory
+ id: composercache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: Cache dependencies
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.composercache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+
+ - name: Install dependencies
+ run: |
+ composer install \
+ --no-interaction \
+ --no-ansi \
+ --no-progress
+
+ - name: Run lint
+ run: composer lint
+
+ - name: Run test
+ run: composer test
diff --git a/vendor/jonahgeorge/jaeger-client-php/.gitignore b/vendor/jonahgeorge/jaeger-client-php/.gitignore
new file mode 100644
index 000000000..07dc555db
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/.gitignore
@@ -0,0 +1,17 @@
+# Please do not use this ignore file to define platform specific files.
+#
+# For these purposes create a global .gitignore file, which is a list of rules
+# for ignoring files in every Git repository on your computer.
+#
+# https://help.github.com/articles/ignoring-files/#create-a-global-gitignore
+
+jaeger-idl
+vendor
+
+composer.lock
+composer.phar
+
+jaeger-client-php.iml
+
+phpunit.xml
+phpcs.xml
diff --git a/vendor/jonahgeorge/jaeger-client-php/CONTRIBUTING.md b/vendor/jonahgeorge/jaeger-client-php/CONTRIBUTING.md
new file mode 100644
index 000000000..e5ec5ed4f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/CONTRIBUTING.md
@@ -0,0 +1,3 @@
+# How to Contribute to Jaeger
+
+We'd love your help!
diff --git a/vendor/jonahgeorge/jaeger-client-php/LICENSE b/vendor/jonahgeorge/jaeger-client-php/LICENSE
new file mode 100644
index 000000000..8e37af0cb
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Jonah George, José Carlos Chávez
+
+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/jonahgeorge/jaeger-client-php/README.md b/vendor/jonahgeorge/jaeger-client-php/README.md
new file mode 100644
index 000000000..6396bb70f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/README.md
@@ -0,0 +1,219 @@
+![Build Status](https://github.com/jonahgeorge/jaeger-client-php/workflows/Test/badge.svg) [![PHP version][packagist-img]][packagist]
+
+# Jaeger Bindings for PHP OpenTracing API
+
+This is a client-side library that can be used to instrument PHP apps for distributed trace collection,
+and to send those traces to Jaeger. See the [OpenTracing PHP API](https://github.com/opentracing/opentracing-php)
+for additional detail.
+
+## Contributing and Developing
+
+Please see [CONTRIBUTING.md](./CONTRIBUTING.md).
+
+## Installation
+
+Jaeger client can be installed via Composer:
+
+```bash
+composer require jonahgeorge/jaeger-client-php
+```
+
+## Getting Started
+
+```php
+<?php
+
+require_once 'vendor/autoload.php';
+
+use Jaeger\Config;
+use OpenTracing\GlobalTracer;
+
+$config = new Config(
+ [
+ 'sampler' => [
+ 'type' => Jaeger\SAMPLER_TYPE_CONST,
+ 'param' => true,
+ ],
+ 'logging' => true,
+ ],
+ 'your-app-name'
+);
+$config->initializeTracer();
+
+$tracer = GlobalTracer::get();
+
+$scope = $tracer->startActiveSpan('TestSpan', []);
+$scope->close();
+
+$tracer->flush();
+```
+
+### Samplers
+
+List of supported samplers, for more info about samplers, please read [Jaeger Sampling](https://www.jaegertracing.io/docs/1.9/sampling/) guide.
+
+#### Const sampler
+This sampler either samples everything, or nothing.
+
+##### Configuration
+```
+'sampler' => [
+ 'type' => Jaeger\SAMPLER_TYPE_CONST,
+ 'param' => true, // boolean wheter to trace or not
+],
+```
+
+#### Probabilistic sampler
+This sampler samples request by given rate.
+
+##### Configuration
+```
+'sampler' => [
+ 'type' => Jaeger\SAMPLER_TYPE_PROBABILISTIC,
+ 'param' => 0.5, // float [0.0, 1.0]
+],
+```
+
+#### Rate limiting sampler
+Samples maximum specified number of traces (requests) per second.
+
+##### Requirements
+* `psr/cache` PSR-6 cache component to store and retrieve sampler state between requests.
+Cache component is passed to `Jaeger\Config` trough its constructor.
+* `hrtime()` function, that can retrieve time in nanoseconds. You need either `php 7.3` or [PECL/hrtime](http://pecl.php.net/package/hrtime) extension.
+
+##### Configuration
+```
+'sampler' => [
+ 'type' => Jaeger\SAMPLER_TYPE_RATE_LIMITING,
+ 'param' => 100 // integer maximum number of traces per second,
+ 'cache' => [
+ 'currentBalanceKey' => 'rate.currentBalance' // string
+ 'lastTickKey' => 'rate.lastTick' // string
+ ]
+],
+```
+## Dispatch mode
+
+The library supports 3 ways of sending data to Jaeger Agent:
+
+1. `Zipkin.thrift` over Compact protocol (socket - UDP) - default
+2. `Jaeger.thrift` over Binary protocol (socket - UDP)
+2. `Jaeger.thrift` over Binary protocol (HTTP)
+
+If you want to enable "`Jaeger.thrift` over Binary protocol" one or other, than
+you need to set `dispatch_mode` config option or `JAEGER_DISPATCH_MODE` env
+variable.
+
+Allowed values for `dispatch_mode` are:
+- `jaeger_over_binary_udp`
+- `jaeger_over_binary_http`
+- `zipkin_over_compact_udp`
+
+There are 3 constants available, so it is better to use them:
+```php
+class Config
+{
+ const ZIPKIN_OVER_COMPACT_UDP = "zipkin_over_compact_udp";
+ const JAEGER_OVER_BINARY_UDP = "jaeger_over_binary_udp";
+ const JAEGER_OVER_BINARY_HTTP = "jaeger_over_binary_http";
+ ...
+}
+```
+
+A possible config with custom `dispatch_mode` can look like this:
+```php
+// config.php
+
+use Jaeger\Config;
+
+return [
+ 'sampler' => [
+ 'type' => Jaeger\SAMPLER_TYPE_CONST,
+ 'param' => true,
+ ],
+ 'logging' => true,
+ "tags" => [
+ // process. prefix works only with JAEGER_OVER_HTTP, JAEGER_OVER_BINARY
+ // otherwise it will be shown as simple global tag
+ "process.process-tag-key-1" => "process-value-1", // all tags with `process.` prefix goes to process section
+ "process.process-tag-key-2" => "process-value-2", // all tags with `process.` prefix goes to process section
+ "global-tag-key-1" => "global-tag-value-1", // this tag will be appended to all spans
+ "global-tag-key-2" => "global-tag-value-2", // this tag will be appended to all spans
+ ],
+ "local_agent" => [
+ "reporting_host" => "localhost",
+// You can override port by setting local_agent.reporting_port value
+ "reporting_port" => 6832
+ ],
+// Different ways to send data to Jaeger. Config::ZIPKIN_OVER_COMPACT - default):
+ 'dispatch_mode' => Config::JAEGER_OVER_BINARY_UDP,
+];
+```
+The full example you can see at `examples` directory.
+
+By default, for each `dispatch_mode` there is default `reporting_port` config value. Table with
+default values you can see below:
+
+`dispatch_mode` | default `reporting_port`
+------------------------ | ----------------
+ZIPKIN_OVER_COMPACT_UDP | 5775
+JAEGER_OVER_BINARY_UDP | 6832
+JAEGER_OVER_BINARY_HTTP | 14268
+
+## IPv6
+
+In case you need IPv6 support you need to set `ip_version` Config variable.
+By default, IPv4 is used. There is an alias `Config::IP_VERSION` which you can use
+as an alternative to raw `ip_version`.
+
+Example:
+
+```php
+use Jaeger\Config;
+
+$config = new Config(
+ [
+ "ip_version" => Config::IPV6, // <-- or use Config::IP_VERSION constant
+ 'logging' => true,
+ 'dispatch_mode' => Config::JAEGER_OVER_BINARY_UDP,
+ ],
+ 'serviceNameExample',
+);
+$config->initializeTracer();
+```
+or
+
+```php
+use Jaeger\Config;
+
+$config = new Config(
+ [
+ Config::IP_VERSION => Config::IPV6, // <--
+ 'logging' => true,
+ 'dispatch_mode' => Config::JAEGER_OVER_BINARY_UDP,
+ ],
+ 'serviceNameExample',
+);
+$config->initializeTracer();
+```
+
+
+## Testing
+
+Tests are located in the `tests` directory. See [tests/README.md](./tests/README.md).
+
+## Roadmap
+
+- [Support Span baggage](https://github.com/jonahgeorge/jaeger-client-php/issues/5)
+- [Support Tracer metrics](https://github.com/jonahgeorge/jaeger-client-php/issues/12)
+- [Support Tracer error reporting](https://github.com/jonahgeorge/jaeger-client-php/issues/13)
+
+## License
+
+[MIT License](./LICENSE).
+
+[ci-img]: https://travis-ci.org/jonahgeorge/jaeger-client-php.svg?branch=travis
+[ci]: https://travis-ci.org/jonahgeorge/jaeger-client-php
+[packagist-img]: https://badge.fury.io/ph/jonahgeorge%2Fjaeger-client-php.svg
+[packagist]: https://badge.fury.io/ph/jonahgeorge%2Fjaeger-client-php
diff --git a/vendor/jonahgeorge/jaeger-client-php/build/.gitignore b/vendor/jonahgeorge/jaeger-client-php/build/.gitignore
new file mode 100644
index 000000000..d6b7ef32c
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/build/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/vendor/jonahgeorge/jaeger-client-php/composer.json b/vendor/jonahgeorge/jaeger-client-php/composer.json
new file mode 100644
index 000000000..a9bb99a06
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/composer.json
@@ -0,0 +1,62 @@
+{
+ "name": "jonahgeorge/jaeger-client-php",
+ "description": "Jaeger Bindings for PHP OpenTracing API",
+ "keywords": [
+ "jaeger",
+ "opentracing",
+ "trace",
+ "tracing"
+ ],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Jonah George",
+ "homepage": "http://twitter.com/jonahgeorge"
+ },
+ {
+ "name": "José Carlos Chávez",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/jonahgeorge/jaeger-client-php/graphs/contributors"
+ }
+ ],
+ "require": {
+ "php": "^7.1 || ^8.0 || ^8.1",
+ "ext-sockets": "*",
+ "opentracing/opentracing": "^1.0",
+ "packaged/thrift": "^0.13",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0",
+ "psr/log": "^1.0 || ^2.0 || ^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7 || ^8 || ^9",
+ "squizlabs/php_codesniffer": "3.*",
+ "cache/array-adapter": "^1.0",
+ "symfony/polyfill-php73": "^1.10"
+ },
+ "config": {
+ "optimize-autoloader": true,
+ "preferred-install": "dist",
+ "sort-packages": true
+ },
+ "autoload": {
+ "psr-4": {
+ "Jaeger\\": "src/Jaeger/"
+ },
+ "files": [
+ "./src/Jaeger/Constants.php"
+ ]
+ },
+ "autoload-dev": {
+ "Jaeger\\Tests\\": "tests/Jaeger/"
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true,
+ "scripts": {
+ "fix-lint": "./vendor/bin/phpcbf",
+ "lint": "./vendor/bin/phpcs",
+ "test": "./vendor/bin/phpunit"
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/examples/config.php b/vendor/jonahgeorge/jaeger-client-php/examples/config.php
new file mode 100644
index 000000000..5c4726165
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/examples/config.php
@@ -0,0 +1,26 @@
+<?php
+
+use Jaeger\Config;
+
+return [
+ 'sampler' => [
+ 'type' => Jaeger\SAMPLER_TYPE_CONST,
+ 'param' => true,
+ ],
+ 'logging' => true,
+ "tags" => [
+ // process. prefix works only with JAEGER_OVER_HTTP, JAEGER_OVER_BINARY
+ // otherwise it will be shown as simple global tag
+ "process.process-tag-key-1" => "process-value-1", // all tags with `process.` prefix goes to process section
+ "process.process-tag-key-2" => "process-value-2", // all tags with `process.` prefix goes to process section
+ "global-tag-key-1" => "global-tag-value-1", // this tag will be appended to all spans
+ "global-tag-key-2" => "global-tag-value-2", // this tag will be appended to all spans
+ ],
+ "local_agent" => [
+ "reporting_host" => "localhost",
+// You can override port by setting local_agent.reporting_port value
+// "reporting_port" => 6832
+ ],
+// Different ways to send data to Jaeger. Config::ZIPKIN_OVER_COMPACT - default):
+ 'dispatch_mode' => Config::JAEGER_OVER_BINARY_UDP,
+];
diff --git a/vendor/jonahgeorge/jaeger-client-php/examples/jaeger.php b/vendor/jonahgeorge/jaeger-client-php/examples/jaeger.php
new file mode 100644
index 000000000..ed9304fe2
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/examples/jaeger.php
@@ -0,0 +1,51 @@
+<?php
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+use Jaeger\Config;
+use OpenTracing\GlobalTracer;
+
+$config = new Config(
+ require_once __DIR__.'/config.php',
+ 'your-app-name'
+);
+
+$config->initializeTracer();
+
+$tracer = GlobalTracer::get();
+
+$scope = $tracer->startActiveSpan('JaegerSpan', []);
+$scope->getSpan()->setTag("tag1", "value1");
+$scope->getSpan()->setTag("tag2", "value2");
+$scope->getSpan()->setTag("tag3", "value2");
+$scope->getSpan()->log([
+ "key1" => "value1",
+ "key2" => 2,
+ "key3" => true
+]);
+
+$scope->getSpan()->addBaggageItem("baggage-item1", "baggage-value1");
+$scope->getSpan()->addBaggageItem("baggage-item2", "baggage-value2");
+$scope->getSpan()->addBaggageItem("baggage-item3", "baggage-value3");
+
+ $nestedSpanScope = $tracer->startActiveSpan("Nested1");
+ $nestedSpanScope->getSpan()->setTag("tag1", "value1");
+ $nestedSpanScope->getSpan()->setTag("tag2", "value2");
+ $nestedSpanScope->getSpan()->setTag("tag3", "value2");
+ $nestedSpanScope->getSpan()->log([
+ "key1" => "value1",
+ "key2" => 2,
+ "key3" => true
+ ]);
+
+ $nestedSpanScope->getSpan()->addBaggageItem("baggage-item1", "baggage-value1");
+ $nestedSpanScope->getSpan()->addBaggageItem("baggage-item2", "baggage-value2");
+ $nestedSpanScope->getSpan()->addBaggageItem("baggage-item3", "baggage-value3");
+
+ sleep(1);
+
+ $nestedSpanScope->close();
+
+sleep(1);
+$scope->close();
+$tracer->flush();
diff --git a/vendor/jonahgeorge/jaeger-client-php/phpcs.xml.dist b/vendor/jonahgeorge/jaeger-client-php/phpcs.xml.dist
new file mode 100644
index 000000000..7d5db0974
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/phpcs.xml.dist
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<ruleset name="Jaeger">
+
+ <!--
+ The name attribute of the ruleset tag is displayed
+ when running PHP_CodeSniffer with the -v command line
+ argument. The description tag below is not displayed anywhere
+ except in this file, so it can contain information for
+ developers who may change this file in the future.
+ -->
+ <description>The coding standard for Jaeger Client</description>
+
+ <!-- Show sniff codes in all reports -->
+ <arg value="s"/>
+
+ <!-- Use PSR-2 as a base -->
+ <rule ref="PSR2"/>
+
+ <!-- Uncomment to use colors in progress or report -->
+ <!-- arg name="colors" / -->
+
+ <!--
+ If no files or directories are specified on the command line
+ your custom standard can specify what files should be checked
+ instead.
+ Note that specifying any file or directory path
+ on the command line will ignore all file tags.
+ -->
+ <file>src</file>
+
+ <!--
+ You can hard-code ignore patterns directly into your
+ custom standard so you don't have to specify the
+ patterns on the command line.
+ -->
+ <exclude-pattern>src/Jaeger/Thrift/*</exclude-pattern>
+</ruleset>
diff --git a/vendor/jonahgeorge/jaeger-client-php/phpunit.xml.dist b/vendor/jonahgeorge/jaeger-client-php/phpunit.xml.dist
new file mode 100644
index 000000000..d6795d99b
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/phpunit.xml.dist
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
+ bootstrap="vendor/autoload.php"
+ colors="true"
+>
+ <filter>
+ <whitelist>
+ <directory suffix=".php">src/Jaeger</directory>
+ <exclude>
+ <directory suffix="Interface.php">src/</directory>
+ <file>src/Jaeger/Constants.php</file>
+ <file>src/Jaeger/Thrift/Agent/AgentIf.php</file>
+ <file>src/Jaeger/Thrift/Agent/AggregationValidatorIf.php</file>
+ <file>src/Jaeger/Thrift/Agent/BaggageRestrictionManagerIf.php</file>
+ <file>src/Jaeger/Thrift/Agent/DependencyIf.php</file>
+ <file>src/Jaeger/Thrift/Agent/SamplingManagerIf.php</file>
+ <file>src/Jaeger/Thrift/CollectorIf.php</file>
+ <file>src/Jaeger/Thrift/Crossdock/TracedServiceIf.php</file>
+ </exclude>
+ </whitelist>
+ </filter>
+
+ <testsuites>
+ <testsuite name="Jaeger Test Suite">
+ <directory suffix=".php">tests/Jaeger</directory>
+ </testsuite>
+ </testsuites>
+
+ <php>
+ <ini name="date.timezone" value="UTC"/>
+ <ini name="display_errors" value="on"/>
+ <ini name="display_startup_errors" value="on"/>
+ </php>
+
+ <logging>
+ <log
+ type="coverage-text"
+ target="php://stdout"
+ lowUpperBound="60"
+ highLowerBound="90"/>
+
+ <log
+ type="coverage-clover"
+ target="build/coverage.xml"/>
+ </logging>
+</phpunit>
diff --git a/vendor/jonahgeorge/jaeger-client-php/scripts/thrift-gen.sh b/vendor/jonahgeorge/jaeger-client-php/scripts/thrift-gen.sh
new file mode 100644
index 000000000..7420f915f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/scripts/thrift-gen.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+set -e
+
+cd "$(dirname "$0")/.."
+
+# checkout jaeger thrift files
+rm -rf jaeger-idl
+git clone https://github.com/jaegertracing/jaeger-idl
+
+# define thrift cmd
+THRIFT="docker run -u $(id -u) -v '${PWD}:/data' thrift:0.11.0 thrift -o /data/jaeger-idl"
+THRIFT_CMD="${THRIFT} --gen php:psr4,oop"
+
+# generate php files
+FILES=$(find jaeger-idl/thrift -type f -name \*.thrift)
+for f in ${FILES}; do
+ echo "${THRIFT_CMD} "/data/${f}""
+ eval $THRIFT_CMD "/data/${f}"
+done
+
+# move generated files
+rm -rf src/Jaeger/Thrift
+mv jaeger-idl/gen-php/Jaeger/Thrift src/Jaeger/Thrift
+
+# remove thrift files
+rm -rf jaeger-idl
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/AgentClient/HttpAgentClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/AgentClient/HttpAgentClient.php
new file mode 100644
index 000000000..e270b76ac
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/AgentClient/HttpAgentClient.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Jaeger\AgentClient;
+
+class HttpAgentClient implements \Jaeger\Thrift\Agent\AgentIf
+{
+ protected $input_ = null;
+ protected $output_ = null;
+
+ protected $seqid_ = 0;
+
+ public function __construct($input, $output = null)
+ {
+ $this->input_ = $input;
+ $this->output_ = $output ? $output : $input;
+ }
+
+ public function emitZipkinBatch(array $spans)
+ {
+ }
+
+ public function emitBatch(\Jaeger\Thrift\Batch $batch)
+ {
+ $batch->write($this->output_);
+ $this->output_->getTransport()->flush();
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/BinaryCodec.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/BinaryCodec.php
new file mode 100644
index 000000000..36c2ffe2c
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/BinaryCodec.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Jaeger\Codec;
+
+use Jaeger\SpanContext;
+use OpenTracing\UnsupportedFormatException;
+
+class BinaryCodec implements CodecInterface
+{
+ /**
+ * {@inheritdoc}
+ *
+ * @see \Jaeger\Tracer::inject
+ *
+ * @param SpanContext $spanContext
+ * @param mixed $carrier
+ *
+ * @return void
+ */
+ public function inject(SpanContext $spanContext, &$carrier)
+ {
+ throw new UnsupportedFormatException('Binary encoding not implemented');
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @see \Jaeger\Tracer::extract
+ *
+ * @param mixed $carrier
+ * @return SpanContext|null
+ *
+ * @throws UnsupportedFormatException
+ */
+ public function extract($carrier)
+ {
+ throw new UnsupportedFormatException('Binary encoding not implemented');
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecInterface.php
new file mode 100644
index 000000000..2aa7d690d
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecInterface.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Jaeger\Codec;
+
+use Jaeger\SpanContext;
+
+interface CodecInterface
+{
+ /**
+ * Handle the logic behind injecting propagation scheme specific information into the carrier
+ * (e.g. http request headers, amqp message headers, etc.).
+ *
+ * This method can modify the carrier.
+ *
+ * @see \Jaeger\Tracer::inject
+ *
+ * @param SpanContext $spanContext
+ * @param mixed $carrier
+ *
+ * @return void
+ */
+ public function inject(SpanContext $spanContext, &$carrier);
+
+ /**
+ * Handle the logic behind extracting propagation-scheme specific information from carrier
+ * (e.g. http request headers, amqp message headers, etc.).
+ *
+ * This method must not modify the carrier.
+ *
+ * @see \Jaeger\Tracer::extract
+ *
+ * @param mixed $carrier
+ * @return SpanContext|null
+ */
+ public function extract($carrier);
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecUtility.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecUtility.php
new file mode 100644
index 000000000..eb86a1cde
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecUtility.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace Jaeger\Codec;
+
+class CodecUtility
+{
+
+ /**
+ * Incoming trace/span IDs are hex representations of 64-bit values. PHP
+ * represents ints internally as signed 32- or 64-bit values, but base_convert
+ * converts to string representations of arbitrarily large positive numbers.
+ * This means at least half the incoming IDs will be larger than PHP_INT_MAX.
+ *
+ * Thrift, while building a binary representation of the IDs, performs bitwise
+ * operations on the string values, implicitly casting to int and capping them
+ * at PHP_INT_MAX. So, incoming IDs larger than PHP_INT_MAX will be serialized
+ * and sent to the agent as PHP_INT_MAX, breaking trace/span correlation.
+ *
+ * This method therefore, on 64-bit architectures, splits the hex string into
+ * high and low values, converts them separately to ints, and manually combines
+ * them into a proper signed int. This int is then handled properly by the
+ * Thrift package.
+ *
+ * On 32-bit architectures, it falls back to base_convert.
+ *
+ * @param string $hex
+ * @return string|int
+ */
+ public static function hexToInt64($hex)
+ {
+ // If we're on a 32-bit architecture, fall back to base_convert.
+ if (PHP_INT_SIZE === 4) {
+ return base_convert($hex, 16, 10);
+ }
+
+ $hi = intval(substr($hex, -16, -8), 16);
+ $lo = intval(substr($hex, -8, 8), 16);
+
+ return $hi << 32 | $lo;
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/TextCodec.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/TextCodec.php
new file mode 100644
index 000000000..d437f3812
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/TextCodec.php
@@ -0,0 +1,184 @@
+<?php
+
+namespace Jaeger\Codec;
+
+use Exception;
+use Jaeger\SpanContext;
+
+use const Jaeger\TRACE_ID_HEADER;
+use const Jaeger\BAGGAGE_HEADER_PREFIX;
+use const Jaeger\DEBUG_ID_HEADER_KEY;
+
+class TextCodec implements CodecInterface
+{
+ private $urlEncoding;
+ private $traceIdHeader;
+ private $baggagePrefix;
+ private $debugIdHeader;
+ private $prefixLength;
+
+ /**
+ * @param bool $urlEncoding
+ * @param string $traceIdHeader
+ * @param string $baggageHeaderPrefix
+ * @param string $debugIdHeader
+ */
+ public function __construct(
+ bool $urlEncoding = false,
+ string $traceIdHeader = TRACE_ID_HEADER,
+ string $baggageHeaderPrefix = BAGGAGE_HEADER_PREFIX,
+ string $debugIdHeader = DEBUG_ID_HEADER_KEY
+ ) {
+ $this->urlEncoding = $urlEncoding;
+ $this->traceIdHeader = str_replace('_', '-', strtolower($traceIdHeader));
+ $this->baggagePrefix = str_replace('_', '-', strtolower($baggageHeaderPrefix));
+ $this->debugIdHeader = str_replace('_', '-', strtolower($debugIdHeader));
+ $this->prefixLength = strlen($baggageHeaderPrefix);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @see \Jaeger\Tracer::inject
+ *
+ * @param SpanContext $spanContext
+ * @param mixed $carrier
+ *
+ * @return void
+ */
+ public function inject(SpanContext $spanContext, &$carrier)
+ {
+ $carrier[$this->traceIdHeader] = $this->spanContextToString(
+ $spanContext->getTraceId(),
+ $spanContext->getSpanId(),
+ $spanContext->getParentId(),
+ $spanContext->getFlags()
+ );
+
+ $baggage = $spanContext->getBaggage();
+ if (empty($baggage)) {
+ return;
+ }
+
+ foreach ($baggage as $key => $value) {
+ $encodedValue = $value;
+
+ if ($this->urlEncoding) {
+ $encodedValue = urlencode($value);
+ }
+
+ $carrier[$this->baggagePrefix . $key] = $encodedValue;
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @see \Jaeger\Tracer::extract
+ *
+ * @param mixed $carrier
+ * @return SpanContext|null
+ *
+ * @throws Exception
+ */
+ public function extract($carrier)
+ {
+ $traceId = null;
+ $spanId = null;
+ $parentId = null;
+ $flags = null;
+ $baggage = null;
+ $debugId = null;
+
+ foreach ($carrier as $key => $value) {
+ $ucKey = strtolower($key);
+
+ if ($ucKey === $this->traceIdHeader) {
+ if ($this->urlEncoding) {
+ $value = urldecode($value);
+ }
+ list($traceId, $spanId, $parentId, $flags) =
+ $this->spanContextFromString($value);
+ } elseif ($this->startsWith($ucKey, $this->baggagePrefix)) {
+ if ($this->urlEncoding) {
+ $value = urldecode($value);
+ }
+ $attrKey = substr($key, $this->prefixLength);
+ if ($baggage === null) {
+ $baggage = [strtolower($attrKey) => $value];
+ } else {
+ $baggage[strtolower($attrKey)] = $value;
+ }
+ } elseif ($ucKey === $this->debugIdHeader) {
+ if ($this->urlEncoding) {
+ $value = urldecode($value);
+ }
+ $debugId = $value;
+ }
+ }
+
+ if ($traceId === null && $baggage !== null) {
+ throw new Exception('baggage without trace ctx');
+ }
+
+ if ($traceId === null) {
+ if ($debugId !== null) {
+ return new SpanContext(null, null, null, null, [], $debugId);
+ }
+ return null;
+ }
+
+ return new SpanContext($traceId, $spanId, $parentId, $flags, $baggage);
+ }
+
+ /**
+ * Store a span context to a string.
+ *
+ * @param int $traceId
+ * @param int $spanId
+ * @param int $parentId
+ * @param int $flags
+ * @return string
+ */
+ private function spanContextToString($traceId, $spanId, $parentId, $flags)
+ {
+ $parentId = $parentId ?? 0;
+ return sprintf('%x:%x:%x:%x', $traceId, $spanId, $parentId, $flags);
+ }
+
+ /**
+ * Create a span context from a string.
+ *
+ * @param string $value
+ * @return array
+ *
+ * @throws Exception
+ */
+ private function spanContextFromString($value): array
+ {
+ $parts = explode(':', $value);
+
+ if (count($parts) != 4) {
+ throw new Exception('Malformed tracer state string.');
+ }
+
+ return [
+ CodecUtility::hexToInt64($parts[0]),
+ CodecUtility::hexToInt64($parts[1]),
+ CodecUtility::hexToInt64($parts[2]),
+ $parts[3],
+ ];
+ }
+
+ /**
+ * Checks that a string ($haystack) starts with a given prefix ($needle).
+ *
+ * @param string $haystack
+ * @param string $needle
+ * @return bool
+ */
+ private function startsWith(string $haystack, string $needle): bool
+ {
+ return substr($haystack, 0, strlen($needle)) == $needle;
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/ZipkinCodec.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/ZipkinCodec.php
new file mode 100644
index 000000000..1ea5d7c0b
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/ZipkinCodec.php
@@ -0,0 +1,85 @@
+<?php
+
+namespace Jaeger\Codec;
+
+use Jaeger\SpanContext;
+
+use const Jaeger\DEBUG_FLAG;
+use const Jaeger\SAMPLED_FLAG;
+
+class ZipkinCodec implements CodecInterface
+{
+ const SAMPLED_NAME = 'X-B3-Sampled';
+ const TRACE_ID_NAME = 'X-B3-TraceId';
+ const SPAN_ID_NAME = 'X-B3-SpanId';
+ const PARENT_ID_NAME = 'X-B3-ParentSpanId';
+ const FLAGS_NAME = 'X-B3-Flags';
+
+ /**
+ * {@inheritdoc}
+ *
+ * @see \Jaeger\Tracer::inject
+ *
+ * @param SpanContext $spanContext
+ * @param mixed $carrier
+ *
+ * @return void
+ */
+ public function inject(SpanContext $spanContext, &$carrier)
+ {
+ $carrier[self::TRACE_ID_NAME] = dechex($spanContext->getTraceId());
+ $carrier[self::SPAN_ID_NAME] = dechex($spanContext->getSpanId());
+ if ($spanContext->getParentId() != null) {
+ $carrier[self::PARENT_ID_NAME] = dechex($spanContext->getParentId());
+ }
+ $carrier[self::FLAGS_NAME] = (int) $spanContext->getFlags();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @see \Jaeger\Tracer::extract
+ *
+ * @param mixed $carrier
+ * @return SpanContext|null
+ */
+ public function extract($carrier)
+ {
+ $traceId = "0";
+ $spanId = "0";
+ $parentId = "0";
+ $flags = 0;
+
+ if (isset($carrier[strtolower(self::SAMPLED_NAME)])) {
+ if ($carrier[strtolower(self::SAMPLED_NAME)] === "1" ||
+ strtolower($carrier[strtolower(self::SAMPLED_NAME)] === "true")
+ ) {
+ $flags = $flags | SAMPLED_FLAG;
+ }
+ }
+
+ if (isset($carrier[strtolower(self::TRACE_ID_NAME)])) {
+ $traceId = CodecUtility::hexToInt64($carrier[strtolower(self::TRACE_ID_NAME)], 16, 10);
+ }
+
+ if (isset($carrier[strtolower(self::PARENT_ID_NAME)])) {
+ $parentId = CodecUtility::hexToInt64($carrier[strtolower(self::PARENT_ID_NAME)], 16, 10);
+ }
+
+ if (isset($carrier[strtolower(self::SPAN_ID_NAME)])) {
+ $spanId = CodecUtility::hexToInt64($carrier[strtolower(self::SPAN_ID_NAME)], 16, 10);
+ }
+
+ if (isset($carrier[strtolower(self::FLAGS_NAME)])) {
+ if ($carrier[strtolower(self::FLAGS_NAME)] === "1") {
+ $flags = $flags | DEBUG_FLAG;
+ }
+ }
+
+ if ($traceId != "0" && $spanId != "0") {
+ return new SpanContext($traceId, $spanId, $parentId, $flags);
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Config.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Config.php
new file mode 100644
index 000000000..28fb972da
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Config.php
@@ -0,0 +1,390 @@
+<?php
+
+namespace Jaeger;
+
+use Exception;
+use Jaeger\Reporter\CompositeReporter;
+use Jaeger\Reporter\LoggingReporter;
+use Jaeger\Reporter\ReporterInterface;
+use Jaeger\ReporterFactory\JaegerHttpReporterFactory;
+use Jaeger\ReporterFactory\JaegerReporterFactory;
+use Jaeger\ReporterFactory\ZipkinReporterFactory;
+use Jaeger\Sampler\ConstSampler;
+use Jaeger\Sampler\ProbabilisticSampler;
+use Jaeger\Sampler\RateLimitingSampler;
+use Jaeger\Sampler\SamplerInterface;
+use Jaeger\Util\RateLimiter;
+use OpenTracing\GlobalTracer;
+use Psr\Cache\CacheItemPoolInterface;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+
+class Config
+{
+ const IP_VERSION = "ip_version";
+
+ const ZIPKIN_OVER_COMPACT_UDP = "zipkin_over_compact_udp";
+ const JAEGER_OVER_BINARY_UDP = "jaeger_over_binary_udp";
+ const JAEGER_OVER_BINARY_HTTP = "jaeger_over_binary_http";
+
+ const IPV6 = "IPv6";
+ const IPV4 = "IPv4";
+
+ /**
+ * @return string[]
+ */
+ public static function getAvailableDispatchModes()
+ {
+ return [self::ZIPKIN_OVER_COMPACT_UDP, self::JAEGER_OVER_BINARY_UDP, self::JAEGER_OVER_BINARY_HTTP];
+ }
+
+ /**
+ * @var array
+ */
+ private $config;
+
+ /**
+ * @var string
+ */
+ private $serviceName;
+
+ /**
+ * @var bool
+ */
+ private $initialized = false;
+
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * @return LoggerInterface
+ */
+ public function getLogger()
+ {
+ return $this->logger;
+ }
+
+ /**
+ * @var CacheItemPoolInterface
+ */
+ private $cache;
+
+ /**
+ * Config constructor.
+ * @param array $config
+ * @param string|null $serviceName
+ * @param LoggerInterface|null $logger
+ * @param CacheItemPoolInterface|null $cache
+ * @throws Exception
+ */
+ public function __construct(
+ array $config,
+ string $serviceName = null,
+ LoggerInterface $logger = null,
+ CacheItemPoolInterface $cache = null
+ ) {
+ $this->config = $config;
+
+ $this->setConfigFromEnv();
+
+ if (empty($this->config["dispatch_mode"])) {
+ $this->config["dispatch_mode"] = self::ZIPKIN_OVER_COMPACT_UDP;
+ }
+
+ if (empty($this->config[Config::IP_VERSION])) {
+ $this->config[Config::IP_VERSION] = self::IPV4;
+ }
+
+ $this->serviceName = $this->config['service_name'] ?? $serviceName;
+
+ if ($this->serviceName === null) {
+ throw new Exception('service_name required in the config or param.');
+ }
+
+ $this->logger = $logger ?: new NullLogger();
+ $this->cache = $cache;
+ }
+
+ /**
+ * @return Tracer|null
+ * @throws Exception
+ */
+ public function initializeTracer()
+ {
+ if ($this->initialized) {
+ $this->logger->warning('Jaeger tracer already initialized, skipping');
+ return null;
+ }
+
+ $reporter = $this->getReporter();
+ $sampler = $this->getSampler();
+
+
+ $tracer = $this->createTracer($reporter, $sampler);
+
+ $this->initializeGlobalTracer($tracer);
+
+ return $tracer;
+ }
+
+ /**
+ * @param ReporterInterface $reporter
+ * @param SamplerInterface $sampler
+ * @return Tracer
+ */
+ public function createTracer(ReporterInterface $reporter, SamplerInterface $sampler): Tracer
+ {
+ return new Tracer(
+ $this->serviceName,
+ $reporter,
+ $sampler,
+ $this->shouldUseOneSpanPerRpc(),
+ $this->logger,
+ null,
+ $this->getTraceIdHeader(),
+ $this->getBaggageHeaderPrefix(),
+ $this->getDebugIdHeaderKey(),
+ $this->getConfiguredTags()
+ );
+ }
+
+ /**
+ * @return string
+ */
+ public function getServiceName(): string
+ {
+ return $this->serviceName;
+ }
+
+ /**
+ * @param Tracer $tracer
+ */
+ private function initializeGlobalTracer(Tracer $tracer)
+ {
+ GlobalTracer::set($tracer);
+ $this->logger->debug('OpenTracing\GlobalTracer initialized to ' . $tracer->getServiceName());
+ }
+
+ /**
+ * @return bool
+ */
+ private function getLogging(): bool
+ {
+ return (bool)($this->config['logging'] ?? false);
+ }
+
+ /**
+ * @return ReporterInterface
+ */
+ private function getReporter(): ReporterInterface
+ {
+ switch ($this->config["dispatch_mode"]) {
+ case self::JAEGER_OVER_BINARY_UDP:
+ $reporter = (new JaegerReporterFactory($this))->createReporter();
+ break;
+ case self::ZIPKIN_OVER_COMPACT_UDP:
+ $reporter = (new ZipkinReporterFactory($this))->createReporter();
+ break;
+ case self::JAEGER_OVER_BINARY_HTTP:
+ $reporter = (new JaegerHttpReporterFactory($this))->createReporter();
+ break;
+ default:
+ throw new \RuntimeException(
+ sprintf(
+ "Unsupported `dispatch_mode` value: %s. Allowed values are: %s",
+ $this->config["dispatch_mode"],
+ implode(", ", Config::getAvailableDispatchModes())
+ )
+ );
+ }
+
+ if ($this->getLogging()) {
+ $reporter = new CompositeReporter($reporter, new LoggingReporter($this->logger));
+ }
+
+ return $reporter;
+ }
+
+ /**
+ * @return SamplerInterface
+ * @throws \Psr\Cache\InvalidArgumentException
+ * @throws Exception
+ */
+ private function getSampler(): SamplerInterface
+ {
+ $samplerConfig = $this->config['sampler'] ?? [];
+ $samplerType = $samplerConfig['type'] ?? null;
+ $samplerParam = $samplerConfig['param'] ?? null;
+
+ if ($samplerType === null || $samplerType === SAMPLER_TYPE_REMOTE) {
+ // todo: implement remote sampling
+ return new ProbabilisticSampler((float)$samplerParam);
+ } elseif ($samplerType === SAMPLER_TYPE_CONST) {
+ return new ConstSampler($samplerParam ?? false);
+ } elseif ($samplerType === SAMPLER_TYPE_PROBABILISTIC) {
+ return new ProbabilisticSampler((float)$samplerParam);
+ } elseif ($samplerType === SAMPLER_TYPE_RATE_LIMITING) {
+ if (!$this->cache) {
+ throw new Exception('You cannot use RateLimitingSampler without cache component');
+ }
+ $cacheConfig = $samplerConfig['cache'] ?? [];
+ return new RateLimitingSampler(
+ $samplerParam ?? 0,
+ new RateLimiter(
+ $this->cache,
+ $cacheConfig['currentBalanceKey'] ?? 'rate.currentBalance',
+ $cacheConfig['lastTickKey'] ?? 'rate.lastTick'
+ )
+ );
+ }
+ throw new Exception('Unknown sampler type ' . $samplerType);
+ }
+
+ /**
+ * The UDP max buffer length.
+ *
+ * @return int
+ */
+ public function getMaxBufferLength(): int
+ {
+ return (int)($this->config['max_buffer_length'] ?? 64000);
+ }
+
+ /**
+ * @return string
+ */
+ public function getLocalAgentReportingHost(): string
+ {
+ return $this->getLocalAgentGroup()['reporting_host'] ?? DEFAULT_REPORTING_HOST;
+ }
+
+ /**
+ * @return int
+ */
+ public function getLocalAgentReportingPort(): int
+ {
+ $port = $this->getLocalAgentGroup()['reporting_port'] ?? null;
+ if (empty($this->getLocalAgentGroup()['reporting_port'])) {
+ switch ($this->config['dispatch_mode']) {
+ case self::JAEGER_OVER_BINARY_UDP:
+ $port = DEFAULT_JAEGER_UDP_BINARY_REPORTING_PORT;
+ break;
+ case self::JAEGER_OVER_BINARY_HTTP:
+ $port = DEFAULT_JAEGER_HTTP_BINARY_REPORTING_PORT;
+ break;
+ default:
+ $port = DEFAULT_ZIPKIN_UDP_COMPACT_REPORTING_PORT;
+ }
+ }
+ return (int)$port;
+ }
+
+ /**
+ * @return array
+ */
+ private function getLocalAgentGroup(): array
+ {
+ return $this->config['local_agent'] ?? [];
+ }
+
+ /**
+ * @return string
+ */
+ private function getTraceIdHeader(): string
+ {
+ return $this->config['trace_id_header'] ?? TRACE_ID_HEADER;
+ }
+
+ /**
+ * @return string
+ */
+ private function getBaggageHeaderPrefix(): string
+ {
+ return $this->config['baggage_header_prefix'] ?? BAGGAGE_HEADER_PREFIX;
+ }
+
+ /**
+ * @return string
+ */
+ private function getDebugIdHeaderKey(): string
+ {
+ return $this->config['debug_id_header_key'] ?? DEBUG_ID_HEADER_KEY;
+ }
+
+ /**
+ * Get a list of user-defined tags to be added to each span created by the tracer initialized by this config.
+ * @return string[]
+ */
+ private function getConfiguredTags(): array
+ {
+ return $this->config['tags'] ?? [];
+ }
+
+ /**
+ * Whether to follow the Zipkin model of using one span per RPC,
+ * as opposed to the model of using separate spans on the RPC client and server.
+ * Defaults to true.
+ *
+ * @return bool
+ */
+ private function shouldUseOneSpanPerRpc(): bool
+ {
+ return $this->config['one_span_per_rpc'] ?? true;
+ }
+
+ public function ipProtocolVersion(): string
+ {
+ return $this->config[self::IP_VERSION] ?? self::IPV4;
+ }
+
+ /**
+ * Sets values from env vars into config props, unless ones has been already set.
+ */
+ private function setConfigFromEnv()
+ {
+ // general
+ if (isset($_ENV['JAEGER_SERVICE_NAME']) && !isset($this->config['service_name'])) {
+ $this->config['service_name'] = $_ENV['JAEGER_SERVICE_NAME'];
+ }
+
+ if (isset($_ENV['JAEGER_TAGS']) && !isset($this->config["tags"])) {
+ $this->config['tags'] = $_ENV['JAEGER_TAGS'];
+ }
+
+ if (isset($_ENV['JAEGER_DISPATCH_MODE']) && !isset($this->config['dispatch_mode'])) {
+ $this->config['dispatch_mode'] = $_ENV['JAEGER_DISPATCH_MODE'];
+ }
+
+ // reporting
+ if (isset($_ENV['JAEGER_AGENT_HOST']) && !isset($this->config['local_agent']['reporting_host'])) {
+ $this->config['local_agent']['reporting_host'] = $_ENV['JAEGER_AGENT_HOST'];
+ }
+
+ if (isset($_ENV['JAEGER_AGENT_PORT']) && !isset($this->config['local_agent']['reporting_port'])) {
+ $this->config['local_agent']['reporting_port'] = intval($_ENV['JAEGER_AGENT_PORT']);
+ }
+
+ if (isset($_ENV['JAEGER_REPORTER_LOG_SPANS']) && !isset($this->config['logging'])) {
+ $this->config['logging'] = filter_var($_ENV['JAEGER_REPORTER_LOG_SPANS'], FILTER_VALIDATE_BOOLEAN);
+ }
+
+ if (isset($_ENV['JAEGER_REPORTER_MAX_QUEUE_SIZE']) && !isset($this->config['max_buffer_length'])) {
+ $this->config['max_buffer_length'] = intval($_ENV['JAEGER_REPORTER_MAX_QUEUE_SIZE']);
+ }
+
+ // sampling
+ if (isset($_ENV['JAEGER_SAMPLER_TYPE']) && !isset($this->config['sampler']['type'])) {
+ $this->config['sampler']['type'] = $_ENV['JAEGER_SAMPLER_TYPE'];
+ }
+
+ if (isset($_ENV['JAEGER_SAMPLER_PARAM']) && !isset($this->config['sampler']['param'])) {
+ $this->config['sampler']['param'] = $_ENV['JAEGER_SAMPLER_PARAM'];
+ }
+
+ if (isset($_ENV['IP_VERSION']) && !isset($this->config[Config::IP_VERSION])) {
+ $this->config[Config::IP_VERSION] = $_ENV['IP_VERSION'];
+ }
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Constants.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Constants.php
new file mode 100644
index 000000000..1e4be65f5
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Constants.php
@@ -0,0 +1,100 @@
+<?php
+
+namespace Jaeger;
+
+// Max number of bits to use when generating random ID
+const MAX_ID_BITS = 64;
+
+// How often remotely controller sampler polls for sampling strategy
+const DEFAULT_SAMPLING_INTERVAL = 60;
+
+// How often remote reporter does a preemptive flush of its buffers
+const DEFAULT_FLUSH_INTERVAL = 1;
+
+// Name of the HTTP header used to encode trace ID
+const TRACE_ID_HEADER = 'uber-trace-id';
+
+// Prefix for HTTP headers used to record baggage items
+const BAGGAGE_HEADER_PREFIX = 'uberctx-';
+
+// The name of HTTP header or a TextMap carrier key which, if found in the
+// carrier, forces the trace to be sampled as "debug" trace. The value of the
+// header is recorded as the tag on the # root span, so that the trace can
+// be found in the UI using this value as a correlation ID.
+const DEBUG_ID_HEADER_KEY = 'jaeger-debug-id';
+
+const JAEGER_CLIENT_VERSION = 'PHP-' . PHP_VERSION;
+
+// Tracer-scoped tag that tells the version of Jaeger client library
+const JAEGER_VERSION_TAG_KEY = 'jaeger.version';
+
+// Tracer-scoped tag that contains the hostname
+const JAEGER_HOSTNAME_TAG_KEY = 'jaeger.hostname';
+
+const SAMPLER_TYPE_TAG_KEY = 'sampler.type';
+
+const SAMPLER_PARAM_TAG_KEY = 'sampler.param';
+
+const DEFAULT_SAMPLING_PROBABILITY = 0.001;
+
+const DEFAULT_LOWER_BOUND = 1.0 / (10.0 * 60.0); # sample once every 10 minutes
+
+const DEFAULT_MAX_OPERATIONS = 2000;
+
+const STRATEGIES_STR = 'perOperationStrategies';
+
+const OPERATION_STR = 'operation';
+
+const DEFAULT_LOWER_BOUND_STR = 'defaultLowerBoundTracesPerSecond';
+
+const PROBABILISTIC_SAMPLING_STR = 'probabilisticSampling';
+
+const SAMPLING_RATE_STR = 'samplingRate';
+
+const DEFAULT_SAMPLING_PROBABILITY_STR = 'defaultSamplingProbability';
+
+const OPERATION_SAMPLING_STR = 'operationSampling';
+
+const MAX_TRACES_PER_SECOND_STR = 'maxTracesPerSecond';
+
+const RATE_LIMITING_SAMPLING_STR = 'rateLimitingSampling';
+
+const STRATEGY_TYPE_STR = 'strategyType';
+
+// the type of sampler that always makes the same decision.
+const SAMPLER_TYPE_CONST = 'const';
+
+// the type of sampler that polls Jaeger agent for sampling strategy.
+const SAMPLER_TYPE_REMOTE = 'remote';
+
+// the type of sampler that samples traces with a certain fixed probability.
+const SAMPLER_TYPE_PROBABILISTIC = 'probabilistic';
+
+// the type of sampler that samples only up to a fixed number
+// of traces per second.
+// noinspection SpellCheckingInspection
+const SAMPLER_TYPE_RATE_LIMITING = 'ratelimiting';
+
+// the type of sampler that samples only up to a fixed number
+// of traces per second.
+// noinspection SpellCheckingInspection
+const SAMPLER_TYPE_LOWER_BOUND = 'lowerbound';
+
+const DEFAULT_REPORTING_HOST = 'localhost';
+
+/** @deprecated */
+const DEFAULT_REPORTING_PORT = 5775;
+
+const DEFAULT_ZIPKIN_UDP_COMPACT_REPORTING_PORT = 5775;
+const DEFAULT_JAEGER_UDP_BINARY_REPORTING_PORT = 6832;
+const DEFAULT_JAEGER_HTTP_BINARY_REPORTING_PORT = 14268;
+
+const DEFAULT_SAMPLING_PORT = 5778;
+
+const LOCAL_AGENT_DEFAULT_ENABLED = true;
+
+const ZIPKIN_SPAN_FORMAT = 'zipkin-span-format';
+
+const SAMPLED_FLAG = 0x01;
+
+const DEBUG_FLAG = 0x02;
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Mapper/SpanToJaegerMapper.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Mapper/SpanToJaegerMapper.php
new file mode 100644
index 000000000..da5871904
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Mapper/SpanToJaegerMapper.php
@@ -0,0 +1,171 @@
+<?php
+
+namespace Jaeger\Mapper;
+
+use Jaeger\Span;
+use Jaeger\Thrift\Agent\Zipkin\AnnotationType;
+use Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation;
+use Jaeger\Thrift\Log;
+use Jaeger\Thrift\Span as JaegerThriftSpan;
+use Jaeger\Thrift\Tag;
+use Jaeger\Thrift\TagType;
+use const OpenTracing\Tags\COMPONENT;
+use const OpenTracing\Tags\PEER_HOST_IPV4;
+use const OpenTracing\Tags\PEER_PORT;
+use const OpenTracing\Tags\PEER_SERVICE;
+use const OpenTracing\Tags\SPAN_KIND;
+
+class SpanToJaegerMapper
+{
+ private $specialSpanTags = ["jaeger.hostname", "jaeger.version"];
+
+ private $processTagsPrefix = "process.";
+
+ /**
+ * @return string[]
+ */
+ public function getSpecialSpanTags(): array
+ {
+ return $this->specialSpanTags;
+ }
+
+ /**
+ * @return string
+ */
+ public function getProcessTagsPrefix(): string
+ {
+ return $this->processTagsPrefix;
+ }
+
+ public function mapSpanToJaeger(Span $span) : JaegerThriftSpan
+ {
+ $timestamp = $span->getStartTime();
+ $duration = $span->getEndTime() - $span->getStartTime();
+
+ /** @var Tag[] $tags */
+ $tags = [];
+
+ $tags[] = new Tag([
+ "key" => COMPONENT,
+ "vType" => TagType::STRING,
+ "vStr" => $span->getComponent() ?? $span->getTracer()->getServiceName(),
+ ]);
+
+ // Handle special tags
+ $peerService = $span->peer['service_name'] ?? null;
+ if ($peerService !== null) {
+ $tags[] = new Tag([
+ "key" => PEER_SERVICE,
+ "vType" => TagType::STRING,
+ "vStr" => $peerService,
+ ]);
+ }
+
+ $peerHostIpv4 = $span->peer['ipv4'] ?? null;
+ if ($peerHostIpv4 !== null) {
+ $tags[] = new Tag([
+ "key" => PEER_HOST_IPV4,
+ "vType" => TagType::STRING,
+ "vStr" => $peerHostIpv4,
+ ]);
+ }
+
+ $peerPort = $span->peer['port'] ?? null;
+ if ($peerPort !== null) {
+ $tags[] = new Tag([
+ "key" => PEER_PORT,
+ "vType" => TagType::LONG,
+ "vLong" => $peerPort,
+ ]);
+ }
+
+ $spanKind = $span->getKind();
+ if ($spanKind !== null) {
+ $tags[] = new Tag([
+ "key" => SPAN_KIND,
+ "vType" => TagType::STRING,
+ "vStr" => $spanKind,
+ ]);
+ }
+
+ /** @var BinaryAnnotation[] $binaryAnnotationTags */
+ $binaryAnnotationTags = $span->getTags();
+ foreach ($binaryAnnotationTags as $binaryAnnotationTag) {
+ if (in_array($binaryAnnotationTag->key, $this->specialSpanTags, true)) {
+ continue ;
+ }
+
+ if (strpos($binaryAnnotationTag->key, $this->processTagsPrefix) === 0) {
+ continue;
+ }
+
+ $type = "";
+ $vkey = "";
+ switch ($binaryAnnotationTag->annotation_type) {
+ case AnnotationType::BOOL:
+ $type = TagType::BOOL;
+ $vkey = "vBool";
+ break;
+ case AnnotationType::BYTES:
+ $type = TagType::BINARY;
+ $vkey = "vBinary";
+ break;
+ case AnnotationType::DOUBLE:
+ $type = TagType::DOUBLE;
+ $vkey = "vDouble";
+ break;
+ case AnnotationType::I16:
+ case AnnotationType::I32:
+ case AnnotationType::I64:
+ $type = TagType::LONG;
+ $vkey = "vLong";
+ break;
+ default:
+ $type = TagType::STRING;
+ $vkey = "vStr";
+ }
+
+ $tags[] = new Tag([
+ "key" => $binaryAnnotationTag->key,
+ "vType" => $type,
+ $vkey => $binaryAnnotationTag->value,
+ ]);
+ }
+
+ /** @var Log[] $logs */
+ $logs = [];
+
+ $spanLogs = $span->getLogs();
+
+ foreach ($spanLogs as $spanLog) {
+ /** @var Tag $fields */
+ $fields = [];
+
+ if (!empty($spanLog["fields"])) {
+ $fields[] = new Tag([
+ "key" => "event",
+ "vType" => TagType::STRING,
+ "vStr" => json_encode($spanLog["fields"])
+ ]);
+ }
+
+ $logs[] = new Log([
+ "timestamp" => $spanLog["timestamp"],
+ "fields" => $fields
+ ]);
+ }
+
+ return new JaegerThriftSpan([
+ "traceIdLow" => (int)$span->getContext()->getTraceId(),
+ "traceIdHigh" => 0,
+ "spanId" => (int)$span->getContext()->getSpanId(),
+ "parentSpanId" => (int)$span->getContext()->getParentId(),
+ "operationName" => $span->getOperationName(),
+ "startTime" => $timestamp,
+ "duration" => $duration,
+ "flags" => (int)$span->isDebug(),
+ "tags" => $tags,
+ "logs" => $logs
+ ]);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/CompositeReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/CompositeReporter.php
new file mode 100644
index 000000000..78533cc76
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/CompositeReporter.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace Jaeger\Reporter;
+
+use Jaeger\Span;
+
+/**
+ * CompositeReporter delegates reporting to one or more underlying reporters.
+ */
+class CompositeReporter implements ReporterInterface
+{
+ /**
+ * @var ReporterInterface[]
+ */
+ private $reporters;
+
+ /**
+ * CompositeReporter constructor.
+ *
+ * @param ReporterInterface ...$reporters
+ */
+ public function __construct(ReporterInterface ...$reporters)
+ {
+ $this->reporters = $reporters;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param Span $span
+ * @return void
+ */
+ public function reportSpan(Span $span)
+ {
+ foreach ($this->reporters as $reporter) {
+ $reporter->reportSpan($span);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ public function close()
+ {
+ foreach ($this->reporters as $reporter) {
+ $reporter->close();
+ }
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/InMemoryReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/InMemoryReporter.php
new file mode 100644
index 000000000..8aabe2ee8
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/InMemoryReporter.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace Jaeger\Reporter;
+
+use Jaeger\Span;
+
+/**
+ * InMemoryReporter stores spans in memory and returns them via getSpans().
+ */
+class InMemoryReporter implements ReporterInterface
+{
+ /**
+ * @var Span[]
+ */
+ private $spans = [];
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param Span $span
+ * @return void
+ */
+ public function reportSpan(Span $span)
+ {
+ $this->spans[] = $span;
+ }
+
+ /**
+ * @return Span[]
+ */
+ public function getSpans(): array
+ {
+ return $this->spans;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * Only implemented to satisfy the sampler interface.
+ *
+ * @return void
+ */
+ public function close()
+ {
+ // nothing to do
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/JaegerReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/JaegerReporter.php
new file mode 100644
index 000000000..999d69e0a
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/JaegerReporter.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Jaeger\Reporter;
+
+use Jaeger\Sender\SenderInterface;
+use Jaeger\Span;
+
+class JaegerReporter implements ReporterInterface
+{
+ /**
+ * @var SenderInterface
+ */
+ private $sender;
+
+ /**
+ * RemoteReporter constructor.
+ *
+ * @param SenderInterface $sender
+ */
+ public function __construct(SenderInterface $sender)
+ {
+ $this->sender = $sender;
+ }
+
+ public function reportSpan(Span $span)
+ {
+ $this->sender->append($span);
+ }
+
+ public function close()
+ {
+ $this->sender->flush();
+ $this->sender->close();
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/LoggingReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/LoggingReporter.php
new file mode 100644
index 000000000..264ea94c5
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/LoggingReporter.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace Jaeger\Reporter;
+
+use Jaeger\Span;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+
+/**
+ * LoggingReporter logs all spans.
+ */
+class LoggingReporter implements ReporterInterface
+{
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * LoggingReporter constructor.
+ *
+ * @param LoggerInterface|null $logger
+ */
+ public function __construct(LoggerInterface $logger = null)
+ {
+ $this->logger = $logger ?? new NullLogger();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param Span $span
+ * @return void
+ */
+ public function reportSpan(Span $span)
+ {
+ $this->logger->debug('Reporting span ' . $span->getOperationName());
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * Only implemented to satisfy the sampler interface.
+ *
+ * @return void
+ */
+ public function close()
+ {
+ // nothing to do
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/NullReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/NullReporter.php
new file mode 100644
index 000000000..84a953bef
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/NullReporter.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Jaeger\Reporter;
+
+use Jaeger\Span;
+
+/**
+ * NullReporter ignores all spans.
+ */
+class NullReporter implements ReporterInterface
+{
+ /**
+ * {@inheritdoc}
+ *
+ * @param Span $span
+ * @return void
+ */
+ public function reportSpan(Span $span)
+ {
+ // nothing to do
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ public function close()
+ {
+ // nothing to do
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/RemoteReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/RemoteReporter.php
new file mode 100644
index 000000000..9b78aa3d1
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/RemoteReporter.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Jaeger\Reporter;
+
+use Jaeger\Sender\UdpSender;
+use Jaeger\Span;
+
+class RemoteReporter implements ReporterInterface
+{
+ /**
+ * @var UdpSender
+ */
+ private $transport;
+
+ /**
+ * RemoteReporter constructor.
+ *
+ * @param UdpSender $transport
+ */
+ public function __construct(UdpSender $transport)
+ {
+ $this->transport = $transport;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param Span $span
+ * @return void
+ */
+ public function reportSpan(Span $span)
+ {
+ $this->transport->append($span);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ public function close()
+ {
+ $this->transport->flush();
+ $this->transport->close();
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/ReporterInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/ReporterInterface.php
new file mode 100644
index 000000000..fea8a8713
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/ReporterInterface.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Jaeger\Reporter;
+
+use Jaeger\Span;
+
+/**
+ * Uses to report finished span to something that collects those spans.
+ *
+ * @package Jaeger\Reporter
+ */
+interface ReporterInterface
+{
+ /**
+ * Report finished span.
+ *
+ * @param Span $span
+ * @return void
+ */
+ public function reportSpan(Span $span);
+
+ /**
+ * Release any resources used by the reporter and flushes/sends the data.
+ *
+ * @return void
+ */
+ public function close();
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/AbstractReporterFactory.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/AbstractReporterFactory.php
new file mode 100644
index 000000000..e34adc5dc
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/AbstractReporterFactory.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Jaeger\ReporterFactory;
+
+use Jaeger\Config;
+use Thrift\Transport\TTransport;
+
+abstract class AbstractReporterFactory implements ReporterFactoryInterface
+{
+ /**
+ * @var Config
+ */
+ protected $config;
+
+ /**
+ * AbstractReporterFactory constructor.
+ * @param Config $config
+ */
+ public function __construct($config)
+ {
+ $this->config = $config;
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerHttpReporterFactory.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerHttpReporterFactory.php
new file mode 100644
index 000000000..038e81161
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerHttpReporterFactory.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Jaeger\ReporterFactory;
+
+use Jaeger\AgentClient\HttpAgentClient;
+use Jaeger\Reporter\JaegerReporter;
+use Jaeger\Reporter\ReporterInterface;
+use Jaeger\Sender\JaegerSender;
+use Thrift\Exception\TTransportException;
+use Thrift\Protocol\TBinaryProtocol;
+use Thrift\Transport\THttpClient;
+
+class JaegerHttpReporterFactory extends AbstractReporterFactory implements ReporterFactoryInterface
+{
+ public function createReporter() : ReporterInterface
+ {
+ $transport = new THttpClient(
+ $this->config->getLocalAgentReportingHost(),
+ $this->config->getLocalAgentReportingPort(),
+ "/api/traces"
+ );
+
+ try {
+ $transport->open();
+ } catch (TTransportException $e) {
+ $this->config->getLogger()->warning($e->getMessage());
+ }
+ $protocol = new TBinaryProtocol($transport);
+ $client = new HttpAgentClient($protocol);
+ $this->config->getLogger()->debug('Initializing HTTP Jaeger Tracer with Jaeger.Thrift over Binary protocol');
+ $sender = new JaegerSender($client, $this->config->getLogger());
+ $sender->setMaxBufferLength($this->config->getMaxBufferLength());
+ return new JaegerReporter($sender);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerReporterFactory.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerReporterFactory.php
new file mode 100644
index 000000000..9865884b5
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerReporterFactory.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Jaeger\ReporterFactory;
+
+use Jaeger\AgentClient\HttpAgentClient;
+use Jaeger\Reporter\JaegerReporter;
+use Jaeger\Reporter\ReporterInterface;
+use Jaeger\Sender\JaegerSender;
+use Jaeger\Thrift\Agent\AgentClient;
+use Jaeger\ThriftUdpTransport;
+use Thrift\Exception\TTransportException;
+use Thrift\Protocol\TBinaryProtocol;
+use Thrift\Transport\TBufferedTransport;
+
+class JaegerReporterFactory extends AbstractReporterFactory implements ReporterFactoryInterface
+{
+ public function createReporter() : ReporterInterface
+ {
+ $udp = new ThriftUdpTransport(
+ $this->config->getLocalAgentReportingHost(),
+ $this->config->getLocalAgentReportingPort(),
+ $this->config->getLogger(),
+ $this->config
+ );
+
+ $transport = new TBufferedTransport(
+ $udp,
+ $this->config->getMaxBufferLength(),
+ $this->config->getMaxBufferLength()
+ );
+
+ try {
+ $transport->open();
+ } catch (TTransportException $e) {
+ $this->config->getLogger()->warning($e->getMessage());
+ }
+ $protocol = new TBinaryProtocol($transport);
+ $client = new AgentClient($protocol);
+ $this->config->getLogger()->debug('Initializing UDP Jaeger Tracer with Jaeger.Thrift over Binary protocol');
+ $sender = new JaegerSender($client, $this->config->getLogger());
+ $sender->setMaxBufferLength($this->config->getMaxBufferLength());
+ return new JaegerReporter($sender);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ReporterFactoryInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ReporterFactoryInterface.php
new file mode 100644
index 000000000..4bfd3204f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ReporterFactoryInterface.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Jaeger\ReporterFactory;
+
+use Jaeger\Reporter\ReporterInterface;
+
+interface ReporterFactoryInterface
+{
+ public function createReporter() : ReporterInterface;
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php
new file mode 100644
index 000000000..736977b4d
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Jaeger\ReporterFactory;
+
+use Jaeger\Reporter\JaegerReporter;
+use Jaeger\Reporter\RemoteReporter;
+use Jaeger\Reporter\ReporterInterface;
+use Jaeger\Sender\JaegerSender;
+use Jaeger\Sender\UdpSender;
+use Jaeger\Thrift\Agent\AgentClient;
+use Jaeger\ThriftUdpTransport;
+use Thrift\Exception\TTransportException;
+use Thrift\Protocol\TBinaryProtocol;
+use Thrift\Protocol\TCompactProtocol;
+use Thrift\Transport\TBufferedTransport;
+use Thrift\Transport\TTransport;
+
+class ZipkinReporterFactory extends AbstractReporterFactory implements ReporterFactoryInterface
+{
+ public function createReporter() : ReporterInterface
+ {
+ $udp = new ThriftUdpTransport(
+ $this->config->getLocalAgentReportingHost(),
+ $this->config->getLocalAgentReportingPort(),
+ $this->config->getLogger(),
+ $this->config
+ );
+
+ $transport = new TBufferedTransport(
+ $udp,
+ $this->config->getMaxBufferLength(),
+ $this->config->getMaxBufferLength()
+ );
+
+ try {
+ $transport->open();
+ } catch (TTransportException $e) {
+ $this->config->getLogger()->warning($e->getMessage());
+ }
+ $protocol = new TCompactProtocol($transport);
+ $client = new AgentClient($protocol);
+ $this->config->getLogger()->debug('Initializing UDP Jaeger Tracer with Zipkin.Thrift over Compact protocol');
+ $sender = new UdpSender($client, $this->config->getMaxBufferLength(), $this->config->getLogger());
+ return new RemoteReporter($sender);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ConstSampler.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ConstSampler.php
new file mode 100644
index 000000000..7c6ba3d62
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ConstSampler.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace Jaeger\Sampler;
+
+use const Jaeger\SAMPLER_PARAM_TAG_KEY;
+use const Jaeger\SAMPLER_TYPE_CONST;
+use const Jaeger\SAMPLER_TYPE_TAG_KEY;
+
+/**
+ * ConstSampler always returns the same decision.
+ *
+ * @package Jaeger\Sampler
+ */
+class ConstSampler implements SamplerInterface
+{
+ /**
+ * Whether or not the new trace should be sampled.
+ *
+ * @var bool
+ */
+ private $decision;
+
+ /**
+ * A list of the sampler tags.
+ *
+ * @var array
+ */
+ private $tags = [];
+
+ /**
+ * ConstSampler constructor.
+ *
+ * @param bool $decision
+ */
+ public function __construct(bool $decision = true)
+ {
+ $this->tags = [
+ SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_CONST,
+ SAMPLER_PARAM_TAG_KEY => $decision,
+ ];
+
+ $this->decision = $decision;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param string $traceId The traceId on the span.
+ * @param string $operation The operation name set on the span.
+ * @return array
+ */
+ public function isSampled(string $traceId, string $operation = ''): array
+ {
+ return [$this->decision, $this->tags];
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * Only implemented to satisfy the sampler interface.
+ *
+ * @return void
+ */
+ public function close()
+ {
+ // nothing to do
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ProbabilisticSampler.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ProbabilisticSampler.php
new file mode 100644
index 000000000..cb265d01e
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ProbabilisticSampler.php
@@ -0,0 +1,88 @@
+<?php
+
+namespace Jaeger\Sampler;
+
+use OutOfBoundsException;
+use const Jaeger\SAMPLER_PARAM_TAG_KEY;
+use const Jaeger\SAMPLER_TYPE_PROBABILISTIC;
+use const Jaeger\SAMPLER_TYPE_TAG_KEY;
+
+/**
+ * A sampler that randomly samples a certain percentage of traces specified
+ * by the samplingRate, in the range between 0.0 and 1.0.
+ *
+ * @package Jaeger\Sampler
+ */
+class ProbabilisticSampler implements SamplerInterface
+{
+ /**
+ * The sampling rate rate between 0.0 and 1.0.
+ *
+ * @var float
+ */
+ private $rate;
+
+ /**
+ * A list of the sampler tags.
+ *
+ * @var array
+ */
+ private $tags = [];
+
+ /**
+ * The boundary of the sample sampling rate.
+ *
+ * @var float
+ */
+ private $boundary;
+
+ /**
+ * ProbabilisticSampler constructor.
+ *
+ * @param float $rate
+ * @throws OutOfBoundsException
+ */
+ public function __construct(float $rate)
+ {
+ $this->tags = [
+ SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_PROBABILISTIC,
+ SAMPLER_PARAM_TAG_KEY => $rate,
+ ];
+
+ if ($rate < 0.0 || $rate > 1.0) {
+ throw new OutOfBoundsException('Sampling rate must be between 0.0 and 1.0.');
+ }
+
+ $this->rate = $rate;
+ if ($rate < 0.5) {
+ $this->boundary = (int)($rate * PHP_INT_MAX);
+ } else {
+ // more precise calculation due to int and float having different precision near PHP_INT_MAX
+ $this->boundary = PHP_INT_MAX - (int)((1 - $rate) * PHP_INT_MAX);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param string $traceId The traceId on the span.
+ * @param string $operation The operation name set on the span.
+ * @return array
+ */
+ public function isSampled(string $traceId, string $operation = ''): array
+ {
+ return [($traceId < $this->boundary), $this->tags];
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * Only implemented to satisfy the sampler interface.
+ *
+ * @return void
+ */
+ public function close()
+ {
+ // nothing to do
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/RateLimitingSampler.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/RateLimitingSampler.php
new file mode 100644
index 000000000..d0ea0f180
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/RateLimitingSampler.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace Jaeger\Sampler;
+
+use Jaeger\Util\RateLimiter;
+
+use const Jaeger\SAMPLER_PARAM_TAG_KEY;
+use const Jaeger\SAMPLER_TYPE_RATE_LIMITING;
+use const Jaeger\SAMPLER_TYPE_TAG_KEY;
+
+class RateLimitingSampler implements SamplerInterface
+{
+ /**
+ * @var RateLimiter
+ */
+ private $rateLimiter;
+
+ /**
+ * A list of the sampler tags.
+ *
+ * @var array
+ */
+ private $tags = [];
+
+ public function __construct($maxTracesPerSecond, RateLimiter $rateLimiter)
+ {
+ $this->tags = [
+ SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_RATE_LIMITING,
+ SAMPLER_PARAM_TAG_KEY => $maxTracesPerSecond,
+ ];
+
+ $maxTracesPerNanosecond = $maxTracesPerSecond / 1000000000.0;
+ $this->rateLimiter = $rateLimiter;
+ $this->rateLimiter->initialize($maxTracesPerNanosecond, $maxTracesPerSecond > 1.0 ? 1.0 : $maxTracesPerSecond);
+ }
+
+ /**
+ * Whether or not the new trace should be sampled.
+ *
+ * Implementations should return an array in the format [$decision, $tags].
+ *
+ * @param string $traceId The traceId on the span.
+ * @param string $operation The operation name set on the span.
+ * @return array
+ */
+ public function isSampled(string $traceId = '', string $operation = '')
+ {
+ return [$this->rateLimiter->checkCredit(1.0), $this->tags];
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * Only implemented to satisfy the sampler interface.
+ *
+ * @return void
+ */
+ public function close()
+ {
+ // nothing to do
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/SamplerInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/SamplerInterface.php
new file mode 100644
index 000000000..b6d44e783
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/SamplerInterface.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Jaeger\Sampler;
+
+/**
+ * Sampler is responsible for deciding if a new trace should be sampled and captured for storage.
+ *
+ * @package Jaeger\Sampler
+ */
+interface SamplerInterface
+{
+ /**
+ * Whether or not the new trace should be sampled.
+ *
+ * Implementations should return an array in the format [$decision, $tags].
+ *
+ * @param string $traceId The traceId on the span.
+ * @param string $operation The operation name set on the span.
+ * @return array
+ */
+ public function isSampled(string $traceId, string $operation);
+
+ /**
+ * Release any resources used by the sampler.
+ *
+ * @return void
+ */
+ public function close();
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Scope.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Scope.php
new file mode 100644
index 000000000..86511bae0
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Scope.php
@@ -0,0 +1,71 @@
+<?php
+
+namespace Jaeger;
+
+use OpenTracing\Scope as OTScope;
+use OpenTracing\Span as OTSpan;
+
+/**
+ * {@inheritdoc}
+ */
+class Scope implements OTScope
+{
+ /**
+ * @var ScopeManager
+ */
+ private $scopeManager;
+
+ /**
+ * @var OTSpan
+ */
+ private $wrapped;
+
+ /**
+ * @var OTScope|null
+ */
+ private $toRestore;
+
+ /**
+ * @var bool
+ */
+ private $finishSpanOnClose;
+
+ /**
+ * Scope constructor.
+ * @param ScopeManager $scopeManager
+ * @param OTSpan $wrapped
+ * @param bool $finishSpanOnClose
+ */
+ public function __construct(ScopeManager $scopeManager, OTSpan $wrapped, bool $finishSpanOnClose)
+ {
+ $this->scopeManager = $scopeManager;
+ $this->wrapped = $wrapped;
+ $this->finishSpanOnClose = $finishSpanOnClose;
+ $this->toRestore = $scopeManager->getActive();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close(): void
+ {
+ if ($this->scopeManager->getActive() !== $this) {
+ // This shouldn't happen if users call methods in expected order
+ return;
+ }
+
+ if ($this->finishSpanOnClose) {
+ $this->wrapped->finish();
+ }
+
+ $this->scopeManager->setActive($this->toRestore);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getSpan(): OTSpan
+ {
+ return $this->wrapped;
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ScopeManager.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ScopeManager.php
new file mode 100644
index 000000000..eb5c27676
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ScopeManager.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Jaeger;
+
+use OpenTracing\ScopeManager as OTScopeManager;
+use OpenTracing\Span as OTSpan;
+use OpenTracing\Scope as OTScope;
+
+/**
+ * {@inheritdoc}
+ */
+class ScopeManager implements OTScopeManager
+{
+ /**
+ * @var OTScope
+ */
+ private $active;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function activate(OTSpan $span, bool $finishSpanOnClose = self::DEFAULT_FINISH_SPAN_ON_CLOSE): OTScope
+ {
+ $this->active = new Scope($this, $span, $finishSpanOnClose);
+
+ return $this->active;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getActive(): ?OTScope
+ {
+ return $this->active;
+ }
+
+ /**
+ * Sets the scope as active.
+ * @param OTScope|null $scope
+ */
+ public function setActive(OTScope $scope = null)
+ {
+ $this->active = $scope;
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/JaegerSender.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/JaegerSender.php
new file mode 100644
index 000000000..dfce510b8
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/JaegerSender.php
@@ -0,0 +1,236 @@
+<?php
+
+
+namespace Jaeger\Sender;
+
+use Jaeger\Mapper\SpanToJaegerMapper;
+use Jaeger\Span as JaegerSpan;
+use Jaeger\Thrift\Agent\AgentClient;
+use Jaeger\Thrift\Agent\AgentIf;
+use Jaeger\Thrift\Batch;
+use Jaeger\Thrift\Process;
+use Jaeger\Thrift\Span as JaegerThriftSpan;
+use Jaeger\Thrift\Tag;
+use Jaeger\Thrift\TagType;
+use Jaeger\Tracer;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+use Thrift\Protocol\TBinaryProtocol;
+use Thrift\Protocol\TCompactProtocol;
+use Thrift\Transport\TMemoryBuffer;
+use const Jaeger\JAEGER_HOSTNAME_TAG_KEY;
+
+class JaegerSender implements SenderInterface
+{
+ /**
+ * @var JaegerSpan[]
+ */
+ private $spans = [];
+
+ /**
+ * @var AgentIf
+ */
+ private $agentClient;
+
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * @var Tracer
+ */
+ private $tracer;
+
+ /**
+ * @var SpanToJaegerMapper
+ */
+ private $mapper;
+
+ /**
+ * @var int
+ */
+ private $jaegerBatchOverheadLength = 512;
+
+ /**
+ * The maximum length of the thrift-objects for a jaeger-batch.
+ *
+ * @var int
+ */
+ private $maxBufferLength = 64000;
+
+ /**
+ * @param AgentIf $agentClient
+ * @param LoggerInterface|null $logger
+ * @param SpanToJaegerMapper|null $mapper
+ */
+ public function __construct(
+ AgentIf $agentClient,
+ LoggerInterface $logger = null,
+ SpanToJaegerMapper $mapper = null
+ ) {
+ $this->agentClient = $agentClient;
+ $this->logger = $logger ?? new NullLogger();
+ $this->mapper = $mapper ?? new SpanToJaegerMapper();
+ }
+
+
+ public function flush(): int
+ {
+ $count = count($this->spans);
+ if ($count === 0) {
+ return 0;
+ }
+
+ $jaegerThriftSpans = $this->makeJaegerBatch($this->spans);
+
+ try {
+ $this->send($jaegerThriftSpans);
+ } catch (\Exception $e) {
+ $this->logger->warning($e->getMessage());
+ }
+
+ $this->spans = [];
+
+ return $count;
+ }
+
+ public function setMaxBufferLength($maxBufferLength)
+ {
+ $this->maxBufferLength = $maxBufferLength;
+ }
+
+ /**
+ * @param JaegerSpan[] $spans
+ * @return array
+ */
+ private function makeJaegerBatch(array $spans) : array
+ {
+ /** @var JaegerThriftSpan[] $jaegerSpans */
+ $jaegerSpans = [];
+
+ foreach ($spans as $span) {
+ if (empty($this->tracer)) {
+ $this->tracer = $span->getTracer();
+ }
+
+ $jaegerSpans[] = $this->mapper->mapSpanToJaeger($span);
+ }
+
+ return $jaegerSpans;
+ }
+
+ /**
+ * @param JaegerThriftSpan[] $spans
+ */
+ private function send(array $spans)
+ {
+ if (empty($this->tracer)) {
+ return ;
+ }
+
+ $chunks = $this->chunkSplit($spans);
+ foreach ($chunks as $chunk) {
+ /** @var JaegerThriftSpan[] $chunk */
+ $this->emitJaegerBatch($chunk);
+ }
+ }
+
+ /**
+ * @param JaegerThriftSpan $span
+ */
+ private function getBufferLength($span)
+ {
+ $memoryBuffer = new TMemoryBuffer();
+ $span->write(new TBinaryProtocol($memoryBuffer));
+ return $memoryBuffer->available();
+ }
+
+ private function chunkSplit(array $spans): array
+ {
+ $actualBufferSize = $this->jaegerBatchOverheadLength;
+ $chunkId = 0;
+ $chunks = [];
+
+ foreach ($spans as $span) {
+ $spanBufferLength = $this->getBufferLength($span);
+ if (!empty($chunks[$chunkId]) && ($actualBufferSize + $spanBufferLength) > $this->maxBufferLength) {
+ // point to next chunk
+ ++$chunkId;
+
+ // reset buffer size
+ $actualBufferSize = $this->jaegerBatchOverheadLength;
+ }
+
+ if (!isset($chunks[$chunkId])) {
+ $chunks[$chunkId] = [];
+ }
+
+ $chunks[$chunkId][] = $span;
+ $actualBufferSize += $spanBufferLength;
+ }
+
+ return $chunks;
+ }
+
+ protected function emitJaegerBatch(array $spans)
+ {
+ /** @var Tag[] $tags */
+ $tags = [];
+
+ foreach ($this->tracer->getTags() as $k => $v) {
+ if (!in_array($k, $this->mapper->getSpecialSpanTags())) {
+ if (strpos($k, $this->mapper->getProcessTagsPrefix()) !== 0) {
+ continue ;
+ }
+
+ $quoted = preg_quote($this->mapper->getProcessTagsPrefix());
+ $k = preg_replace(sprintf('/^%s/', $quoted), '', $k);
+ }
+
+ if ($k === JAEGER_HOSTNAME_TAG_KEY) {
+ $k = "hostname";
+ }
+
+ $tags[] = new Tag([
+ "key" => $k,
+ "vType" => TagType::STRING,
+ "vStr" => $v
+ ]);
+ }
+
+ $tags[] = new Tag([
+ "key" => "format",
+ "vType" => TagType::STRING,
+ "vStr" => "jaeger.thrift"
+ ]);
+
+ $tags[] = new Tag([
+ "key" => "ip",
+ "vType" => TagType::STRING,
+ "vStr" => $this->tracer->getIpAddress()
+ ]);
+
+ $batch = new Batch([
+ "spans" => $spans,
+ "process" => new Process([
+ "serviceName" => $this->tracer->getServiceName(),
+ "tags" => $tags
+ ])
+ ]);
+
+ $this->agentClient->emitBatch($batch);
+ }
+
+ /**
+ * @param JaegerSpan $span
+ */
+ public function append(JaegerSpan $span)
+ {
+ $this->spans[] = $span;
+ }
+
+ public function close()
+ {
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/SenderInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/SenderInterface.php
new file mode 100644
index 000000000..24dc4fbfa
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/SenderInterface.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Jaeger\Sender;
+
+use Jaeger\Span as JaegerSpan;
+
+interface SenderInterface
+{
+ public function flush(): int;
+ public function append(JaegerSpan $span);
+ public function close();
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/UdpSender.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/UdpSender.php
new file mode 100644
index 000000000..ff0e4cf3e
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/UdpSender.php
@@ -0,0 +1,305 @@
+<?php
+
+namespace Jaeger\Sender;
+
+use Exception;
+use Jaeger\Thrift\Agent\AgentClient;
+use Jaeger\Thrift\Agent\Zipkin\Annotation;
+use Jaeger\Thrift\Agent\Zipkin\AnnotationType;
+use Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation;
+use Jaeger\Thrift\Agent\Zipkin\Endpoint;
+use Jaeger\Thrift\Agent\Zipkin\Span as ThriftSpan;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+use Thrift\Base\TBase;
+use Thrift\Protocol\TCompactProtocol;
+use Thrift\Transport\TMemoryBuffer;
+use Jaeger\Span as JaegerSpan;
+
+use const OpenTracing\Tags\COMPONENT;
+
+class UdpSender
+{
+ const CLIENT_ADDR = "ca";
+ const SERVER_ADDR = "sa";
+
+ /**
+ * @var JaegerSpan[]
+ */
+ private $spans = [];
+
+ /**
+ * @var AgentClient
+ */
+ private $client;
+
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * The maximum length of the thrift-objects for a zipkin-batch.
+ *
+ * @var int
+ */
+ private $maxBufferLength;
+
+ /**
+ * The length of the zipkin-batch overhead.
+ *
+ * @var int
+ */
+ private $zipkinBatchOverheadLength = 30;
+
+ /**
+ * UdpSender constructor.
+ *
+ * @param AgentClient $client
+ * @param int $maxBufferLength
+ * @param LoggerInterface|null $logger
+ */
+ public function __construct(
+ AgentClient $client,
+ int $maxBufferLength,
+ LoggerInterface $logger = null
+ ) {
+ $this->client = $client;
+ $this->maxBufferLength = $maxBufferLength;
+ $this->logger = $logger ?? new NullLogger();
+ }
+
+ /**
+ * @param JaegerSpan $span
+ */
+ public function append(JaegerSpan $span)
+ {
+ $this->spans[] = $span;
+ }
+
+ /**
+ * @return int the number of flushed spans
+ */
+ public function flush(): int
+ {
+ $count = count($this->spans);
+ if ($count === 0) {
+ return 0;
+ }
+
+ $zipkinSpans = $this->makeZipkinBatch($this->spans);
+
+ try {
+ $this->send($zipkinSpans);
+ } catch (Exception $e) {
+ $this->logger->warning($e->getMessage());
+ }
+
+ $this->spans = [];
+
+ return $count;
+ }
+
+ public function close()
+ {
+ }
+
+ /**
+ * Emits the thrift-objects.
+ *
+ * @param array|ThriftSpan[]|TBase[] $thrifts
+ */
+ private function send(array $thrifts)
+ {
+ foreach ($this->chunkSplit($thrifts) as $chunk) {
+ /* @var $chunk ThriftSpan[] */
+ $this->client->emitZipkinBatch($chunk);
+ }
+ }
+
+ /**
+ * @param JaegerSpan[] $spans
+ * @return ThriftSpan[]
+ */
+ private function makeZipkinBatch(array $spans): array
+ {
+ /** @var ThriftSpan[] */
+ $zipkinSpans = [];
+
+ foreach ($spans as $span) {
+ /** @var JaegerSpan $span */
+
+ $endpoint = $this->makeEndpoint(
+ $span->getTracer()->getIpAddress(),
+ 0, // span.port,
+ $span->getTracer()->getServiceName()
+ );
+
+ $timestamp = $span->getStartTime();
+ $duration = $span->getEndTime() - $span->getStartTime();
+
+ $this->addZipkinAnnotations($span, $endpoint);
+
+ $zipkinSpan = new ThriftSpan([
+ 'name' => $span->getOperationName(),
+ 'id' => $span->getContext()->getSpanId(),
+ 'parent_id' => $span->getContext()->getParentId() ?? null,
+ 'trace_id' => $span->getContext()->getTraceId(),
+ 'annotations' => $this->createAnnotations($span, $endpoint),
+ 'binary_annotations' => $span->getTags(),
+ 'debug' => $span->isDebug(),
+ 'timestamp' => $timestamp,
+ 'duration' => $duration,
+ ]);
+
+ $zipkinSpans[] = $zipkinSpan;
+ }
+
+ return $zipkinSpans;
+ }
+
+ private function addZipkinAnnotations(JaegerSpan $span, Endpoint $endpoint)
+ {
+ if ($span->isRpc() && $span->peer) {
+ $isClient = $span->isRpcClient();
+
+ $host = $this->makeEndpoint(
+ $span->peer['ipv4'] ?? 0,
+ $span->peer['port'] ?? 0,
+ $span->peer['service_name'] ?? ''
+ );
+
+ $key = ($isClient) ? self::SERVER_ADDR : self::CLIENT_ADDR;
+
+ $peer = $this->makePeerAddressTag($key, $host);
+ $span->tags[$key] = $peer;
+ } else {
+ $tag = $this->makeLocalComponentTag(
+ $span->getComponent() ?? $span->getTracer()->getServiceName(),
+ $endpoint
+ );
+
+ $span->tags[COMPONENT] = $tag;
+ }
+ }
+
+ private function makeLocalComponentTag(string $componentName, Endpoint $endpoint): BinaryAnnotation
+ {
+ return new BinaryAnnotation([
+ 'key' => "lc",
+ 'value' => $componentName,
+ 'annotation_type' => AnnotationType::STRING,
+ 'host' => $endpoint,
+ ]);
+ }
+
+ private function makeEndpoint(string $ipv4, int $port, string $serviceName): Endpoint
+ {
+ $ipv4 = $this->ipv4ToInt($ipv4);
+
+ return new Endpoint([
+ 'ipv4' => $ipv4,
+ 'port' => $port,
+ 'service_name' => $serviceName,
+ ]);
+ }
+
+ private function ipv4ToInt(string $ipv4): int
+ {
+ if ($ipv4 == 'localhost') {
+ $ipv4 = '127.0.0.1';
+ } elseif ($ipv4 == '::1') {
+ $ipv4 = '127.0.0.1';
+ }
+
+ $long = ip2long($ipv4);
+ if (PHP_INT_SIZE === 8) {
+ return $long >> 31 ? $long - (1 << 32) : $long;
+ }
+ return $long;
+ }
+
+ // Used for Zipkin binary annotations like CA/SA (client/server address).
+ // They are modeled as Boolean type with '0x01' as the value.
+ private function makePeerAddressTag(string $key, Endpoint $host): BinaryAnnotation
+ {
+ return new BinaryAnnotation([
+ "key" => $key,
+ "value" => '0x01',
+ "annotation_type" => AnnotationType::BOOL,
+ "host" => $host,
+ ]);
+ }
+
+ /**
+ * Splits an array of thrift-objects into several chunks when the buffer limit has been reached.
+ *
+ * @param array|ThriftSpan[]|TBase[] $thrifts
+ *
+ * @return array
+ */
+ private function chunkSplit(array $thrifts): array
+ {
+ $actualBufferSize = $this->zipkinBatchOverheadLength;
+ $chunkId = 0;
+ $chunks = [];
+
+ foreach ($thrifts as $thrift) {
+ $spanBufferLength = $this->getBufferLength($thrift);
+
+ if (!empty($chunks[$chunkId]) && ($actualBufferSize + $spanBufferLength) > $this->maxBufferLength) {
+ // point to next chunk
+ ++$chunkId;
+
+ // reset buffer size
+ $actualBufferSize = $this->zipkinBatchOverheadLength;
+ }
+
+ if (!isset($chunks[$chunkId])) {
+ $chunks[$chunkId] = [];
+ }
+
+ $chunks[$chunkId][] = $thrift;
+ $actualBufferSize += $spanBufferLength;
+ }
+
+ return $chunks;
+ }
+
+ /**
+ * Returns the length of a thrift-object.
+ *
+ * @param ThriftSpan|TBase $thrift
+ *
+ * @return int
+ */
+ private function getBufferLength($thrift): int
+ {
+ $memoryBuffer = new TMemoryBuffer();
+
+ $thrift->write(new TCompactProtocol($memoryBuffer));
+
+ return $memoryBuffer->available();
+ }
+
+ /*
+ * @param JaegerSpan $span
+ * @param Endpoint $endpoint
+ *
+ * @return array|Annotation[]
+ */
+ private function createAnnotations(JaegerSpan $span, Endpoint $endpoint): array
+ {
+ $annotations = [];
+
+ foreach ($span->getLogs() as $values) {
+ $annotations[] = new Annotation([
+ 'timestamp' => $values['timestamp'],
+ 'value' => json_encode($values['fields']),
+ 'host' => $endpoint,
+ ]);
+ }
+
+ return $annotations;
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Span.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Span.php
new file mode 100644
index 000000000..abcb07c89
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Span.php
@@ -0,0 +1,476 @@
+<?php
+
+namespace Jaeger;
+
+use Jaeger\Thrift\Agent\Zipkin\AnnotationType;
+use Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation;
+use OpenTracing\Span as OTSpan;
+use DateTime;
+use DateTimeInterface;
+use OpenTracing\SpanContext as OTSpanContext;
+use const OpenTracing\Tags\COMPONENT;
+use const OpenTracing\Tags\PEER_HOST_IPV4;
+use const OpenTracing\Tags\PEER_PORT;
+use const OpenTracing\Tags\PEER_SERVICE;
+use const OpenTracing\Tags\SPAN_KIND;
+use const OpenTracing\Tags\SPAN_KIND_MESSAGE_BUS_CONSUMER;
+use const OpenTracing\Tags\SPAN_KIND_MESSAGE_BUS_PRODUCER;
+use const OpenTracing\Tags\SPAN_KIND_RPC_CLIENT;
+use const OpenTracing\Tags\SPAN_KIND_RPC_SERVER;
+
+class Span implements OTSpan
+{
+ /**
+ * @var Tracer
+ */
+ private $tracer;
+
+ /**
+ * @var SpanContext
+ */
+ private $context;
+
+ /**
+ * @var string
+ */
+ private $operationName;
+
+ /**
+ * @var int|float|DateTime|null
+ */
+ private $startTime;
+
+ /**
+ * @var int|float|DateTime|null
+ */
+ private $endTime;
+
+ /**
+ * SPAN_RPC_CLIENT
+ * @var null|string
+ */
+ private $kind;
+
+ /**
+ * @var array|null
+ */
+ public $peer;
+
+ /**
+ * @var string|null
+ */
+ private $component;
+
+ /**
+ * @var array
+ */
+ private $logs = [];
+
+ /**
+ * @var BinaryAnnotation[]
+ */
+ public $tags = [];
+
+ /**
+ * @var bool
+ */
+ private $debug = false;
+
+ /**
+ * Span constructor.
+ * @param SpanContext $context
+ * @param Tracer $tracer
+ * @param string $operationName
+ * @param array $tags
+ * @param int|float|DateTime|null $startTime
+ */
+ public function __construct(
+ SpanContext $context,
+ Tracer $tracer,
+ string $operationName,
+ array $tags = [],
+ $startTime = null
+ ) {
+ $this->context = $context;
+ $this->tracer = $tracer;
+
+ $this->operationName = $operationName;
+ $this->startTime = $this->microTime($startTime);
+ $this->endTime = null;
+ $this->kind = null;
+ $this->peer = null;
+ $this->component = null;
+
+ foreach ($tags as $key => $value) {
+ $this->setTag($key, $value);
+ }
+ }
+
+ /**
+ * Converts time to microtime int
+ * - int represents microseconds
+ * - float represents seconds
+ *
+ * @param int|float|DateTime|null $time
+ * @return int
+ */
+ protected function microTime($time): int
+ {
+ if ($time === null) {
+ return $this->timestampMicro();
+ }
+
+ if ($time instanceof \DateTimeInterface) {
+ return (int)round($time->format('U.u') * 1000000, 0);
+ }
+
+ if (is_int($time)) {
+ return $time;
+ }
+
+ if (is_float($time)) {
+ return (int)round($time * 1000000, 0);
+ }
+
+ throw new \InvalidArgumentException(sprintf(
+ 'Time should be one of the types int|float|DateTime|null, got %s.',
+ gettype($time)
+ ));
+ }
+
+ /**
+ * @return Tracer
+ */
+ public function getTracer(): Tracer
+ {
+ return $this->tracer;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isDebug(): bool
+ {
+ return $this->debug;
+ }
+
+ /**
+ * @return int
+ */
+ public function getStartTime(): int
+ {
+ return $this->startTime;
+ }
+
+ /**
+ * @return int|null
+ */
+ public function getEndTime()
+ {
+ return $this->endTime;
+ }
+
+ /**
+ * @return string
+ */
+ public function getOperationName(): string
+ {
+ return $this->operationName;
+ }
+
+ /**
+ * @return mixed
+ */
+ public function getComponent()
+ {
+ // TODO
+ return $this->component;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return SpanContext
+ */
+ public function getContext(): OTSpanContext
+ {
+ return $this->context;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function finish($finishTime = null, array $logRecords = []): void
+ {
+ if (!$this->isSampled()) {
+ return;
+ }
+
+ foreach ($logRecords as $logRecord) {
+ $this->log($logRecord);
+ }
+
+ $this->endTime = $this->microTime($finishTime);
+ $this->tracer->reportSpan($this);
+ }
+
+ /**
+ * Returns true if the trace should be measured.
+ *
+ * @return bool
+ */
+ public function isSampled(): bool
+ {
+ $context = $this->getContext();
+
+ return ($context->getFlags() & SAMPLED_FLAG) == SAMPLED_FLAG;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function overwriteOperationName(string $newOperationName): void
+ {
+ // TODO log warning
+ $this->operationName = $newOperationName;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $tags
+ * @return void
+ */
+ public function setTags($tags)
+ {
+ foreach ($tags as $key => $value) {
+ $this->setTag($key, $value);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setTag(string $key, $value): void
+ {
+ if ($this->isSampled()) {
+ $special = self::SPECIAL_TAGS[$key] ?? null;
+ $handled = false;
+
+ if ($special !== null && is_callable([$this, $special])) {
+ $handled = $this->$special($value);
+ }
+
+ if (!$handled) {
+ $tag = $this->makeTag($key, $value);
+ $this->tags[$key] = $tag;
+ }
+ }
+ }
+
+ const SPECIAL_TAGS = [
+ PEER_SERVICE => 'setPeerService',
+ PEER_HOST_IPV4 => 'setPeerHostIpv4',
+ PEER_PORT => 'setPeerPort',
+ SPAN_KIND => 'setSpanKind',
+ COMPONENT => 'setComponent',
+ ];
+
+ /**
+ * Sets a low-cardinality identifier of the module, library,
+ * or package that is generating a span.
+ *
+ * @see Span::setTag()
+ *
+ * @param string $value
+ * @return bool
+ */
+ private function setComponent($value): bool
+ {
+ $this->component = $value;
+ return true;
+ }
+
+ /**
+ * @return bool
+ */
+ private function setSpanKind($value): bool
+ {
+ $validSpanKinds = [
+ SPAN_KIND_RPC_CLIENT,
+ SPAN_KIND_RPC_SERVER,
+ SPAN_KIND_MESSAGE_BUS_CONSUMER,
+ SPAN_KIND_MESSAGE_BUS_PRODUCER,
+ ];
+
+ if ($value === null || in_array($value, $validSpanKinds, true)) {
+ $this->kind = $value;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * @return string|null
+ */
+ public function getKind(): ?string
+ {
+ return $this->kind;
+ }
+
+ /**
+ * @return bool
+ */
+ private function setPeerPort($value): bool
+ {
+ if ($this->peer === null) {
+ $this->peer = ['port' => $value];
+ } else {
+ $this->peer['port'] = $value;
+ }
+ return true;
+ }
+
+ /**
+ * @return bool
+ */
+ private function setPeerHostIpv4($value): bool
+ {
+ if ($this->peer === null) {
+ $this->peer = ['ipv4' => $value];
+ } else {
+ $this->peer['ipv4'] = $value;
+ }
+ return true;
+ }
+
+ /**
+ * @return bool
+ */
+ private function setPeerService($value): bool
+ {
+ if ($this->peer === null) {
+ $this->peer = ['service_name' => $value];
+ } else {
+ $this->peer['service_name'] = $value;
+ }
+ return true;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isRpc(): bool
+ {
+ return $this->kind == SPAN_KIND_RPC_CLIENT || $this->kind == SPAN_KIND_RPC_SERVER;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isRpcClient(): bool
+ {
+ return $this->kind == SPAN_KIND_RPC_CLIENT;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function log(array $fields = [], $timestamp = null): void
+ {
+ $timestamp = $this->microTime($timestamp);
+ if ($timestamp < $this->getStartTime()) {
+ $timestamp = $this->timestampMicro();
+ }
+
+ $this->logs[] = [
+ 'fields' => $fields,
+ 'timestamp' => $timestamp,
+ ];
+ }
+
+ /**
+ * Returns the logs.
+ *
+ * [
+ * [
+ * 'timestamp' => timestamp in microsecond,
+ * 'fields' => [
+ * 'error' => 'message',
+ * ]
+ * ]
+ * ]
+ *
+ * @return array
+ */
+ public function getLogs(): array
+ {
+ return $this->logs;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function addBaggageItem(string $key, string $value): void
+ {
+ $this->context = $this->context->withBaggageItem($key, $value);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getBaggageItem(string $key): ?string
+ {
+ return $this->context->getBaggageItem($key);
+ }
+
+ /**
+ * @return array
+ */
+ public function getTags(): array
+ {
+ return $this->tags;
+ }
+
+ /**
+ * @return int
+ */
+ private function timestampMicro(): int
+ {
+ return round(microtime(true) * 1000000);
+ }
+
+ /**
+ * @param string $key
+ * @param mixed $value
+ * @return BinaryAnnotation
+ */
+ private function makeTag(string $key, $value): BinaryAnnotation
+ {
+ $valueType = gettype($value);
+ $annotationType = null;
+ switch ($valueType) {
+ case "boolean":
+ $annotationType = AnnotationType::BOOL;
+ break;
+ case "integer":
+ $annotationType = AnnotationType::I64;
+ break;
+ case "double":
+ $annotationType = AnnotationType::DOUBLE;
+ break;
+ default:
+ $annotationType = AnnotationType::STRING;
+ $value = (string)$value;
+ if (strlen($value) > 1024) {
+ $value = substr($value, 0, 1024);
+ }
+ }
+
+ return new BinaryAnnotation([
+ 'key' => $key,
+ 'value' => $value,
+ 'annotation_type' => $annotationType,
+ ]);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/SpanContext.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/SpanContext.php
new file mode 100644
index 000000000..447ffd1a5
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/SpanContext.php
@@ -0,0 +1,120 @@
+<?php
+
+namespace Jaeger;
+
+use ArrayIterator;
+use OpenTracing\SpanContext as OTSpanContext;
+
+class SpanContext implements OTSpanContext
+{
+ private $traceId;
+
+ private $spanId;
+
+ private $parentId;
+
+ private $flags;
+
+ /**
+ * @var array
+ */
+ private $baggage;
+
+ private $debugId;
+
+ /**
+ * SpanContext constructor.
+ *
+ * @param string $traceId
+ * @param string $spanId
+ * @param string $parentId
+ * @param int|null $flags
+ * @param array $baggage
+ * @param int|null $debugId
+ */
+ public function __construct($traceId, $spanId, $parentId, $flags = null, $baggage = [], $debugId = null)
+ {
+ $this->traceId = $traceId;
+ $this->spanId = $spanId;
+ $this->parentId = $parentId;
+ $this->flags = $flags;
+ $this->baggage = is_array($baggage) ? $baggage : [];
+ $this->debugId = $debugId;
+ }
+
+ /**
+ * {@inheritdoc}
+ * @return ArrayIterator
+ */
+ #[\ReturnTypeWillChange]
+ public function getIterator()
+ {
+ return new ArrayIterator($this->baggage);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getBaggageItem(string $key): ?string
+ {
+ return array_key_exists($key, $this->baggage) ? $this->baggage[$key] : null;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param string $key
+ * @param string $value
+ * @return SpanContext
+ */
+ public function withBaggageItem(string $key, string $value): OTSpanContext
+ {
+ return new self(
+ $this->traceId,
+ $this->spanId,
+ $this->parentId,
+ $this->flags,
+ [$key => $value] + $this->baggage
+ );
+ }
+
+ public function getTraceId()
+ {
+ return $this->traceId;
+ }
+
+ public function getParentId()
+ {
+ return $this->parentId;
+ }
+
+ public function getSpanId()
+ {
+ return $this->spanId;
+ }
+
+ /**
+ * Get the span context flags.
+ *
+ * @return int|null
+ */
+ public function getFlags()
+ {
+ return $this->flags;
+ }
+
+ public function getBaggage()
+ {
+ return $this->baggage;
+ }
+
+ public function getDebugId()
+ {
+ return $this->debugId;
+ }
+
+ public function isDebugIdContainerOnly(): bool
+ {
+ return ($this->traceId === null) && ($this->debugId !== null);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentClient.php
new file mode 100644
index 000000000..640df4598
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentClient.php
@@ -0,0 +1,76 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class AgentClient implements \Jaeger\Thrift\Agent\AgentIf {
+ protected $input_ = null;
+ protected $output_ = null;
+
+ protected $seqid_ = 0;
+
+ public function __construct($input, $output=null) {
+ $this->input_ = $input;
+ $this->output_ = $output ? $output : $input;
+ }
+
+ public function emitZipkinBatch(array $spans)
+ {
+ $this->send_emitZipkinBatch($spans);
+ }
+
+ public function send_emitZipkinBatch(array $spans)
+ {
+ $args = new \Jaeger\Thrift\Agent\Agent_emitZipkinBatch_args();
+ $args->spans = $spans;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'emitZipkinBatch', TMessageType::ONEWAY, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('emitZipkinBatch', TMessageType::ONEWAY, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+ public function emitBatch(\Jaeger\Thrift\Batch $batch)
+ {
+ $this->send_emitBatch($batch);
+ }
+
+ public function send_emitBatch(\Jaeger\Thrift\Batch $batch)
+ {
+ $args = new \Jaeger\Thrift\Agent\Agent_emitBatch_args();
+ $args->batch = $batch;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'emitBatch', TMessageType::ONEWAY, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('emitBatch', TMessageType::ONEWAY, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentIf.php
new file mode 100644
index 000000000..30efc8cf3
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentIf.php
@@ -0,0 +1,30 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface AgentIf {
+ /**
+ * @param \Jaeger\Thrift\Agent\Zipkin\Span[] $spans
+ */
+ public function emitZipkinBatch(array $spans);
+ /**
+ * @param \Jaeger\Thrift\Batch $batch
+ */
+ public function emitBatch(\Jaeger\Thrift\Batch $batch);
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitBatch_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitBatch_args.php
new file mode 100644
index 000000000..9d11b409c
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitBatch_args.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Agent_emitBatch_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'batch',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Batch',
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Batch
+ */
+ public $batch = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Agent_emitBatch_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Agent_emitBatch_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Agent_emitBatch_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitZipkinBatch_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitZipkinBatch_args.php
new file mode 100644
index 000000000..cc58527bb
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitZipkinBatch_args.php
@@ -0,0 +1,60 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Agent_emitZipkinBatch_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'spans',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\Zipkin\Span',
+ ),
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Agent\Zipkin\Span[]
+ */
+ public $spans = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Agent_emitZipkinBatch_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Agent_emitZipkinBatch_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Agent_emitZipkinBatch_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorClient.php
new file mode 100644
index 000000000..73825978a
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorClient.php
@@ -0,0 +1,83 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class AggregationValidatorClient implements \Jaeger\Thrift\Agent\AggregationValidatorIf {
+ protected $input_ = null;
+ protected $output_ = null;
+
+ protected $seqid_ = 0;
+
+ public function __construct($input, $output=null) {
+ $this->input_ = $input;
+ $this->output_ = $output ? $output : $input;
+ }
+
+ public function validateTrace($traceId)
+ {
+ $this->send_validateTrace($traceId);
+ return $this->recv_validateTrace();
+ }
+
+ public function send_validateTrace($traceId)
+ {
+ $args = new \Jaeger\Thrift\Agent\AggregationValidator_validateTrace_args();
+ $args->traceId = $traceId;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'validateTrace', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('validateTrace', TMessageType::CALL, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+
+ public function recv_validateTrace()
+ {
+ $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+ if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\AggregationValidator_validateTrace_result', $this->input_->isStrictRead());
+ else
+ {
+ $rseqid = 0;
+ $fname = null;
+ $mtype = 0;
+
+ $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+ if ($mtype == TMessageType::EXCEPTION) {
+ $x = new TApplicationException();
+ $x->read($this->input_);
+ $this->input_->readMessageEnd();
+ throw $x;
+ }
+ $result = new \Jaeger\Thrift\Agent\AggregationValidator_validateTrace_result();
+ $result->read($this->input_);
+ $this->input_->readMessageEnd();
+ }
+ if ($result->success !== null) {
+ return $result->success;
+ }
+ throw new \Exception("validateTrace failed: unknown result");
+ }
+
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorIf.php
new file mode 100644
index 000000000..853cd2a4f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorIf.php
@@ -0,0 +1,27 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface AggregationValidatorIf {
+ /**
+ * @param string $traceId
+ * @return \Jaeger\Thrift\Agent\ValidateTraceResponse
+ */
+ public function validateTrace($traceId);
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_args.php
new file mode 100644
index 000000000..2f4d1171c
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_args.php
@@ -0,0 +1,55 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class AggregationValidator_validateTrace_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'traceId',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $traceId = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'AggregationValidator_validateTrace_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('AggregationValidator_validateTrace_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('AggregationValidator_validateTrace_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_result.php
new file mode 100644
index 000000000..6060c5ae3
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_result.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class AggregationValidator_validateTrace_result extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 0 => array(
+ 'var' => 'success',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\ValidateTraceResponse',
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Agent\ValidateTraceResponse
+ */
+ public $success = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'AggregationValidator_validateTrace_result';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('AggregationValidator_validateTrace_result', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('AggregationValidator_validateTrace_result', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestriction.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestriction.php
new file mode 100644
index 000000000..27593c4c1
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestriction.php
@@ -0,0 +1,65 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class BaggageRestriction extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'baggageKey',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'maxValueLength',
+ 'isRequired' => true,
+ 'type' => TType::I32,
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $baggageKey = null;
+ /**
+ * @var int
+ */
+ public $maxValueLength = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'BaggageRestriction';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('BaggageRestriction', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('BaggageRestriction', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerClient.php
new file mode 100644
index 000000000..379153534
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerClient.php
@@ -0,0 +1,83 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class BaggageRestrictionManagerClient implements \Jaeger\Thrift\Agent\BaggageRestrictionManagerIf {
+ protected $input_ = null;
+ protected $output_ = null;
+
+ protected $seqid_ = 0;
+
+ public function __construct($input, $output=null) {
+ $this->input_ = $input;
+ $this->output_ = $output ? $output : $input;
+ }
+
+ public function getBaggageRestrictions($serviceName)
+ {
+ $this->send_getBaggageRestrictions($serviceName);
+ return $this->recv_getBaggageRestrictions();
+ }
+
+ public function send_getBaggageRestrictions($serviceName)
+ {
+ $args = new \Jaeger\Thrift\Agent\BaggageRestrictionManager_getBaggageRestrictions_args();
+ $args->serviceName = $serviceName;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'getBaggageRestrictions', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('getBaggageRestrictions', TMessageType::CALL, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+
+ public function recv_getBaggageRestrictions()
+ {
+ $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+ if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\BaggageRestrictionManager_getBaggageRestrictions_result', $this->input_->isStrictRead());
+ else
+ {
+ $rseqid = 0;
+ $fname = null;
+ $mtype = 0;
+
+ $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+ if ($mtype == TMessageType::EXCEPTION) {
+ $x = new TApplicationException();
+ $x->read($this->input_);
+ $this->input_->readMessageEnd();
+ throw $x;
+ }
+ $result = new \Jaeger\Thrift\Agent\BaggageRestrictionManager_getBaggageRestrictions_result();
+ $result->read($this->input_);
+ $this->input_->readMessageEnd();
+ }
+ if ($result->success !== null) {
+ return $result->success;
+ }
+ throw new \Exception("getBaggageRestrictions failed: unknown result");
+ }
+
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerIf.php
new file mode 100644
index 000000000..010bda741
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerIf.php
@@ -0,0 +1,31 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface BaggageRestrictionManagerIf {
+ /**
+ * getBaggageRestrictions retrieves the baggage restrictions for a specific service.
+ * Usually, baggageRestrictions apply to all services however there may be situations
+ * where a baggageKey might only be allowed to be set by a specific service.
+ *
+ * @param string $serviceName
+ * @return \Jaeger\Thrift\Agent\BaggageRestriction[]
+ */
+ public function getBaggageRestrictions($serviceName);
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_args.php
new file mode 100644
index 000000000..6f2b4650a
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_args.php
@@ -0,0 +1,55 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class BaggageRestrictionManager_getBaggageRestrictions_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'serviceName',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $serviceName = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'BaggageRestrictionManager_getBaggageRestrictions_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('BaggageRestrictionManager_getBaggageRestrictions_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('BaggageRestrictionManager_getBaggageRestrictions_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_result.php
new file mode 100644
index 000000000..a3c52b37c
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_result.php
@@ -0,0 +1,60 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class BaggageRestrictionManager_getBaggageRestrictions_result extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 0 => array(
+ 'var' => 'success',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\BaggageRestriction',
+ ),
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Agent\BaggageRestriction[]
+ */
+ public $success = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'BaggageRestrictionManager_getBaggageRestrictions_result';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('BaggageRestrictionManager_getBaggageRestrictions_result', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('BaggageRestrictionManager_getBaggageRestrictions_result', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependencies.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependencies.php
new file mode 100644
index 000000000..4295b9798
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependencies.php
@@ -0,0 +1,61 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Dependencies extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'links',
+ 'isRequired' => true,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\DependencyLink',
+ ),
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Agent\DependencyLink[]
+ */
+ public $links = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Dependencies';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Dependencies', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Dependencies', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyClient.php
new file mode 100644
index 000000000..2c247633d
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyClient.php
@@ -0,0 +1,105 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class DependencyClient implements \Jaeger\Thrift\Agent\DependencyIf {
+ protected $input_ = null;
+ protected $output_ = null;
+
+ protected $seqid_ = 0;
+
+ public function __construct($input, $output=null) {
+ $this->input_ = $input;
+ $this->output_ = $output ? $output : $input;
+ }
+
+ public function getDependenciesForTrace($traceId)
+ {
+ $this->send_getDependenciesForTrace($traceId);
+ return $this->recv_getDependenciesForTrace();
+ }
+
+ public function send_getDependenciesForTrace($traceId)
+ {
+ $args = new \Jaeger\Thrift\Agent\Dependency_getDependenciesForTrace_args();
+ $args->traceId = $traceId;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'getDependenciesForTrace', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('getDependenciesForTrace', TMessageType::CALL, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+
+ public function recv_getDependenciesForTrace()
+ {
+ $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+ if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\Dependency_getDependenciesForTrace_result', $this->input_->isStrictRead());
+ else
+ {
+ $rseqid = 0;
+ $fname = null;
+ $mtype = 0;
+
+ $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+ if ($mtype == TMessageType::EXCEPTION) {
+ $x = new TApplicationException();
+ $x->read($this->input_);
+ $this->input_->readMessageEnd();
+ throw $x;
+ }
+ $result = new \Jaeger\Thrift\Agent\Dependency_getDependenciesForTrace_result();
+ $result->read($this->input_);
+ $this->input_->readMessageEnd();
+ }
+ if ($result->success !== null) {
+ return $result->success;
+ }
+ throw new \Exception("getDependenciesForTrace failed: unknown result");
+ }
+
+ public function saveDependencies(\Jaeger\Thrift\Agent\Dependencies $dependencies)
+ {
+ $this->send_saveDependencies($dependencies);
+ }
+
+ public function send_saveDependencies(\Jaeger\Thrift\Agent\Dependencies $dependencies)
+ {
+ $args = new \Jaeger\Thrift\Agent\Dependency_saveDependencies_args();
+ $args->dependencies = $dependencies;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'saveDependencies', TMessageType::ONEWAY, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('saveDependencies', TMessageType::ONEWAY, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyIf.php
new file mode 100644
index 000000000..c9432e7d8
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyIf.php
@@ -0,0 +1,31 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface DependencyIf {
+ /**
+ * @param string $traceId
+ * @return \Jaeger\Thrift\Agent\Dependencies
+ */
+ public function getDependenciesForTrace($traceId);
+ /**
+ * @param \Jaeger\Thrift\Agent\Dependencies $dependencies
+ */
+ public function saveDependencies(\Jaeger\Thrift\Agent\Dependencies $dependencies);
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyLink.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyLink.php
new file mode 100644
index 000000000..14cfa5132
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyLink.php
@@ -0,0 +1,74 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class DependencyLink extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'parent',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'child',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 4 => array(
+ 'var' => 'callCount',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $parent = null;
+ /**
+ * @var string
+ */
+ public $child = null;
+ /**
+ * @var int
+ */
+ public $callCount = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'DependencyLink';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('DependencyLink', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('DependencyLink', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_args.php
new file mode 100644
index 000000000..5100ea77b
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_args.php
@@ -0,0 +1,55 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Dependency_getDependenciesForTrace_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'traceId',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $traceId = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Dependency_getDependenciesForTrace_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Dependency_getDependenciesForTrace_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Dependency_getDependenciesForTrace_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_result.php
new file mode 100644
index 000000000..ebdd1303e
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_result.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Dependency_getDependenciesForTrace_result extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 0 => array(
+ 'var' => 'success',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\Dependencies',
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Agent\Dependencies
+ */
+ public $success = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Dependency_getDependenciesForTrace_result';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Dependency_getDependenciesForTrace_result', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Dependency_getDependenciesForTrace_result', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_saveDependencies_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_saveDependencies_args.php
new file mode 100644
index 000000000..0d250c297
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_saveDependencies_args.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Dependency_saveDependencies_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'dependencies',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\Dependencies',
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Agent\Dependencies
+ */
+ public $dependencies = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Dependency_saveDependencies_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Dependency_saveDependencies_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Dependency_saveDependencies_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/OperationSamplingStrategy.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/OperationSamplingStrategy.php
new file mode 100644
index 000000000..7532a7b50
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/OperationSamplingStrategy.php
@@ -0,0 +1,66 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class OperationSamplingStrategy extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'operation',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'probabilisticSampling',
+ 'isRequired' => true,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\ProbabilisticSamplingStrategy',
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $operation = null;
+ /**
+ * @var \Jaeger\Thrift\Agent\ProbabilisticSamplingStrategy
+ */
+ public $probabilisticSampling = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'OperationSamplingStrategy';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('OperationSamplingStrategy', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('OperationSamplingStrategy', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/PerOperationSamplingStrategies.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/PerOperationSamplingStrategies.php
new file mode 100644
index 000000000..2a6ae8a61
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/PerOperationSamplingStrategies.php
@@ -0,0 +1,88 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class PerOperationSamplingStrategies extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'defaultSamplingProbability',
+ 'isRequired' => true,
+ 'type' => TType::DOUBLE,
+ ),
+ 2 => array(
+ 'var' => 'defaultLowerBoundTracesPerSecond',
+ 'isRequired' => true,
+ 'type' => TType::DOUBLE,
+ ),
+ 3 => array(
+ 'var' => 'perOperationStrategies',
+ 'isRequired' => true,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\OperationSamplingStrategy',
+ ),
+ ),
+ 4 => array(
+ 'var' => 'defaultUpperBoundTracesPerSecond',
+ 'isRequired' => false,
+ 'type' => TType::DOUBLE,
+ ),
+ );
+
+ /**
+ * @var double
+ */
+ public $defaultSamplingProbability = null;
+ /**
+ * @var double
+ */
+ public $defaultLowerBoundTracesPerSecond = null;
+ /**
+ * @var \Jaeger\Thrift\Agent\OperationSamplingStrategy[]
+ */
+ public $perOperationStrategies = null;
+ /**
+ * @var double
+ */
+ public $defaultUpperBoundTracesPerSecond = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'PerOperationSamplingStrategies';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('PerOperationSamplingStrategies', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('PerOperationSamplingStrategies', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ProbabilisticSamplingStrategy.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ProbabilisticSamplingStrategy.php
new file mode 100644
index 000000000..708ceb9a4
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ProbabilisticSamplingStrategy.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class ProbabilisticSamplingStrategy extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'samplingRate',
+ 'isRequired' => true,
+ 'type' => TType::DOUBLE,
+ ),
+ );
+
+ /**
+ * @var double
+ */
+ public $samplingRate = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'ProbabilisticSamplingStrategy';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('ProbabilisticSamplingStrategy', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('ProbabilisticSamplingStrategy', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/RateLimitingSamplingStrategy.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/RateLimitingSamplingStrategy.php
new file mode 100644
index 000000000..d5502e8ee
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/RateLimitingSamplingStrategy.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class RateLimitingSamplingStrategy extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'maxTracesPerSecond',
+ 'isRequired' => true,
+ 'type' => TType::I16,
+ ),
+ );
+
+ /**
+ * @var int
+ */
+ public $maxTracesPerSecond = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'RateLimitingSamplingStrategy';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('RateLimitingSamplingStrategy', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('RateLimitingSamplingStrategy', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerClient.php
new file mode 100644
index 000000000..9f5494a91
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerClient.php
@@ -0,0 +1,83 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class SamplingManagerClient implements \Jaeger\Thrift\Agent\SamplingManagerIf {
+ protected $input_ = null;
+ protected $output_ = null;
+
+ protected $seqid_ = 0;
+
+ public function __construct($input, $output=null) {
+ $this->input_ = $input;
+ $this->output_ = $output ? $output : $input;
+ }
+
+ public function getSamplingStrategy($serviceName)
+ {
+ $this->send_getSamplingStrategy($serviceName);
+ return $this->recv_getSamplingStrategy();
+ }
+
+ public function send_getSamplingStrategy($serviceName)
+ {
+ $args = new \Jaeger\Thrift\Agent\SamplingManager_getSamplingStrategy_args();
+ $args->serviceName = $serviceName;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'getSamplingStrategy', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('getSamplingStrategy', TMessageType::CALL, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+
+ public function recv_getSamplingStrategy()
+ {
+ $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+ if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\SamplingManager_getSamplingStrategy_result', $this->input_->isStrictRead());
+ else
+ {
+ $rseqid = 0;
+ $fname = null;
+ $mtype = 0;
+
+ $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+ if ($mtype == TMessageType::EXCEPTION) {
+ $x = new TApplicationException();
+ $x->read($this->input_);
+ $this->input_->readMessageEnd();
+ throw $x;
+ }
+ $result = new \Jaeger\Thrift\Agent\SamplingManager_getSamplingStrategy_result();
+ $result->read($this->input_);
+ $this->input_->readMessageEnd();
+ }
+ if ($result->success !== null) {
+ return $result->success;
+ }
+ throw new \Exception("getSamplingStrategy failed: unknown result");
+ }
+
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerIf.php
new file mode 100644
index 000000000..ef17cf308
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerIf.php
@@ -0,0 +1,27 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface SamplingManagerIf {
+ /**
+ * @param string $serviceName
+ * @return \Jaeger\Thrift\Agent\SamplingStrategyResponse
+ */
+ public function getSamplingStrategy($serviceName);
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_args.php
new file mode 100644
index 000000000..f39203efe
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_args.php
@@ -0,0 +1,55 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class SamplingManager_getSamplingStrategy_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'serviceName',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $serviceName = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'SamplingManager_getSamplingStrategy_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('SamplingManager_getSamplingStrategy_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('SamplingManager_getSamplingStrategy_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_result.php
new file mode 100644
index 000000000..79e6dce58
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_result.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class SamplingManager_getSamplingStrategy_result extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 0 => array(
+ 'var' => 'success',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\SamplingStrategyResponse',
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Agent\SamplingStrategyResponse
+ */
+ public $success = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'SamplingManager_getSamplingStrategy_result';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('SamplingManager_getSamplingStrategy_result', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('SamplingManager_getSamplingStrategy_result', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyResponse.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyResponse.php
new file mode 100644
index 000000000..bc807a57d
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyResponse.php
@@ -0,0 +1,86 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class SamplingStrategyResponse extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'strategyType',
+ 'isRequired' => true,
+ 'type' => TType::I32,
+ ),
+ 2 => array(
+ 'var' => 'probabilisticSampling',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\ProbabilisticSamplingStrategy',
+ ),
+ 3 => array(
+ 'var' => 'rateLimitingSampling',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\RateLimitingSamplingStrategy',
+ ),
+ 4 => array(
+ 'var' => 'operationSampling',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\PerOperationSamplingStrategies',
+ ),
+ );
+
+ /**
+ * @var int
+ */
+ public $strategyType = null;
+ /**
+ * @var \Jaeger\Thrift\Agent\ProbabilisticSamplingStrategy
+ */
+ public $probabilisticSampling = null;
+ /**
+ * @var \Jaeger\Thrift\Agent\RateLimitingSamplingStrategy
+ */
+ public $rateLimitingSampling = null;
+ /**
+ * @var \Jaeger\Thrift\Agent\PerOperationSamplingStrategies
+ */
+ public $operationSampling = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'SamplingStrategyResponse';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('SamplingStrategyResponse', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('SamplingStrategyResponse', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyType.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyType.php
new file mode 100644
index 000000000..c8dff918a
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyType.php
@@ -0,0 +1,28 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class SamplingStrategyType {
+ const PROBABILISTIC = 0;
+ const RATE_LIMITING = 1;
+ static public $__names = array(
+ 0 => 'PROBABILISTIC',
+ 1 => 'RATE_LIMITING',
+ );
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ValidateTraceResponse.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ValidateTraceResponse.php
new file mode 100644
index 000000000..226f61e80
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ValidateTraceResponse.php
@@ -0,0 +1,65 @@
+<?php
+namespace Jaeger\Thrift\Agent;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class ValidateTraceResponse extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'ok',
+ 'isRequired' => true,
+ 'type' => TType::BOOL,
+ ),
+ 2 => array(
+ 'var' => 'traceCount',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ );
+
+ /**
+ * @var bool
+ */
+ public $ok = null;
+ /**
+ * @var int
+ */
+ public $traceCount = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'ValidateTraceResponse';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('ValidateTraceResponse', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('ValidateTraceResponse', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Annotation.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Annotation.php
new file mode 100644
index 000000000..e7e48dade
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Annotation.php
@@ -0,0 +1,87 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+/**
+ * An annotation is similar to a log statement. It includes a host field which
+ * allows these events to be attributed properly, and also aggregatable.
+ */
+class Annotation extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'timestamp',
+ 'isRequired' => false,
+ 'type' => TType::I64,
+ ),
+ 2 => array(
+ 'var' => 'value',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ 3 => array(
+ 'var' => 'host',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\Zipkin\Endpoint',
+ ),
+ );
+
+ /**
+ * Microseconds from epoch.
+ *
+ * This value should use the most precise value possible. For example,
+ * gettimeofday or syncing nanoTime against a tick of currentTimeMillis.
+ *
+ * @var int
+ */
+ public $timestamp = null;
+ /**
+ * @var string
+ */
+ public $value = null;
+ /**
+ * Always the host that recorded the event. By specifying the host you allow
+ * rollup of all events (such as client requests to a service) by IP address.
+ *
+ * @var \Jaeger\Thrift\Agent\Zipkin\Endpoint
+ */
+ public $host = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Annotation';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Annotation', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Annotation', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/AnnotationType.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/AnnotationType.php
new file mode 100644
index 000000000..e21c0b0d8
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/AnnotationType.php
@@ -0,0 +1,38 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class AnnotationType {
+ const BOOL = 0;
+ const BYTES = 1;
+ const I16 = 2;
+ const I32 = 3;
+ const I64 = 4;
+ const DOUBLE = 5;
+ const STRING = 6;
+ static public $__names = array(
+ 0 => 'BOOL',
+ 1 => 'BYTES',
+ 2 => 'I16',
+ 3 => 'I32',
+ 4 => 'I64',
+ 5 => 'DOUBLE',
+ 6 => 'STRING',
+ );
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/BinaryAnnotation.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/BinaryAnnotation.php
new file mode 100644
index 000000000..806a74831
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/BinaryAnnotation.php
@@ -0,0 +1,106 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+/**
+ * Binary annotations are tags applied to a Span to give it context. For
+ * example, a binary annotation of "http.uri" could the path to a resource in a
+ * RPC call.
+ *
+ * Binary annotations of type STRING are always queryable, though more a
+ * historical implementation detail than a structural concern.
+ *
+ * Binary annotations can repeat, and vary on the host. Similar to Annotation,
+ * the host indicates who logged the event. This allows you to tell the
+ * difference between the client and server side of the same key. For example,
+ * the key "http.uri" might be different on the client and server side due to
+ * rewriting, like "/api/v1/myresource" vs "/myresource. Via the host field,
+ * you can see the different points of view, which often help in debugging.
+ */
+class BinaryAnnotation extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'key',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'value',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ 3 => array(
+ 'var' => 'annotation_type',
+ 'isRequired' => false,
+ 'type' => TType::I32,
+ ),
+ 4 => array(
+ 'var' => 'host',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\Zipkin\Endpoint',
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $key = null;
+ /**
+ * @var string
+ */
+ public $value = null;
+ /**
+ * @var int
+ */
+ public $annotation_type = null;
+ /**
+ * The host that recorded tag, which allows you to differentiate between
+ * multiple tags with the same key. There are two exceptions to this.
+ *
+ * When the key is CLIENT_ADDR or SERVER_ADDR, host indicates the source or
+ * destination of an RPC. This exception allows zipkin to display network
+ * context of uninstrumented services, or clients such as web browsers.
+ *
+ * @var \Jaeger\Thrift\Agent\Zipkin\Endpoint
+ */
+ public $host = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'BinaryAnnotation';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('BinaryAnnotation', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('BinaryAnnotation', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Constant.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Constant.php
new file mode 100644
index 000000000..ebfcebe48
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Constant.php
@@ -0,0 +1,246 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class Constant extends \Thrift\Type\TConstant {
+ static protected $CLIENT_SEND;
+ static protected $CLIENT_RECV;
+ static protected $SERVER_SEND;
+ static protected $SERVER_RECV;
+ static protected $MESSAGE_SEND;
+ static protected $MESSAGE_RECV;
+ static protected $WIRE_SEND;
+ static protected $WIRE_RECV;
+ static protected $CLIENT_SEND_FRAGMENT;
+ static protected $CLIENT_RECV_FRAGMENT;
+ static protected $SERVER_SEND_FRAGMENT;
+ static protected $SERVER_RECV_FRAGMENT;
+ static protected $LOCAL_COMPONENT;
+ static protected $CLIENT_ADDR;
+ static protected $SERVER_ADDR;
+ static protected $MESSAGE_ADDR;
+
+ static protected function init_CLIENT_SEND() {
+ return /**
+ * The client sent ("cs") a request to a server. There is only one send per
+ * span. For example, if there's a transport error, each attempt can be logged
+ * as a WIRE_SEND annotation.
+ *
+ * If chunking is involved, each chunk could be logged as a separate
+ * CLIENT_SEND_FRAGMENT in the same span.
+ *
+ * Annotation.host is not the server. It is the host which logged the send
+ * event, almost always the client. When logging CLIENT_SEND, instrumentation
+ * should also log the SERVER_ADDR.
+ */
+"cs";
+ }
+
+ static protected function init_CLIENT_RECV() {
+ return /**
+ * The client received ("cr") a response from a server. There is only one
+ * receive per span. For example, if duplicate responses were received, each
+ * can be logged as a WIRE_RECV annotation.
+ *
+ * If chunking is involved, each chunk could be logged as a separate
+ * CLIENT_RECV_FRAGMENT in the same span.
+ *
+ * Annotation.host is not the server. It is the host which logged the receive
+ * event, almost always the client. The actual endpoint of the server is
+ * recorded separately as SERVER_ADDR when CLIENT_SEND is logged.
+ */
+"cr";
+ }
+
+ static protected function init_SERVER_SEND() {
+ return /**
+ * The server sent ("ss") a response to a client. There is only one response
+ * per span. If there's a transport error, each attempt can be logged as a
+ * WIRE_SEND annotation.
+ *
+ * Typically, a trace ends with a server send, so the last timestamp of a trace
+ * is often the timestamp of the root span's server send.
+ *
+ * If chunking is involved, each chunk could be logged as a separate
+ * SERVER_SEND_FRAGMENT in the same span.
+ *
+ * Annotation.host is not the client. It is the host which logged the send
+ * event, almost always the server. The actual endpoint of the client is
+ * recorded separately as CLIENT_ADDR when SERVER_RECV is logged.
+ */
+"ss";
+ }
+
+ static protected function init_SERVER_RECV() {
+ return /**
+ * The server received ("sr") a request from a client. There is only one
+ * request per span. For example, if duplicate responses were received, each
+ * can be logged as a WIRE_RECV annotation.
+ *
+ * Typically, a trace starts with a server receive, so the first timestamp of a
+ * trace is often the timestamp of the root span's server receive.
+ *
+ * If chunking is involved, each chunk could be logged as a separate
+ * SERVER_RECV_FRAGMENT in the same span.
+ *
+ * Annotation.host is not the client. It is the host which logged the receive
+ * event, almost always the server. When logging SERVER_RECV, instrumentation
+ * should also log the CLIENT_ADDR.
+ */
+"sr";
+ }
+
+ static protected function init_MESSAGE_SEND() {
+ return /**
+ * Message send ("ms") is a request to send a message to a destination, usually
+ * a broker. This may be the only annotation in a messaging span. If WIRE_SEND
+ * exists in the same span, it follows this moment and clarifies delays sending
+ * the message, such as batching.
+ *
+ * Unlike RPC annotations like CLIENT_SEND, messaging spans never share a span
+ * ID. For example, "ms" should always be the parent of "mr".
+ *
+ * Annotation.host is not the destination, it is the host which logged the send
+ * event: the producer. When annotating MESSAGE_SEND, instrumentation should
+ * also tag the MESSAGE_ADDR.
+ */
+"ms";
+ }
+
+ static protected function init_MESSAGE_RECV() {
+ return /**
+ * A consumer received ("mr") a message from a broker. This may be the only
+ * annotation in a messaging span. If WIRE_RECV exists in the same span, it
+ * precedes this moment and clarifies any local queuing delay.
+ *
+ * Unlike RPC annotations like SERVER_RECV, messaging spans never share a span
+ * ID. For example, "mr" should always be a child of "ms" unless it is a root
+ * span.
+ *
+ * Annotation.host is not the broker, it is the host which logged the receive
+ * event: the consumer. When annotating MESSAGE_RECV, instrumentation should
+ * also tag the MESSAGE_ADDR.
+ */
+"mr";
+ }
+
+ static protected function init_WIRE_SEND() {
+ return /**
+ * Optionally logs an attempt to send a message on the wire. Multiple wire send
+ * events could indicate network retries. A lag between client or server send
+ * and wire send might indicate queuing or processing delay.
+ */
+"ws";
+ }
+
+ static protected function init_WIRE_RECV() {
+ return /**
+ * Optionally logs an attempt to receive a message from the wire. Multiple wire
+ * receive events could indicate network retries. A lag between wire receive
+ * and client or server receive might indicate queuing or processing delay.
+ */
+"wr";
+ }
+
+ static protected function init_CLIENT_SEND_FRAGMENT() {
+ return /**
+ * Optionally logs progress of a (CLIENT_SEND, WIRE_SEND). For example, this
+ * could be one chunk in a chunked request.
+ */
+"csf";
+ }
+
+ static protected function init_CLIENT_RECV_FRAGMENT() {
+ return /**
+ * Optionally logs progress of a (CLIENT_RECV, WIRE_RECV). For example, this
+ * could be one chunk in a chunked response.
+ */
+"crf";
+ }
+
+ static protected function init_SERVER_SEND_FRAGMENT() {
+ return /**
+ * Optionally logs progress of a (SERVER_SEND, WIRE_SEND). For example, this
+ * could be one chunk in a chunked response.
+ */
+"ssf";
+ }
+
+ static protected function init_SERVER_RECV_FRAGMENT() {
+ return /**
+ * Optionally logs progress of a (SERVER_RECV, WIRE_RECV). For example, this
+ * could be one chunk in a chunked request.
+ */
+"srf";
+ }
+
+ static protected function init_LOCAL_COMPONENT() {
+ return /**
+ * The value of "lc" is the component or namespace of a local span.
+ *
+ * BinaryAnnotation.host adds service context needed to support queries.
+ *
+ * Local Component("lc") supports three key features: flagging, query by
+ * service and filtering Span.name by namespace.
+ *
+ * While structurally the same, local spans are fundamentally different than
+ * RPC spans in how they should be interpreted. For example, zipkin v1 tools
+ * center on RPC latency and service graphs. Root local-spans are neither
+ * indicative of critical path RPC latency, nor have impact on the shape of a
+ * service graph. By flagging with "lc", tools can special-case local spans.
+ *
+ * Zipkin v1 Spans are unqueryable unless they can be indexed by service name.
+ * The only path to a service name is by (Binary)?Annotation.host.serviceName.
+ * By logging "lc", a local span can be queried even if no other annotations
+ * are logged.
+ *
+ * The value of "lc" is the namespace of Span.name. For example, it might be
+ * "finatra2", for a span named "bootstrap". "lc" allows you to resolves
+ * conflicts for the same Span.name, for example "finatra/bootstrap" vs
+ * "finch/bootstrap". Using local component, you'd search for spans named
+ * "bootstrap" where "lc=finch"
+ */
+"lc";
+ }
+
+ static protected function init_CLIENT_ADDR() {
+ return /**
+ * Indicates a client address ("ca") in a span. Most likely, there's only one.
+ * Multiple addresses are possible when a client changes its ip or port within
+ * a span.
+ */
+"ca";
+ }
+
+ static protected function init_SERVER_ADDR() {
+ return /**
+ * Indicates a server address ("sa") in a span. Most likely, there's only one.
+ * Multiple addresses are possible when a client is redirected, or fails to a
+ * different server ip or port.
+ */
+"sa";
+ }
+
+ static protected function init_MESSAGE_ADDR() {
+ return /**
+ * Indicates the remote address of a messaging span, usually the broker.
+ */
+"ma";
+ }
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Endpoint.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Endpoint.php
new file mode 100644
index 000000000..12ff02f96
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Endpoint.php
@@ -0,0 +1,108 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+/**
+ * Indicates the network context of a service recording an annotation with two
+ * exceptions.
+ *
+ * When a BinaryAnnotation, and key is CLIENT_ADDR or SERVER_ADDR,
+ * the endpoint indicates the source or destination of an RPC. This exception
+ * allows zipkin to display network context of uninstrumented services, or
+ * clients such as web browsers.
+ */
+class Endpoint extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'ipv4',
+ 'isRequired' => false,
+ 'type' => TType::I32,
+ ),
+ 2 => array(
+ 'var' => 'port',
+ 'isRequired' => false,
+ 'type' => TType::I16,
+ ),
+ 3 => array(
+ 'var' => 'service_name',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ 4 => array(
+ 'var' => 'ipv6',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ );
+
+ /**
+ * IPv4 host address packed into 4 bytes.
+ *
+ * Ex for the ip 1.2.3.4, it would be (1 << 24) | (2 << 16) | (3 << 8) | 4
+ *
+ * @var int
+ */
+ public $ipv4 = null;
+ /**
+ * IPv4 port
+ *
+ * Note: this is to be treated as an unsigned integer, so watch for negatives.
+ *
+ * Conventionally, when the port isn't known, port = 0.
+ *
+ * @var int
+ */
+ public $port = null;
+ /**
+ * Service name in lowercase, such as "memcache" or "zipkin-web"
+ *
+ * Conventionally, when the service name isn't known, service_name = "unknown".
+ *
+ * @var string
+ */
+ public $service_name = null;
+ /**
+ * IPv6 host address packed into 16 bytes. Ex Inet6Address.getBytes()
+ *
+ * @var string
+ */
+ public $ipv6 = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Endpoint';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Endpoint', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Endpoint', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Response.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Response.php
new file mode 100644
index 000000000..88c7f5e5d
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Response.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Response extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'ok',
+ 'isRequired' => true,
+ 'type' => TType::BOOL,
+ ),
+ );
+
+ /**
+ * @var bool
+ */
+ public $ok = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Response';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Response', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Response', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Span.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Span.php
new file mode 100644
index 000000000..32a69b645
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Span.php
@@ -0,0 +1,190 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+/**
+ * A trace is a series of spans (often RPC calls) which form a latency tree.
+ *
+ * The root span is where trace_id = id and parent_id = Nil. The root span is
+ * usually the longest interval in the trace, starting with a SERVER_RECV
+ * annotation and ending with a SERVER_SEND.
+ */
+class Span extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'trace_id',
+ 'isRequired' => false,
+ 'type' => TType::I64,
+ ),
+ 3 => array(
+ 'var' => 'name',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ 4 => array(
+ 'var' => 'id',
+ 'isRequired' => false,
+ 'type' => TType::I64,
+ ),
+ 5 => array(
+ 'var' => 'parent_id',
+ 'isRequired' => false,
+ 'type' => TType::I64,
+ ),
+ 6 => array(
+ 'var' => 'annotations',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\Zipkin\Annotation',
+ ),
+ ),
+ 8 => array(
+ 'var' => 'binary_annotations',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation',
+ ),
+ ),
+ 9 => array(
+ 'var' => 'debug',
+ 'isRequired' => false,
+ 'type' => TType::BOOL,
+ ),
+ 10 => array(
+ 'var' => 'timestamp',
+ 'isRequired' => false,
+ 'type' => TType::I64,
+ ),
+ 11 => array(
+ 'var' => 'duration',
+ 'isRequired' => false,
+ 'type' => TType::I64,
+ ),
+ 12 => array(
+ 'var' => 'trace_id_high',
+ 'isRequired' => false,
+ 'type' => TType::I64,
+ ),
+ );
+
+ /**
+ * @var int
+ */
+ public $trace_id = null;
+ /**
+ * Span name in lowercase, rpc method for example
+ *
+ * Conventionally, when the span name isn't known, name = "unknown".
+ *
+ * @var string
+ */
+ public $name = null;
+ /**
+ * @var int
+ */
+ public $id = null;
+ /**
+ * @var int
+ */
+ public $parent_id = null;
+ /**
+ * @var \Jaeger\Thrift\Agent\Zipkin\Annotation[]
+ */
+ public $annotations = null;
+ /**
+ * @var \Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation[]
+ */
+ public $binary_annotations = null;
+ /**
+ * @var bool
+ */
+ public $debug = false;
+ /**
+ * Microseconds from epoch of the creation of this span.
+ *
+ * This value should be set directly by instrumentation, using the most
+ * precise value possible. For example, gettimeofday or syncing nanoTime
+ * against a tick of currentTimeMillis.
+ *
+ * For compatibilty with instrumentation that precede this field, collectors
+ * or span stores can derive this via Annotation.timestamp.
+ * For example, SERVER_RECV.timestamp or CLIENT_SEND.timestamp.
+ *
+ * This field is optional for compatibility with old data: first-party span
+ * stores are expected to support this at time of introduction.
+ *
+ * @var int
+ */
+ public $timestamp = null;
+ /**
+ * Measurement of duration in microseconds, used to support queries.
+ *
+ * This value should be set directly, where possible. Doing so encourages
+ * precise measurement decoupled from problems of clocks, such as skew or NTP
+ * updates causing time to move backwards.
+ *
+ * For compatibilty with instrumentation that precede this field, collectors
+ * or span stores can derive this by subtracting Annotation.timestamp.
+ * For example, SERVER_SEND.timestamp - SERVER_RECV.timestamp.
+ *
+ * If this field is persisted as unset, zipkin will continue to work, except
+ * duration query support will be implementation-specific. Similarly, setting
+ * this field non-atomically is implementation-specific.
+ *
+ * This field is i64 vs i32 to support spans longer than 35 minutes.
+ *
+ * @var int
+ */
+ public $duration = null;
+ /**
+ * Optional unique 8-byte additional identifier for a trace. If non zero, this
+ * means the trace uses 128 bit traceIds instead of 64 bit.
+ *
+ * @var int
+ */
+ public $trace_id_high = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Span';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Span', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Span', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorClient.php
new file mode 100644
index 000000000..2978675c4
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorClient.php
@@ -0,0 +1,83 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class ZipkinCollectorClient implements \Jaeger\Thrift\Agent\Zipkin\ZipkinCollectorIf {
+ protected $input_ = null;
+ protected $output_ = null;
+
+ protected $seqid_ = 0;
+
+ public function __construct($input, $output=null) {
+ $this->input_ = $input;
+ $this->output_ = $output ? $output : $input;
+ }
+
+ public function submitZipkinBatch(array $spans)
+ {
+ $this->send_submitZipkinBatch($spans);
+ return $this->recv_submitZipkinBatch();
+ }
+
+ public function send_submitZipkinBatch(array $spans)
+ {
+ $args = new \Jaeger\Thrift\Agent\Zipkin\ZipkinCollector_submitZipkinBatch_args();
+ $args->spans = $spans;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'submitZipkinBatch', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('submitZipkinBatch', TMessageType::CALL, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+
+ public function recv_submitZipkinBatch()
+ {
+ $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+ if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\Zipkin\ZipkinCollector_submitZipkinBatch_result', $this->input_->isStrictRead());
+ else
+ {
+ $rseqid = 0;
+ $fname = null;
+ $mtype = 0;
+
+ $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+ if ($mtype == TMessageType::EXCEPTION) {
+ $x = new TApplicationException();
+ $x->read($this->input_);
+ $this->input_->readMessageEnd();
+ throw $x;
+ }
+ $result = new \Jaeger\Thrift\Agent\Zipkin\ZipkinCollector_submitZipkinBatch_result();
+ $result->read($this->input_);
+ $this->input_->readMessageEnd();
+ }
+ if ($result->success !== null) {
+ return $result->success;
+ }
+ throw new \Exception("submitZipkinBatch failed: unknown result");
+ }
+
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorIf.php
new file mode 100644
index 000000000..83abf8119
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorIf.php
@@ -0,0 +1,27 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface ZipkinCollectorIf {
+ /**
+ * @param \Jaeger\Thrift\Agent\Zipkin\Span[] $spans
+ * @return \Jaeger\Thrift\Agent\Zipkin\Response[]
+ */
+ public function submitZipkinBatch(array $spans);
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_args.php
new file mode 100644
index 000000000..24d25b078
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_args.php
@@ -0,0 +1,60 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class ZipkinCollector_submitZipkinBatch_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'spans',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\Zipkin\Span',
+ ),
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Agent\Zipkin\Span[]
+ */
+ public $spans = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'ZipkinCollector_submitZipkinBatch_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('ZipkinCollector_submitZipkinBatch_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('ZipkinCollector_submitZipkinBatch_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_result.php
new file mode 100644
index 000000000..faf165446
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_result.php
@@ -0,0 +1,60 @@
+<?php
+namespace Jaeger\Thrift\Agent\Zipkin;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class ZipkinCollector_submitZipkinBatch_result extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 0 => array(
+ 'var' => 'success',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Agent\Zipkin\Response',
+ ),
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Agent\Zipkin\Response[]
+ */
+ public $success = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'ZipkinCollector_submitZipkinBatch_result';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('ZipkinCollector_submitZipkinBatch_result', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('ZipkinCollector_submitZipkinBatch_result', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Batch.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Batch.php
new file mode 100644
index 000000000..56e9e5206
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Batch.php
@@ -0,0 +1,71 @@
+<?php
+namespace Jaeger\Thrift;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Batch extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'process',
+ 'isRequired' => true,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Process',
+ ),
+ 2 => array(
+ 'var' => 'spans',
+ 'isRequired' => true,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Span',
+ ),
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Process
+ */
+ public $process = null;
+ /**
+ * @var \Jaeger\Thrift\Span[]
+ */
+ public $spans = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Batch';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Batch', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Batch', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/BatchSubmitResponse.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/BatchSubmitResponse.php
new file mode 100644
index 000000000..7ddc25eb5
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/BatchSubmitResponse.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class BatchSubmitResponse extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'ok',
+ 'isRequired' => true,
+ 'type' => TType::BOOL,
+ ),
+ );
+
+ /**
+ * @var bool
+ */
+ public $ok = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'BatchSubmitResponse';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('BatchSubmitResponse', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('BatchSubmitResponse', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorClient.php
new file mode 100644
index 000000000..e3c6e14c1
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorClient.php
@@ -0,0 +1,83 @@
+<?php
+namespace Jaeger\Thrift;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class CollectorClient implements \Jaeger\Thrift\CollectorIf {
+ protected $input_ = null;
+ protected $output_ = null;
+
+ protected $seqid_ = 0;
+
+ public function __construct($input, $output=null) {
+ $this->input_ = $input;
+ $this->output_ = $output ? $output : $input;
+ }
+
+ public function submitBatches(array $batches)
+ {
+ $this->send_submitBatches($batches);
+ return $this->recv_submitBatches();
+ }
+
+ public function send_submitBatches(array $batches)
+ {
+ $args = new \Jaeger\Thrift\Collector_submitBatches_args();
+ $args->batches = $batches;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'submitBatches', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('submitBatches', TMessageType::CALL, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+
+ public function recv_submitBatches()
+ {
+ $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+ if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Collector_submitBatches_result', $this->input_->isStrictRead());
+ else
+ {
+ $rseqid = 0;
+ $fname = null;
+ $mtype = 0;
+
+ $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+ if ($mtype == TMessageType::EXCEPTION) {
+ $x = new TApplicationException();
+ $x->read($this->input_);
+ $this->input_->readMessageEnd();
+ throw $x;
+ }
+ $result = new \Jaeger\Thrift\Collector_submitBatches_result();
+ $result->read($this->input_);
+ $this->input_->readMessageEnd();
+ }
+ if ($result->success !== null) {
+ return $result->success;
+ }
+ throw new \Exception("submitBatches failed: unknown result");
+ }
+
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorIf.php
new file mode 100644
index 000000000..da4f023ec
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorIf.php
@@ -0,0 +1,27 @@
+<?php
+namespace Jaeger\Thrift;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface CollectorIf {
+ /**
+ * @param \Jaeger\Thrift\Batch[] $batches
+ * @return \Jaeger\Thrift\BatchSubmitResponse[]
+ */
+ public function submitBatches(array $batches);
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_args.php
new file mode 100644
index 000000000..014e3720d
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_args.php
@@ -0,0 +1,60 @@
+<?php
+namespace Jaeger\Thrift;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Collector_submitBatches_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'batches',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Batch',
+ ),
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Batch[]
+ */
+ public $batches = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Collector_submitBatches_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Collector_submitBatches_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Collector_submitBatches_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_result.php
new file mode 100644
index 000000000..aae083707
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_result.php
@@ -0,0 +1,60 @@
+<?php
+namespace Jaeger\Thrift;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Collector_submitBatches_result extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 0 => array(
+ 'var' => 'success',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\BatchSubmitResponse',
+ ),
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\BatchSubmitResponse[]
+ */
+ public $success = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Collector_submitBatches_result';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Collector_submitBatches_result', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Collector_submitBatches_result', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Downstream.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Downstream.php
new file mode 100644
index 000000000..92b269aa6
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Downstream.php
@@ -0,0 +1,102 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Downstream extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'serviceName',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'serverRole',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 3 => array(
+ 'var' => 'host',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 4 => array(
+ 'var' => 'port',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 5 => array(
+ 'var' => 'transport',
+ 'isRequired' => true,
+ 'type' => TType::I32,
+ ),
+ 6 => array(
+ 'var' => 'downstream',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Crossdock\Downstream',
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $serviceName = null;
+ /**
+ * @var string
+ */
+ public $serverRole = null;
+ /**
+ * @var string
+ */
+ public $host = null;
+ /**
+ * @var string
+ */
+ public $port = null;
+ /**
+ * @var int
+ */
+ public $transport = null;
+ /**
+ * @var \Jaeger\Thrift\Crossdock\Downstream
+ */
+ public $downstream = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Downstream';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Downstream', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Downstream', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/JoinTraceRequest.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/JoinTraceRequest.php
new file mode 100644
index 000000000..39e6242b7
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/JoinTraceRequest.php
@@ -0,0 +1,66 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class JoinTraceRequest extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'serverRole',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'downstream',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Crossdock\Downstream',
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $serverRole = null;
+ /**
+ * @var \Jaeger\Thrift\Crossdock\Downstream
+ */
+ public $downstream = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'JoinTraceRequest';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('JoinTraceRequest', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('JoinTraceRequest', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/ObservedSpan.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/ObservedSpan.php
new file mode 100644
index 000000000..d60331851
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/ObservedSpan.php
@@ -0,0 +1,74 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class ObservedSpan extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'traceId',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'sampled',
+ 'isRequired' => true,
+ 'type' => TType::BOOL,
+ ),
+ 3 => array(
+ 'var' => 'baggage',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $traceId = null;
+ /**
+ * @var bool
+ */
+ public $sampled = null;
+ /**
+ * @var string
+ */
+ public $baggage = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'ObservedSpan';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('ObservedSpan', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('ObservedSpan', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/StartTraceRequest.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/StartTraceRequest.php
new file mode 100644
index 000000000..50b9c6668
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/StartTraceRequest.php
@@ -0,0 +1,84 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class StartTraceRequest extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'serverRole',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'sampled',
+ 'isRequired' => true,
+ 'type' => TType::BOOL,
+ ),
+ 3 => array(
+ 'var' => 'baggage',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 4 => array(
+ 'var' => 'downstream',
+ 'isRequired' => true,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Crossdock\Downstream',
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $serverRole = null;
+ /**
+ * @var bool
+ */
+ public $sampled = null;
+ /**
+ * @var string
+ */
+ public $baggage = null;
+ /**
+ * @var \Jaeger\Thrift\Crossdock\Downstream
+ */
+ public $downstream = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'StartTraceRequest';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('StartTraceRequest', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('StartTraceRequest', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TraceResponse.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TraceResponse.php
new file mode 100644
index 000000000..107d4e26d
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TraceResponse.php
@@ -0,0 +1,82 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+/**
+ * Each server must include the information about the span it observed.
+ * It can only be omitted from the response if notImplementedError field is not empty.
+ * If the server was instructed to make a downstream call, it must embed the
+ * downstream response in its own response.
+ */
+class TraceResponse extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'span',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Crossdock\ObservedSpan',
+ ),
+ 2 => array(
+ 'var' => 'downstream',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Crossdock\TraceResponse',
+ ),
+ 3 => array(
+ 'var' => 'notImplementedError',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Crossdock\ObservedSpan
+ */
+ public $span = null;
+ /**
+ * @var \Jaeger\Thrift\Crossdock\TraceResponse
+ */
+ public $downstream = null;
+ /**
+ * @var string
+ */
+ public $notImplementedError = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'TraceResponse';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('TraceResponse', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('TraceResponse', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceClient.php
new file mode 100644
index 000000000..2fd8b4fc9
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceClient.php
@@ -0,0 +1,134 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class TracedServiceClient implements \Jaeger\Thrift\Crossdock\TracedServiceIf {
+ protected $input_ = null;
+ protected $output_ = null;
+
+ protected $seqid_ = 0;
+
+ public function __construct($input, $output=null) {
+ $this->input_ = $input;
+ $this->output_ = $output ? $output : $input;
+ }
+
+ public function startTrace(\Jaeger\Thrift\Crossdock\StartTraceRequest $request)
+ {
+ $this->send_startTrace($request);
+ return $this->recv_startTrace();
+ }
+
+ public function send_startTrace(\Jaeger\Thrift\Crossdock\StartTraceRequest $request)
+ {
+ $args = new \Jaeger\Thrift\Crossdock\TracedService_startTrace_args();
+ $args->request = $request;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'startTrace', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('startTrace', TMessageType::CALL, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+
+ public function recv_startTrace()
+ {
+ $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+ if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Crossdock\TracedService_startTrace_result', $this->input_->isStrictRead());
+ else
+ {
+ $rseqid = 0;
+ $fname = null;
+ $mtype = 0;
+
+ $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+ if ($mtype == TMessageType::EXCEPTION) {
+ $x = new TApplicationException();
+ $x->read($this->input_);
+ $this->input_->readMessageEnd();
+ throw $x;
+ }
+ $result = new \Jaeger\Thrift\Crossdock\TracedService_startTrace_result();
+ $result->read($this->input_);
+ $this->input_->readMessageEnd();
+ }
+ if ($result->success !== null) {
+ return $result->success;
+ }
+ throw new \Exception("startTrace failed: unknown result");
+ }
+
+ public function joinTrace(\Jaeger\Thrift\Crossdock\JoinTraceRequest $request)
+ {
+ $this->send_joinTrace($request);
+ return $this->recv_joinTrace();
+ }
+
+ public function send_joinTrace(\Jaeger\Thrift\Crossdock\JoinTraceRequest $request)
+ {
+ $args = new \Jaeger\Thrift\Crossdock\TracedService_joinTrace_args();
+ $args->request = $request;
+ $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+ if ($bin_accel)
+ {
+ thrift_protocol_write_binary($this->output_, 'joinTrace', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+ }
+ else
+ {
+ $this->output_->writeMessageBegin('joinTrace', TMessageType::CALL, $this->seqid_);
+ $args->write($this->output_);
+ $this->output_->writeMessageEnd();
+ $this->output_->getTransport()->flush();
+ }
+ }
+
+ public function recv_joinTrace()
+ {
+ $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+ if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Crossdock\TracedService_joinTrace_result', $this->input_->isStrictRead());
+ else
+ {
+ $rseqid = 0;
+ $fname = null;
+ $mtype = 0;
+
+ $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+ if ($mtype == TMessageType::EXCEPTION) {
+ $x = new TApplicationException();
+ $x->read($this->input_);
+ $this->input_->readMessageEnd();
+ throw $x;
+ }
+ $result = new \Jaeger\Thrift\Crossdock\TracedService_joinTrace_result();
+ $result->read($this->input_);
+ $this->input_->readMessageEnd();
+ }
+ if ($result->success !== null) {
+ return $result->success;
+ }
+ throw new \Exception("joinTrace failed: unknown result");
+ }
+
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceIf.php
new file mode 100644
index 000000000..e2dd9a8eb
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceIf.php
@@ -0,0 +1,40 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface TracedServiceIf {
+ /**
+ * @param \Jaeger\Thrift\Crossdock\StartTraceRequest $request
+ * @return \Jaeger\Thrift\Crossdock\TraceResponse Each server must include the information about the span it observed.
+ * It can only be omitted from the response if notImplementedError field is not empty.
+ * If the server was instructed to make a downstream call, it must embed the
+ * downstream response in its own response.
+ *
+ */
+ public function startTrace(\Jaeger\Thrift\Crossdock\StartTraceRequest $request);
+ /**
+ * @param \Jaeger\Thrift\Crossdock\JoinTraceRequest $request
+ * @return \Jaeger\Thrift\Crossdock\TraceResponse Each server must include the information about the span it observed.
+ * It can only be omitted from the response if notImplementedError field is not empty.
+ * If the server was instructed to make a downstream call, it must embed the
+ * downstream response in its own response.
+ *
+ */
+ public function joinTrace(\Jaeger\Thrift\Crossdock\JoinTraceRequest $request);
+}
+
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_args.php
new file mode 100644
index 000000000..fb82b43c7
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_args.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class TracedService_joinTrace_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'request',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Crossdock\JoinTraceRequest',
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Crossdock\JoinTraceRequest
+ */
+ public $request = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'TracedService_joinTrace_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('TracedService_joinTrace_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('TracedService_joinTrace_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_result.php
new file mode 100644
index 000000000..26ebd7124
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_result.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class TracedService_joinTrace_result extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 0 => array(
+ 'var' => 'success',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Crossdock\TraceResponse',
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Crossdock\TraceResponse
+ */
+ public $success = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'TracedService_joinTrace_result';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('TracedService_joinTrace_result', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('TracedService_joinTrace_result', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_args.php
new file mode 100644
index 000000000..cabc260ea
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_args.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class TracedService_startTrace_args extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'request',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Crossdock\StartTraceRequest',
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Crossdock\StartTraceRequest
+ */
+ public $request = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'TracedService_startTrace_args';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('TracedService_startTrace_args', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('TracedService_startTrace_args', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_result.php
new file mode 100644
index 000000000..f4b114e64
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_result.php
@@ -0,0 +1,56 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class TracedService_startTrace_result extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 0 => array(
+ 'var' => 'success',
+ 'isRequired' => false,
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Crossdock\TraceResponse',
+ ),
+ );
+
+ /**
+ * @var \Jaeger\Thrift\Crossdock\TraceResponse
+ */
+ public $success = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'TracedService_startTrace_result';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('TracedService_startTrace_result', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('TracedService_startTrace_result', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Transport.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Transport.php
new file mode 100644
index 000000000..1b71e686b
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Transport.php
@@ -0,0 +1,30 @@
+<?php
+namespace Jaeger\Thrift\Crossdock;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class Transport {
+ const HTTP = 0;
+ const TCHANNEL = 1;
+ const DUMMY = 2;
+ static public $__names = array(
+ 0 => 'HTTP',
+ 1 => 'TCHANNEL',
+ 2 => 'DUMMY',
+ );
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Log.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Log.php
new file mode 100644
index 000000000..809a92d7c
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Log.php
@@ -0,0 +1,70 @@
+<?php
+namespace Jaeger\Thrift;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Log extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'timestamp',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ 2 => array(
+ 'var' => 'fields',
+ 'isRequired' => true,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Tag',
+ ),
+ ),
+ );
+
+ /**
+ * @var int
+ */
+ public $timestamp = null;
+ /**
+ * @var \Jaeger\Thrift\Tag[]
+ */
+ public $fields = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Log';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Log', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Log', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Process.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Process.php
new file mode 100644
index 000000000..3b925220a
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Process.php
@@ -0,0 +1,70 @@
+<?php
+namespace Jaeger\Thrift;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Process extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'serviceName',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'tags',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Tag',
+ ),
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $serviceName = null;
+ /**
+ * @var \Jaeger\Thrift\Tag[]
+ */
+ public $tags = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Process';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Process', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Process', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Span.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Span.php
new file mode 100644
index 000000000..cff0c324d
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Span.php
@@ -0,0 +1,161 @@
+<?php
+namespace Jaeger\Thrift;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Span extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'traceIdLow',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ 2 => array(
+ 'var' => 'traceIdHigh',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ 3 => array(
+ 'var' => 'spanId',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ 4 => array(
+ 'var' => 'parentSpanId',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ 5 => array(
+ 'var' => 'operationName',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 6 => array(
+ 'var' => 'references',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\SpanRef',
+ ),
+ ),
+ 7 => array(
+ 'var' => 'flags',
+ 'isRequired' => true,
+ 'type' => TType::I32,
+ ),
+ 8 => array(
+ 'var' => 'startTime',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ 9 => array(
+ 'var' => 'duration',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ 10 => array(
+ 'var' => 'tags',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Tag',
+ ),
+ ),
+ 11 => array(
+ 'var' => 'logs',
+ 'isRequired' => false,
+ 'type' => TType::LST,
+ 'etype' => TType::STRUCT,
+ 'elem' => array(
+ 'type' => TType::STRUCT,
+ 'class' => '\Jaeger\Thrift\Log',
+ ),
+ ),
+ );
+
+ /**
+ * @var int
+ */
+ public $traceIdLow = null;
+ /**
+ * @var int
+ */
+ public $traceIdHigh = null;
+ /**
+ * @var int
+ */
+ public $spanId = null;
+ /**
+ * @var int
+ */
+ public $parentSpanId = null;
+ /**
+ * @var string
+ */
+ public $operationName = null;
+ /**
+ * @var \Jaeger\Thrift\SpanRef[]
+ */
+ public $references = null;
+ /**
+ * @var int
+ */
+ public $flags = null;
+ /**
+ * @var int
+ */
+ public $startTime = null;
+ /**
+ * @var int
+ */
+ public $duration = null;
+ /**
+ * @var \Jaeger\Thrift\Tag[]
+ */
+ public $tags = null;
+ /**
+ * @var \Jaeger\Thrift\Log[]
+ */
+ public $logs = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Span';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Span', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Span', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRef.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRef.php
new file mode 100644
index 000000000..cb5ee78db
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRef.php
@@ -0,0 +1,83 @@
+<?php
+namespace Jaeger\Thrift;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class SpanRef extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'refType',
+ 'isRequired' => true,
+ 'type' => TType::I32,
+ ),
+ 2 => array(
+ 'var' => 'traceIdLow',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ 3 => array(
+ 'var' => 'traceIdHigh',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ 4 => array(
+ 'var' => 'spanId',
+ 'isRequired' => true,
+ 'type' => TType::I64,
+ ),
+ );
+
+ /**
+ * @var int
+ */
+ public $refType = null;
+ /**
+ * @var int
+ */
+ public $traceIdLow = null;
+ /**
+ * @var int
+ */
+ public $traceIdHigh = null;
+ /**
+ * @var int
+ */
+ public $spanId = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'SpanRef';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('SpanRef', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('SpanRef', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRefType.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRefType.php
new file mode 100644
index 000000000..d6d6f20c3
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRefType.php
@@ -0,0 +1,28 @@
+<?php
+namespace Jaeger\Thrift;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class SpanRefType {
+ const CHILD_OF = 0;
+ const FOLLOWS_FROM = 1;
+ static public $__names = array(
+ 0 => 'CHILD_OF',
+ 1 => 'FOLLOWS_FROM',
+ );
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Tag.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Tag.php
new file mode 100644
index 000000000..06af59939
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Tag.php
@@ -0,0 +1,110 @@
+<?php
+namespace Jaeger\Thrift;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class Tag extends TBase {
+ static $isValidate = false;
+
+ static $_TSPEC = array(
+ 1 => array(
+ 'var' => 'key',
+ 'isRequired' => true,
+ 'type' => TType::STRING,
+ ),
+ 2 => array(
+ 'var' => 'vType',
+ 'isRequired' => true,
+ 'type' => TType::I32,
+ ),
+ 3 => array(
+ 'var' => 'vStr',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ 4 => array(
+ 'var' => 'vDouble',
+ 'isRequired' => false,
+ 'type' => TType::DOUBLE,
+ ),
+ 5 => array(
+ 'var' => 'vBool',
+ 'isRequired' => false,
+ 'type' => TType::BOOL,
+ ),
+ 6 => array(
+ 'var' => 'vLong',
+ 'isRequired' => false,
+ 'type' => TType::I64,
+ ),
+ 7 => array(
+ 'var' => 'vBinary',
+ 'isRequired' => false,
+ 'type' => TType::STRING,
+ ),
+ );
+
+ /**
+ * @var string
+ */
+ public $key = null;
+ /**
+ * @var int
+ */
+ public $vType = null;
+ /**
+ * @var string
+ */
+ public $vStr = null;
+ /**
+ * @var double
+ */
+ public $vDouble = null;
+ /**
+ * @var bool
+ */
+ public $vBool = null;
+ /**
+ * @var int
+ */
+ public $vLong = null;
+ /**
+ * @var string
+ */
+ public $vBinary = null;
+
+ public function __construct($vals=null) {
+ if (is_array($vals)) {
+ parent::__construct(self::$_TSPEC, $vals);
+ }
+ }
+
+ public function getName() {
+ return 'Tag';
+ }
+
+ public function read($input)
+ {
+ return $this->_read('Tag', self::$_TSPEC, $input);
+ }
+
+ public function write($output) {
+ return $this->_write('Tag', self::$_TSPEC, $output);
+ }
+
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/TagType.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/TagType.php
new file mode 100644
index 000000000..3b1f69f9f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/TagType.php
@@ -0,0 +1,34 @@
+<?php
+namespace Jaeger\Thrift;
+
+/**
+ * Autogenerated by Thrift Compiler (0.11.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class TagType {
+ const STRING = 0;
+ const DOUBLE = 1;
+ const BOOL = 2;
+ const LONG = 3;
+ const BINARY = 4;
+ static public $__names = array(
+ 0 => 'STRING',
+ 1 => 'DOUBLE',
+ 2 => 'BOOL',
+ 3 => 'LONG',
+ 4 => 'BINARY',
+ );
+}
+
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ThriftUdpTransport.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ThriftUdpTransport.php
new file mode 100644
index 000000000..babc689dc
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ThriftUdpTransport.php
@@ -0,0 +1,151 @@
+<?php
+
+namespace Jaeger;
+
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+use Thrift\Transport\TTransport;
+
+class ThriftUdpTransport extends TTransport
+{
+ private $socket;
+
+ /**
+ * @var string
+ */
+ private $host;
+
+ /**
+ * @var int
+ */
+ private $port;
+
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * @var Config
+ */
+ private $config;
+
+ /**
+ * ThriftUdpTransport constructor.
+ * @param string $host
+ * @param int $port
+ * @param LoggerInterface $logger
+ */
+ public function __construct(string $host, int $port, LoggerInterface $logger = null, Config $config = null)
+ {
+ $this->setLogger($logger);
+
+ $this->config = $config;
+
+ $ipProtocol = $this->ipProtocolVersion();
+ $this->socket = $this->createSocket($ipProtocol);
+
+ $this->host = $host;
+ $this->port = $port;
+ }
+
+ protected function setLogger($logger)
+ {
+ $this->logger = $logger ?? new NullLogger();
+ }
+
+ protected function createSocket(string $ipProtocol)
+ {
+ $socketDomain = AF_INET;
+ if ($ipProtocol === Config::IPV6) {
+ $socketDomain = AF_INET6;
+ }
+
+ $socket = @socket_create($socketDomain, SOCK_DGRAM, SOL_UDP);
+ if ($socket === false) {
+ $this->handleSocketError("socket_create failed");
+ }
+ return $socket;
+ }
+
+ protected function ipProtocolVersion()
+ {
+ if (!empty($this->config)) {
+ return $this->config->ipProtocolVersion();
+ }
+ return "";
+ }
+
+ /**
+ * Whether this transport is open.
+ *
+ * @return boolean true if open
+ */
+ public function isOpen()
+ {
+ return $this->socket !== null;
+ }
+
+ /**
+ * Open the transport for reading/writing
+ */
+ public function open()
+ {
+ $ok = @socket_connect($this->socket, $this->host, $this->port);
+ if ($ok === false) {
+ $this->handleSocketError('socket_connect failed');
+ }
+ }
+
+ /**
+ * Close the transport.
+ */
+ public function close()
+ {
+ if (is_null($this->socket)) {
+ $this->logger->warning("can't close empty socket");
+ return ;
+ }
+
+ @socket_close($this->socket);
+ $this->socket = null;
+ }
+
+ /**
+ * Read some data into the array.
+ *
+ * @todo
+ *
+ * @param int $len How much to read
+ * @return string The data that has been read
+ */
+ public function read($len)
+ {
+ }
+
+ /**
+ * Writes the given data out.
+ *
+ * @param string $buf The data to write
+ */
+ public function write($buf)
+ {
+ if (!$this->isOpen()) {
+ $this->logger->warning('transport is closed');
+ return ;
+ }
+
+ $ok = @socket_write($this->socket, $buf);
+ if ($ok === false) {
+ $this->handleSocketError("socket_write failed");
+ }
+ }
+
+ public function handleSocketError($msg)
+ {
+ $errorCode = socket_last_error($this->socket);
+ $errorMsg = socket_strerror($errorCode);
+
+ $this->logger->warning(sprintf('%s: [code - %d] %s', $msg, $errorCode, $errorMsg));
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Tracer.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Tracer.php
new file mode 100644
index 000000000..bb0649a0b
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Tracer.php
@@ -0,0 +1,420 @@
+<?php
+
+namespace Jaeger;
+
+use Exception;
+use OpenTracing\Scope as OTScope;
+use OpenTracing\Span as OTSpan;
+use OpenTracing\UnsupportedFormatException;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+use Jaeger\Codec\BinaryCodec;
+use Jaeger\Codec\CodecInterface;
+use Jaeger\Codec\TextCodec;
+use Jaeger\Codec\ZipkinCodec;
+use Jaeger\Reporter\ReporterInterface;
+use Jaeger\Sampler\SamplerInterface;
+use OpenTracing\Tracer as OTTracer;
+use OpenTracing\SpanContext as OTSpanContext;
+use OpenTracing\Reference;
+use OpenTracing\StartSpanOptions;
+use OpenTracing\Exceptions\UnsupportedFormat;
+use const OpenTracing\Formats\BINARY;
+use const OpenTracing\Formats\HTTP_HEADERS;
+use const OpenTracing\Formats\TEXT_MAP;
+use const OpenTracing\Tags\SPAN_KIND;
+use const OpenTracing\Tags\SPAN_KIND_RPC_SERVER;
+use OpenTracing\ScopeManager as OTScopeManager;
+
+class Tracer implements OTTracer
+{
+ /**
+ * @var string
+ */
+ private $serviceName;
+
+ /**
+ * @var ReporterInterface
+ */
+ private $reporter;
+
+ /**
+ * @var SamplerInterface
+ */
+ private $sampler;
+
+ /**
+ * @var string
+ */
+ private $ipAddress;
+
+ /**
+ * @var string
+ */
+ private $debugIdHeader;
+
+ /**
+ * @var CodecInterface[]
+ */
+ private $codecs;
+
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * @var bool
+ */
+ private $oneSpanPerRpc;
+
+ /**
+ * @var string[]
+ */
+ private $tags;
+
+ /**
+ * @var ScopeManager
+ */
+ private $scopeManager;
+
+ /**
+ * Tracer constructor.
+ * @param string $serviceName
+ * @param ReporterInterface $reporter
+ * @param SamplerInterface $sampler
+ * @param bool $oneSpanPerRpc
+ * @param LoggerInterface|null $logger
+ * @param ScopeManager|null $scopeManager
+ * @param string $traceIdHeader
+ * @param string $baggageHeaderPrefix
+ * @param string $debugIdHeader
+ * @param array|null $tags
+ */
+ public function __construct(
+ $serviceName,
+ ReporterInterface $reporter,
+ SamplerInterface $sampler,
+ $oneSpanPerRpc = true,
+ LoggerInterface $logger = null,
+ ScopeManager $scopeManager = null,
+ $traceIdHeader = TRACE_ID_HEADER,
+ $baggageHeaderPrefix = BAGGAGE_HEADER_PREFIX,
+ $debugIdHeader = DEBUG_ID_HEADER_KEY,
+ $tags = null
+ ) {
+ $this->serviceName = $serviceName;
+ $this->reporter = $reporter;
+ $this->sampler = $sampler;
+ $this->oneSpanPerRpc = $oneSpanPerRpc;
+
+ $this->logger = $logger ?? new NullLogger();
+ $this->scopeManager = $scopeManager ?? new ScopeManager();
+
+ $this->debugIdHeader = $debugIdHeader;
+
+ $this->codecs = [
+ TEXT_MAP => new TextCodec(
+ false,
+ $traceIdHeader,
+ $baggageHeaderPrefix,
+ $debugIdHeader
+ ),
+ HTTP_HEADERS => new TextCodec(
+ true,
+ $traceIdHeader,
+ $baggageHeaderPrefix,
+ $debugIdHeader
+ ),
+ BINARY => new BinaryCodec(),
+ ZIPKIN_SPAN_FORMAT => new ZipkinCodec(),
+ ];
+
+ $this->tags = [
+ JAEGER_VERSION_TAG_KEY => JAEGER_CLIENT_VERSION,
+ ];
+ if ($tags !== null) {
+ $this->tags = array_merge($this->tags, $tags);
+ }
+
+ $hostname = $this->getHostName();
+ $this->ipAddress = $this->getHostByName($hostname);
+
+ if (!empty($hostname)) {
+ $this->tags[JAEGER_HOSTNAME_TAG_KEY] = $hostname;
+ }
+ }
+
+ /**
+ * @return string[]
+ */
+ public function getTags(): array
+ {
+ return $this->tags;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function startSpan(string $operationName, $options = []): OTSpan
+ {
+ if (!($options instanceof StartSpanOptions)) {
+ $options = StartSpanOptions::create($options);
+ }
+
+ $parent = $this->getParentSpanContext($options);
+ $tags = $options->getTags();
+
+ $rpcServer = ($tags[SPAN_KIND] ?? null) == SPAN_KIND_RPC_SERVER;
+
+ if ($parent == null || $parent->isDebugIdContainerOnly()) {
+ $traceId = $this->randomId();
+ $spanId = $traceId;
+ $parentId = null;
+ $flags = 0;
+ $baggage = null;
+ if ($parent == null) {
+ list($sampled, $samplerTags) = $this->sampler->isSampled($traceId, $operationName);
+ if ($sampled) {
+ $flags = SAMPLED_FLAG;
+ $tags = $tags ?? [];
+ foreach ($samplerTags as $key => $value) {
+ $tags[$key] = $value;
+ }
+ }
+ } else { // have debug id
+ $flags = SAMPLED_FLAG | DEBUG_FLAG;
+ $tags = $tags ?? [];
+ $tags[$this->debugIdHeader] = $parent->getDebugId();
+ }
+ } else {
+ $traceId = $parent->getTraceId();
+ if ($rpcServer && $this->oneSpanPerRpc) {
+ // Zipkin-style one-span-per-RPC
+ $spanId = $parent->getSpanId();
+ $parentId = $parent->getParentId();
+ } else {
+ $spanId = $this->randomId();
+ $parentId = $parent->getSpanId();
+ }
+
+ $flags = $parent->getFlags();
+ $baggage = $parent->getBaggage();
+ }
+
+ $spanContext = new SpanContext(
+ $traceId,
+ $spanId,
+ $parentId,
+ $flags,
+ $baggage
+ );
+
+ $span = new Span(
+ $spanContext,
+ $this,
+ $operationName,
+ $tags ?? [],
+ $options->getStartTime()
+ );
+
+ $mergedTags = array_merge($this->tags, $tags);
+ $span->setTags($mergedTags);
+
+ return $span;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param SpanContext $spanContext
+ * @param string $format
+ * @param mixed $carrier
+ * @return void
+ *
+ * @throws UnsupportedFormat
+ */
+ public function inject(OTSpanContext $spanContext, string $format, &$carrier): void
+ {
+ if ($spanContext instanceof SpanContext) {
+ $codec = $this->codecs[$format] ?? null;
+
+ if ($codec == null) {
+ throw UnsupportedFormatException::forFormat(is_scalar($format) ? $format : gettype($format));
+ }
+
+
+ $codec->inject($spanContext, $carrier);
+ return;
+ }
+
+ $message = sprintf(
+ 'Invalid span context. Expected Jaeger\SpanContext, got %s.',
+ is_object($spanContext) ? get_class($spanContext) : gettype($spanContext)
+ );
+
+ $this->logger->warning($message);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param mixed $carrier
+ * @return SpanContext|null
+ *
+ * @throws UnsupportedFormat
+ */
+ public function extract(string $format, $carrier): ?OTSpanContext
+ {
+ $codec = $this->codecs[$format] ?? null;
+
+ if ($codec == null) {
+ throw UnsupportedFormatException::forFormat(is_scalar($format) ? $format : gettype($format));
+ }
+
+ try {
+ return $codec->extract($carrier);
+ } catch (\Throwable $e) {
+ $this->logger->warning($e->getMessage());
+
+ return null;
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function flush(): void
+ {
+ $this->sampler->close();
+ $this->reporter->close();
+ }
+
+ public function reportSpan(Span $span)
+ {
+ $this->reporter->reportSpan($span);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getScopeManager(): OTScopeManager
+ {
+ return $this->scopeManager;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getActiveSpan(): ?OTSpan
+ {
+ $activeScope = $this->getScopeManager()->getActive();
+ if ($activeScope === null) {
+ return null;
+ }
+
+ return $activeScope->getSpan();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function startActiveSpan(string $operationName, $options = []): OTScope
+ {
+ if (!$options instanceof StartSpanOptions) {
+ $options = StartSpanOptions::create($options);
+ }
+
+ if (!$this->getParentSpanContext($options) && $this->getActiveSpan() !== null) {
+ $parent = $this->getActiveSpan()->getContext();
+ $options = $options->withParent($parent);
+ }
+
+ $span = $this->startSpan($operationName, $options);
+ $scope = $this->scopeManager->activate($span, $options->shouldFinishSpanOnClose());
+
+ return $scope;
+ }
+
+ /**
+ * Gets parent span context (if any).
+ *
+ * @param StartSpanOptions $options
+ * @return null|OTSpanContext|SpanContext
+ */
+ private function getParentSpanContext(StartSpanOptions $options)
+ {
+ $references = $options->getReferences();
+ foreach ($references as $ref) {
+ if ($ref->isType(Reference::CHILD_OF)) {
+ return $ref->getSpanContext();
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @return string
+ * @throws Exception
+ */
+ private function randomId(): string
+ {
+ return (string) random_int(0, PHP_INT_MAX);
+ }
+
+ /**
+ * The facade to get the host name.
+ *
+ * @return string
+ */
+ protected function getHostName()
+ {
+ return gethostname();
+ }
+
+ /**
+ * The facade to get IPv4 address corresponding to a given Internet host name.
+ *
+ * NOTE: DNS Resolution may take too long, and during this time your script is NOT being executed.
+ *
+ * @param string|null $hostname
+ * @return string
+ */
+ protected function getHostByName($hostname)
+ {
+ if (empty($hostname)) {
+ $this->logger->error('Unable to determine host name');
+ return '127.0.0.1';
+ }
+
+ return gethostbyname($hostname);
+ }
+
+ /**
+ * @param SamplerInterface $sampler
+ * @return $this
+ */
+ public function setSampler(SamplerInterface $sampler)
+ {
+ $this->sampler = $sampler;
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getServiceName()
+ {
+ return $this->serviceName;
+ }
+
+ /**
+ * @return string
+ */
+ public function getIpAddress()
+ {
+ return $this->ipAddress;
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php
new file mode 100644
index 000000000..d767ad40f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php
@@ -0,0 +1,128 @@
+<?php
+
+namespace Jaeger\Util;
+
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\CacheItemPoolInterface;
+
+class RateLimiter
+{
+ /**
+ * @var CacheItemPoolInterface
+ */
+ private $cache;
+
+ /**
+ * @var CacheItemInterface
+ */
+ private $balance;
+
+ /**
+ * @var CacheItemInterface
+ */
+ private $lastTick;
+
+ /**
+ * @var float
+ */
+ private $creditsPerNanosecond = 0;
+
+ /**
+ * @var float
+ */
+ private $maxBalance = 0;
+
+ /**
+ * RateLimiter constructor.
+ *
+ * @param CacheItemPoolInterface $cache
+ * @param string $currentBalanceKey key of current balance value in $cache
+ * @param string $lastTickKey key of last tick value in $cache
+ * @throws \Psr\Cache\InvalidArgumentException
+ */
+ public function __construct(
+ CacheItemPoolInterface $cache,
+ string $currentBalanceKey,
+ string $lastTickKey
+ ) {
+ $this->cache = $cache;
+ $this->balance = $this->cache->getItem($currentBalanceKey);
+ $this->lastTick = $this->cache->getItem($lastTickKey);
+ }
+
+ /**
+ * @param $itemCost
+ * @return bool
+ */
+ public function checkCredit($itemCost)
+ {
+ if (!$this->creditsPerNanosecond) {
+ return false;
+ }
+
+ list($lastTick, $balance) = $this->getState();
+
+ if (!$lastTick) {
+ $this->saveState(hrtime(true), 0);
+ return true;
+ }
+
+ $currentTick = hrtime(true);
+ $elapsedTime = $currentTick - $lastTick;
+ $balance += $elapsedTime * $this->creditsPerNanosecond;
+ if ($balance > $this->maxBalance) {
+ $balance = $this->maxBalance;
+ }
+
+ $result = false;
+ if ($balance >= $itemCost) {
+ $balance -= $itemCost;
+ $result = true;
+ }
+
+ $this->saveState($currentTick, $balance);
+
+ return $result;
+ }
+
+
+ /**
+ * Initializes limiter costs and boundaries
+ *
+ * @param float $creditsPerNanosecond
+ * @param float $maxBalance
+ */
+ public function initialize(float $creditsPerNanosecond, float $maxBalance)
+ {
+ $this->creditsPerNanosecond = $creditsPerNanosecond;
+ $this->maxBalance = $maxBalance;
+ }
+
+ /**
+ * Method loads last tick and current balance from cache
+ *
+ * @return array [$lastTick, $balance]
+ */
+ private function getState() : array
+ {
+ return [
+ $this->lastTick->get(),
+ $this->balance->get()
+ ];
+ }
+
+ /**
+ * Method saves last tick and current balance into cache
+ *
+ * @param integer $lastTick
+ * @param float $balance
+ */
+ private function saveState($lastTick, $balance)
+ {
+ $this->lastTick->set($lastTick);
+ $this->balance->set($balance);
+ $this->cache->saveDeferred($this->lastTick);
+ $this->cache->saveDeferred($this->balance);
+ $this->cache->commit();
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Codec/TextCodecTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Codec/TextCodecTest.php
new file mode 100644
index 000000000..79a1dd96f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Codec/TextCodecTest.php
@@ -0,0 +1,170 @@
+<?php
+
+namespace Jaeger\Tests\Codec;
+
+use Exception;
+use const Jaeger\BAGGAGE_HEADER_PREFIX;
+use Jaeger\Codec\TextCodec;
+use const Jaeger\DEBUG_ID_HEADER_KEY;
+use Jaeger\SpanContext;
+use const Jaeger\TRACE_ID_HEADER;
+use PHPUnit\Framework\TestCase;
+
+class TextCodecTest extends TestCase
+{
+ /** @var TextCodec */
+ private $textCodec;
+
+ public function setUp(): void
+ {
+ $this->textCodec = new TextCodec();
+ }
+
+ public function testCanInjectSimpleContextInCarrier(): void
+ {
+ $context = new SpanContext('trace-id', 'span-id', null, null);
+ $carrier = [];
+
+ $this->textCodec->inject($context, $carrier);
+
+ $this->assertCount(1 , $carrier);
+ $this->assertArrayHasKey(TRACE_ID_HEADER, $carrier);
+ }
+
+ /**
+ * @dataProvider contextDataProvider
+ * @param bool $urlEncode
+ * @param $baggage
+ */
+ public function testCanInjectContextBaggageInCarrier(bool $urlEncode, $baggage, $injectedBaggage): void
+ {
+ $carrier = [];
+
+ $context = new SpanContext('trace-id', 'span-id', null, null, $baggage);
+ $textCodec = new TextCodec($urlEncode);
+ $textCodec->inject($context, $carrier);
+
+ $this->assertCount(1 + count($baggage) , $carrier);
+ $this->assertArrayHasKey(TRACE_ID_HEADER, $carrier);
+ foreach ($injectedBaggage as $key => $value) {
+ $this->assertArrayHasKey(BAGGAGE_HEADER_PREFIX . $key, $carrier);
+ $this->assertEquals($carrier[BAGGAGE_HEADER_PREFIX . $key], $value);
+ }
+ }
+
+ public function contextDataProvider()
+ {
+ return [
+ [false, ['baggage-1' => 'baggage value'], ['baggage-1' => 'baggage value']],
+ [false, ['baggage-1' => 'https://testdomain.sk'], ['baggage-1' => 'https://testdomain.sk']],
+ [true, ['baggage-1' => 'https://testdomain.sk'], ['baggage-1' => 'https%3A%2F%2Ftestdomain.sk']],
+ ];
+ }
+
+ /**
+ * @dataProvider carrierDataProvider
+ * @param $urlEncode
+ * @param $carrier
+ * @param $traceId
+ * @param $spanId
+ * @param $parentId
+ * @param $flags
+ * @param $baggage
+ * @throws \Exception
+ */
+ public function testSpanContextParsingFromHeader($urlEncode, $carrier, $traceId, $spanId, $parentId, $flags, $baggage): void
+ {
+ $textCodec = new TextCodec($urlEncode);
+ $spanContext = $textCodec->extract($carrier);
+
+ $this->assertEquals($traceId, $spanContext->getTraceId());
+ $this->assertEquals($spanId, $spanContext->getSpanId());
+ $this->assertEquals($parentId, $spanContext->getParentId());
+ $this->assertEquals($flags, $spanContext->getFlags());
+ $this->assertCount(count($baggage), $spanContext->getBaggage() ? $spanContext->getBaggage() : []);
+ foreach ($baggage as $key => $value) {
+ $this->assertEquals($value, $spanContext->getBaggageItem($key));
+ }
+ }
+
+ public function carrierDataProvider(): array
+ {
+ return [
+ [
+ false,
+ [
+ TRACE_ID_HEADER => '32834e4115071776:f7802330248418d:f123456789012345:1'
+ ],
+ "3639838965278119798",
+ "1114643325879075213",
+ "-1070935975401544891",
+ 1,
+ []
+ ],
+ [
+ false,
+ [
+ TRACE_ID_HEADER => '32834e4115071776:f7802330248418d:f123456789012345:1',
+ BAGGAGE_HEADER_PREFIX . 'baggage-1' => 'https://testdomain.sk',
+ ],
+ "3639838965278119798",
+ "1114643325879075213",
+ "-1070935975401544891",
+ 1,
+ ['baggage-1' => 'https://testdomain.sk']
+ ],
+ [
+ true,
+ [
+ TRACE_ID_HEADER => '32834e4115071776:f7802330248418d:f123456789012345:1',
+ BAGGAGE_HEADER_PREFIX . 'baggage-1' => 'https%3A%2F%2Ftestdomain.sk',
+ ],
+ "3639838965278119798",
+ "1114643325879075213",
+ "-1070935975401544891",
+ 1,
+ ['baggage-1' => 'https://testdomain.sk']
+ ]
+ ];
+ }
+
+ public function testBaggageWithoutTraceContext(): void
+ {
+ $carrier = [BAGGAGE_HEADER_PREFIX.'test' => 'some data'];
+
+ $this->expectException(Exception::class);
+ $this->expectExceptionMessage('baggage without trace ctx');
+
+ $this->textCodec->extract($carrier);
+ }
+
+ public function testInvalidSpanContextParsingFromHeader(): void
+ {
+ $carrier = [TRACE_ID_HEADER => 'invalid_data'];
+
+ $this->expectException(Exception::class);
+ $this->expectExceptionMessage('Malformed tracer state string.');
+
+ $this->textCodec->extract($carrier);
+ }
+
+ public function testExtractDebugSpanContext(): void
+ {
+ $carrier = [DEBUG_ID_HEADER_KEY => 'debugId'];
+
+ $spanContext = $this->textCodec->extract($carrier);
+
+ $this->assertEquals('debugId', $spanContext->getDebugId());
+ $this->assertNull($spanContext->getTraceId());
+ $this->assertNull($spanContext->getSpanId());
+ $this->assertNull($spanContext->getParentId());
+ $this->assertNull($spanContext->getFlags());
+ }
+
+
+ public function testExtractEmptySpanContext(): void
+ {
+ $spanContext = $this->textCodec->extract([]);
+ $this->assertNull($spanContext);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Codec/ZipkinCodecTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Codec/ZipkinCodecTest.php
new file mode 100644
index 000000000..047caac2e
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Codec/ZipkinCodecTest.php
@@ -0,0 +1,104 @@
+<?php
+
+namespace Jaeger\Tests\Codec;
+
+use Jaeger\Codec\ZipkinCodec;
+use Jaeger\SpanContext;
+use PHPUnit\Framework\TestCase;
+use const Jaeger\DEBUG_FLAG;
+use const Jaeger\SAMPLED_FLAG;
+
+class ZipkinCodecTest extends TestCase
+{
+ /** @var ZipkinCodec */
+ private $codec;
+
+ function setUp(): void
+ {
+ $this->codec = new ZipkinCodec;
+ }
+
+ function testInject()
+ {
+ // Given
+ $traceId = 123;
+ $spanId = 456;
+ $parentId = 789;
+
+ $spanContext = new SpanContext(
+ $traceId,
+ $spanId,
+ $parentId,
+ SAMPLED_FLAG
+ );
+ $carrier = [];
+
+ // When
+ $this->codec->inject($spanContext, $carrier);
+
+ // Then
+ $this->assertEquals('7b', $carrier['X-B3-TraceId']);
+ $this->assertEquals('1c8', $carrier['X-B3-SpanId']);
+ $this->assertEquals('315', $carrier['X-B3-ParentSpanId']);
+ $this->assertSame(1, $carrier['X-B3-Flags']);
+ }
+
+ function testExtract()
+ {
+ // Given
+ $carrier = [
+ 'x-b3-traceid' => 'a53bf337d7e455e1',
+ 'x-b3-spanid' => '153bf227d1f455a1',
+ 'x-b3-parentspanid' => 'a53bf337d7e455e1',
+ 'x-b3-flags' => '1',
+ ];
+
+ // When
+ $spanContext = $this->codec->extract($carrier);
+
+ // Then
+ $this->assertEquals(new SpanContext(
+ '-6540366612654696991',
+ '1530082751262512545',
+ '-6540366612654696991',
+ DEBUG_FLAG
+ ), $spanContext);
+ }
+
+ function testExtractWithoutParentSpanId()
+ {
+ // Given
+ $carrier = [
+ 'x-b3-traceid' => '8d824d69da5f50d9',
+ 'x-b3-spanid' => '8d824d69da5f50d9',
+ 'x-b3-flags' => '1',
+ ];
+
+ // When
+ $spanContext = $this->codec->extract($carrier);
+
+ // Then
+ $this->assertEquals(new SpanContext(
+ '-8249946450358742823',
+ '-8249946450358742823',
+ '0',
+ DEBUG_FLAG
+ ), $spanContext);
+ }
+
+ function testExtractInvalidHeader()
+ {
+ // Given
+ $carrier = [
+ 'x-b3-traceid' => 'zzzz',
+ 'x-b3-spanid' => '463ac35c9f6413ad48485a3953bb6124',
+ 'x-b3-flags' => '1',
+ ];
+
+ // When
+ $spanContext = $this->codec->extract($carrier);
+
+ // Then
+ $this->assertEquals(null, $spanContext);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ConfigTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ConfigTest.php
new file mode 100644
index 000000000..da1a9781e
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ConfigTest.php
@@ -0,0 +1,257 @@
+<?php
+
+namespace Jaeger\Tests;
+
+use Exception;
+use Jaeger\Config;
+use Jaeger\Reporter\ReporterInterface;
+use Jaeger\Sampler\SamplerInterface;
+use Jaeger\Tracer;
+use OpenTracing\GlobalTracer;
+use PHPUnit\Framework\TestCase;
+use const Jaeger\SAMPLER_TYPE_CONST;
+
+class ConfigTest extends TestCase
+{
+ /**
+ * @var Config
+ */
+ private $config;
+
+ /**
+ * @var ReporterInterface
+ */
+ private $reporter;
+
+ /**
+ * @var SamplerInterface
+ */
+ private $sampler;
+
+ /**
+ * @var string
+ */
+ private $serviceName = 'test-service';
+
+ function setUp(): void
+ {
+ $this->config = new Config([], $this->serviceName);
+ $this->reporter = $this->createMock(ReporterInterface::class);
+ $this->sampler = $this->createmock(SamplerInterface::class);
+ }
+
+ function testCreateTracer()
+ {
+ $tracer = $this->config->createTracer($this->reporter, $this->sampler);
+
+ $this->assertEquals(Tracer::class, get_class($tracer));
+ $this->assertEquals($this->serviceName, $tracer->getServiceName());
+ }
+
+ function testThrowExceptionWhenServiceNameIsNotDefined()
+ {
+ $this->expectException(Exception::class);
+ $this->expectExceptionMessage('service_name required in the config or param.');
+
+ new Config([]);
+ }
+
+ function testSetServiceNameFromConfig()
+ {
+ $config = new Config(['service_name' => 'test-service-name-from-config']);
+
+ $serviceName = $config->getServiceName();
+
+ $this->assertEquals('test-service-name-from-config', $serviceName);
+ }
+
+ /**
+ * @test
+ */
+ public function shouldSetGlobalTracerAfterInitialize()
+ {
+ //given
+ $config = new Config(['service_name' => 'test-service-name']);
+
+ //when
+ $config->initializeTracer();
+
+ //then
+ $tracer = GlobalTracer::get();
+ $this->assertInstanceOf(Tracer::class, $tracer);
+ }
+
+ /** @test */
+ public function shouldThrowExceptionWhenCreatingNotSupportedSampler()
+ {
+ $config = new Config(['service_name' => 'test-service-name', 'sampler' => ['type' => 'unsupportedSampler']]);
+
+ $this->expectException(Exception::class);
+ $this->expectExceptionMessage('Unknown sampler type unsupportedSampler');
+
+ $config->initializeTracer();
+ }
+
+ /** @test */
+ public function shouldThrowExceptionWhenCreatingRateLimitingSamplerWithoutCacheComponent()
+ {
+ $config = new Config([
+ 'service_name' => 'test-service-name',
+ 'sampler' => ['type' => \Jaeger\SAMPLER_TYPE_RATE_LIMITING]
+ ]);
+
+ $this->expectException(Exception::class);
+ $this->expectExceptionMessage('You cannot use RateLimitingSampler without cache component');
+
+ $config->initializeTracer();
+ }
+
+ /** @test */
+ public function shouldPassDifferentDispatchMode() {
+ foreach (Config::getAvailableDispatchModes() as $dispatchMode) {
+ $config = new Config(
+ [
+ 'sampler' => [
+ 'type' => SAMPLER_TYPE_CONST,
+ 'param' => true,
+ ],
+ 'logging' => false,
+ "local_agent" => [
+ "reporting_host" => "localhost",
+ ],
+ 'dispatch_mode' => $dispatchMode,
+ ],
+ 'your-app-name'
+ );
+ $config->initializeTracer();
+ $this->expectNotToPerformAssertions();
+ }
+ }
+
+ /** @test */
+ public function shouldPassConfiguredTagsToTracer()
+ {
+ $tags = [
+ 'bar' => 'a-value',
+ 'other.tag' => 'foo',
+ ];
+
+ $config = new Config([
+ 'sampler' => [
+ 'type' => SAMPLER_TYPE_CONST,
+ 'param' => true,
+ ],
+ 'service_name' => 'test-service-name',
+ 'tags' => $tags,
+ ]);
+
+ $tracer = $config->initializeTracer();
+ $span = $tracer->startSpan('test-span');
+ $spanTags = $span->getTags();
+
+ foreach ($tags as $name => $value) {
+ $this->assertArrayHasKey($name, $spanTags, "Tag '$name' should be set on span");
+ $this->assertEquals($value, $spanTags[$name]->value, "Tag '$name' should have configured value");
+ }
+ }
+
+ /**
+ * @test
+ * @dataProvider shouldSetConfigPropertiesFromEnvVarsProvider
+ */
+ public function shouldSetConfigPropertiesFromEnvVars($varName, $varVal, $initialConfig, $valueGetter, $expectedVal)
+ {
+ $_ENV[$varName] = $varVal;
+
+ $config = new Config([]);
+ $configProperty = (new \ReflectionObject($config))->getProperty('config');
+ $configProperty->setAccessible('true');
+ $configArray = $configProperty->getValue($config);
+
+ $this->assertSame($expectedVal, $valueGetter($configArray));
+ }
+
+ /**
+ * @test
+ * @dataProvider shouldSetConfigPropertiesFromEnvVarsProvider
+ */
+ public function shouldNotSetConfigPropertiesFromEnvVars($varName, $varVal, $initialConfig, $valueGetter, $expectedVal)
+ {
+ $_ENV[$varName] = $varVal;
+
+ $config = new Config($initialConfig);
+ $configProperty = (new \ReflectionObject($config))->getProperty('config');
+ $configProperty->setAccessible('true');
+ $configArray = $configProperty->getValue($config);
+
+ $this->assertNotEquals($expectedVal, $valueGetter($configArray));
+ }
+
+ /**
+ * 0 -> varName
+ * 1 -> varVal
+ * 2 -> initialConfig
+ * 3 -> valueGetter
+ * 4 -> expectedVal
+ */
+ public function shouldSetConfigPropertiesFromEnvVarsProvider() {
+ return [
+ [
+ 'JAEGER_SERVICE_NAME',
+ 'some-str',
+ ['service_name' => 'some-other-str'],
+ function ($a) { return $a['service_name']; },
+ 'some-str',
+ ],
+ [
+ 'JAEGER_TAGS',
+ 'some-str',
+ ['tags' => 'some-other-str'],
+ function ($a) { return $a['tags']; },
+ 'some-str',
+ ],
+ [
+ 'JAEGER_AGENT_HOST',
+ 'some-str',
+ ['local_agent' => ['reporting_host' => 'some-other-str']],
+ function ($a) { return $a['local_agent']['reporting_host'];},
+ 'some-str',
+ ],
+ [
+ 'JAEGER_AGENT_PORT',
+ '2222',
+ ['local_agent' => ['reporting_port' => 1111]],
+ function ($a) { return $a['local_agent']['reporting_port']; },
+ 2222,
+ ],
+ [
+ 'JAEGER_REPORTER_LOG_SPANS',
+ 'true',
+ ['logging' => false],
+ function ($a) { return $a['logging']; },
+ true,
+ ],
+ [
+ 'JAEGER_REPORTER_MAX_QUEUE_SIZE',
+ '2222',
+ ['max_buffer_length' => 1111],
+ function ($a) { return $a['max_buffer_length']; },
+ 2222,
+ ],
+ [
+ 'JAEGER_SAMPLER_TYPE',
+ 'some-str',
+ ['sampler' => ['type' => 'some-other-str']],
+ function ($a) { return $a['sampler']['type']; },
+ 'some-str',
+ ],
+ [
+ 'JAEGER_SAMPLER_PARAM',
+ 'some-str',
+ ['sampler' => ['param' => 'some-other-str']],
+ function ($a) { return $a['sampler']['param']; },
+ 'some-str',
+ ],
+ ];
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Logger/StackLogger.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Logger/StackLogger.php
new file mode 100644
index 000000000..fd8789dc3
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Logger/StackLogger.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Jaeger\Tests\Logger;
+
+use Psr\Log\LoggerTrait;
+
+class StackLogger implements \Psr\Log\LoggerInterface
+{
+ /** @var array */
+ protected $messagesStack = [];
+
+ use LoggerTrait;
+
+ public function log($level, $message, array $context = array()): void
+ {
+ $this->messagesStack[] = $message;
+ }
+
+ public function getLastMessage() {
+ return array_pop($this->messagesStack);
+ }
+
+ public function getMessagesCount() {
+ return count($this->messagesStack);
+ }
+
+ public function clear() {
+ $this->messagesStack = [];
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Mapper/SpanToJaegerMapperTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Mapper/SpanToJaegerMapperTest.php
new file mode 100644
index 000000000..d536cb63a
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Mapper/SpanToJaegerMapperTest.php
@@ -0,0 +1,169 @@
+<?php
+
+use Jaeger\Mapper\SpanToJaegerMapper;
+use Jaeger\Reporter\NullReporter;
+use Jaeger\Sampler\ConstSampler;
+use Jaeger\Span;
+use Jaeger\SpanContext;
+use Jaeger\Thrift\TagType;
+use Jaeger\Tracer;
+use const Jaeger\SAMPLED_FLAG;
+use const OpenTracing\Tags\COMPONENT;
+use const OpenTracing\Tags\PEER_HOST_IPV4;
+use const OpenTracing\Tags\PEER_PORT;
+use const OpenTracing\Tags\PEER_SERVICE;
+use const OpenTracing\Tags\SPAN_KIND;
+use const OpenTracing\Tags\SPAN_KIND_RPC_CLIENT;
+
+class SpanToJaegerMapperTest extends \PHPUnit\Framework\TestCase
+{
+ private $serviceName = "test-service";
+ /**
+ * @var Tracer
+ */
+ private $tracer;
+
+ /**
+ * @var SpanContext
+ */
+ private $context;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setUp(): void
+ {
+ $this->tracer = new Tracer($this->serviceName, new NullReporter, new ConstSampler);
+ $this->context = new SpanContext(0, 0, 0, SAMPLED_FLAG);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function tearDown(): void
+ {
+ $this->tracer = null;
+ $this->context = null;
+ }
+
+ /** @test */
+ public function shouldProperlyInitializeAtConstructTime(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+ $span->setTags([
+ "tag-bool1" => true,
+ "tag-bool2" => false,
+ "tag-int" => 1234567,
+ "tag-float" => 1.23456,
+ "tag-string" => "hello-world"
+ ]);
+
+ $mapper = new SpanToJaegerMapper();
+ $thriftSpan = $mapper->mapSpanToJaeger($span);
+
+ $index = 0;
+ $this->assertEquals($thriftSpan->tags[$index]->key, "component");
+ $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::STRING);
+ $this->assertEquals($thriftSpan->tags[$index]->vStr, $this->serviceName);
+ $index++;
+
+ $this->assertEquals($thriftSpan->tags[$index]->key, "tag-bool1");
+ $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::BOOL);
+ $this->assertEquals($thriftSpan->tags[$index]->vBool, true);
+ $index++;
+
+ $this->assertEquals($thriftSpan->tags[$index]->key, "tag-bool2");
+ $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::BOOL);
+ $this->assertEquals($thriftSpan->tags[$index]->vBool, false);
+ $index++;
+
+ $this->assertEquals($thriftSpan->tags[$index]->key, "tag-int");
+ $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::LONG);
+ $this->assertEquals($thriftSpan->tags[$index]->vLong, 1234567);
+ $index++;
+
+ $this->assertEquals($thriftSpan->tags[$index]->key, "tag-float");
+ $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::DOUBLE);
+ $this->assertEquals($thriftSpan->tags[$index]->vDouble, 1.23456);
+ $index++;
+
+ $this->assertEquals($thriftSpan->tags[$index]->key, "tag-string");
+ $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::STRING);
+ $this->assertEquals($thriftSpan->tags[$index]->vStr, "hello-world");
+ $index++;
+ }
+
+ /**
+ * @dataProvider specialTagProvider
+ * @param array<string, mixed> $tags
+ * @return void
+ */
+ public function testSpecialTagsAreAdded(array $tags): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+ $span->setTags($tags);
+
+ // The component tag is always added, even if it's not specified in tags
+ $expectedTagValues = array_merge([COMPONENT => $this->serviceName], $tags);
+
+ $mapper = new SpanToJaegerMapper();
+ $thriftSpan = $mapper->mapSpanToJaeger($span);
+
+ $foundTags = [];
+
+ foreach ($thriftSpan->tags as $tag) {
+ $foundTags[] = $tag->key;
+
+ switch ($tag->key) {
+ case PEER_SERVICE:
+ case PEER_HOST_IPV4:
+ case SPAN_KIND:
+ case COMPONENT:
+ $this->assertEquals(TagType::STRING, $tag->vType, 'Incorrect tag value type');
+ $this->assertEquals($expectedTagValues[$tag->key], $tag->vStr, 'Incorrect tag value');
+ break;
+ case PEER_PORT:
+ $this->assertEquals(TagType::LONG, $tag->vType, 'Incorrect tag value type');
+ $this->assertEquals($expectedTagValues[$tag->key], $tag->vLong, 'Incorrect tag value');
+ break;
+ }
+ }
+
+ $this->assertEqualsCanonicalizing(array_keys($expectedTagValues), $foundTags, 'Some of the tags are missing');
+ }
+
+ public function specialTagProvider(): array
+ {
+ return [
+ [
+ [
+ 'bool_tag' => true,
+ PEER_SERVICE => 'my_service',
+ PEER_HOST_IPV4 => '127.0.0.1',
+ PEER_PORT => 443,
+ SPAN_KIND => SPAN_KIND_RPC_CLIENT,
+ COMPONENT => 'grpc',
+ ],
+ ],
+ [
+ [
+ 'int_tag' => 5,
+ PEER_HOST_IPV4 => '192.168.0.1',
+ PEER_PORT => 80,
+ ],
+ ],
+ [
+ [
+ 'string_tag' => 'testing-tag',
+ PEER_PORT => 80,
+ COMPONENT => 'grpc',
+ ],
+ ],
+ [
+ [
+ 'string_tag' => 'testing-tag',
+ ],
+ ],
+ ];
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/CompositeReporterTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/CompositeReporterTest.php
new file mode 100644
index 000000000..ef95ebfe7
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/CompositeReporterTest.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace Jaeger\Tests\Reporter;
+
+use Jaeger\Reporter\CompositeReporter;
+use Jaeger\Reporter\ReporterInterface;
+use Jaeger\Span;
+use PHPUnit\Framework\TestCase;
+
+class CompositeReporterTest extends TestCase
+{
+ /** @var CompositeReporter */
+ private $reporter;
+
+ /** @var ReporterInterface|\PHPUnit\Framework\MockObject\MockObject */
+ private $childReporter1;
+
+ /** @var ReporterInterface|\PHPUnit\Framework\MockObject\MockObject */
+ private $childReporter2;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setUp(): void
+ {
+ $this->childReporter1 = $this->createMock(ReporterInterface::class);
+ $this->childReporter2 = $this->createMock(ReporterInterface::class);
+
+ $this->reporter = new CompositeReporter($this->childReporter1, $this->childReporter2);
+ }
+
+ /** @test */
+ public function shouldReportSpan()
+ {
+ /** @var \Jaeger\Span|\PHPUnit\Framework\MockObject\MockObject $span */
+ $span = $this->createMock(Span::class);
+
+ $this->childReporter1->expects($this->once())->method('reportSpan')->with($span);
+ $this->childReporter2->expects($this->once())->method('reportSpan')->with($span);
+
+ $this->reporter->reportSpan($span);
+ }
+
+ /** @test */
+ public function shouldCloseReporter()
+ {
+ $this->childReporter1->expects($this->once())->method('close');
+ $this->childReporter2->expects($this->once())->method('close');
+
+ $this->reporter->close();
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/InMemoryReporterTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/InMemoryReporterTest.php
new file mode 100644
index 000000000..966a62fa4
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/InMemoryReporterTest.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Jaeger\Tests\Reporter;
+
+use Jaeger\Reporter\InMemoryReporter;
+use Jaeger\Span;
+use PHPUnit\Framework\TestCase;
+
+class InMemoryReporterTest extends TestCase
+{
+ /** @test */
+ public function shouldReportSpan()
+ {
+ /** @var \Jaeger\Span|\PHPUnit\Framework\MockObject\MockObject $span */
+ $span = $this->createMock(Span::class);
+ $reporter = new InMemoryReporter();
+
+ $reporter->reportSpan($span);
+ $reporter->close();
+
+ $spans = $reporter->getSpans();
+ $this->assertEquals([$span], $spans);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/LoggingReporterTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/LoggingReporterTest.php
new file mode 100644
index 000000000..dc7c490d2
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/LoggingReporterTest.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Jaeger\Tests\Reporter;
+
+use Jaeger\Reporter\LoggingReporter;
+use Jaeger\Span;
+use PHPUnit\Framework\TestCase;
+use Psr\Log\NullLogger;
+
+class LoggingReporterTest extends TestCase
+{
+ /** @test */
+ public function shouldReportSpan()
+ {
+ /**
+ * @var NullLogger|\PHPUnit\Framework\MockObject\MockObject v
+ * @var Span|\PHPUnit\Framework\MockObject\MockObject $span
+ */
+ $logger = $this->createMock(NullLogger::class);
+ $span = $this->createMock(Span::class);
+
+ $reporter = new LoggingReporter($logger);
+
+ $logger->expects($this->once())
+ ->method('debug')
+ ->with($this->stringStartsWith('Reporting span'));
+
+ $reporter->reportSpan($span);
+ $reporter->close();
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/NullReporterTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/NullReporterTest.php
new file mode 100644
index 000000000..e6a66cb8a
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/NullReporterTest.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Jaeger\Tests\Reporter;
+
+use Jaeger\Reporter\NullReporter;
+use Jaeger\Span;
+use PHPUnit\Framework\TestCase;
+
+class NullReporterTest extends TestCase
+{
+ /**
+ * Nothing to test because NullReporter doing nothing.
+ *
+ * @test
+ */
+ public function shouldReportSpan()
+ {
+ /** @var \Jaeger\Span|\PHPUnit\Framework\MockObject\MockObject $span */
+ $span = $this->createMock(Span::class);
+
+ $reporter = new NullReporter();
+
+ $reporter->reportSpan($span);
+ $reporter->close();
+
+ // Only needed to avoid PhpUnit message: "This test did not perform any assertions"
+ $this->assertTrue(true);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/RemoteReporterTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/RemoteReporterTest.php
new file mode 100644
index 000000000..0b85f06d0
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Reporter/RemoteReporterTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Jaeger\Tests\Reporter;
+
+use Jaeger\Reporter\RemoteReporter;
+use Jaeger\Sender\UdpSender;
+use Jaeger\Span;
+use PHPUnit\Framework\TestCase;
+
+class RemoteReporterTest extends TestCase
+{
+ /** @var RemoteReporter */
+ private $reporter;
+
+ /** @var UdpSender|\PHPUnit\Framework\MockObject\MockObject */
+ private $transport;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setUp(): void
+ {
+ $this->transport = $this->createMock(UdpSender::class);
+ $this->reporter = new RemoteReporter($this->transport);
+ }
+
+ /** @test */
+ public function shouldReportSpan()
+ {
+ /** @var Span|\PHPUnit\Framework\MockObject\MockObject $span */
+ $span = $this->createMock(Span::class);
+
+ $this->transport->expects($this->once())->method('append')->with($span);
+
+ $this->reporter->reportSpan($span);
+ }
+
+ /** @test */
+ public function shouldCloseReporter()
+ {
+ $this->transport->expects($this->once())->method('flush');
+ $this->transport->expects($this->once())->method('close');
+
+ $this->reporter->close();
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/ConstSamplerTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/ConstSamplerTest.php
new file mode 100644
index 000000000..85cb80504
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/ConstSamplerTest.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Jaeger\Tests\Sampler;
+
+use Jaeger\Sampler\ConstSampler;
+use PHPUnit\Framework\TestCase;
+use const Jaeger\SAMPLER_PARAM_TAG_KEY;
+use const Jaeger\SAMPLER_TYPE_CONST;
+use const Jaeger\SAMPLER_TYPE_TAG_KEY;
+
+class ConstSamplerTest extends TestCase
+{
+ /**
+ * @test
+ * @dataProvider samplerProvider
+ * @param bool $decision
+ * @param mixed $traceId
+ */
+ public function shouldDetermineWhetherOrTraceShouldBeSampled($decision, $traceId)
+ {
+ $sampler = new ConstSampler($decision);
+
+ list($sampled, $tags) = $sampler->isSampled($traceId);
+
+ $this->assertEquals($decision, $sampled);
+ $this->assertEquals([
+ SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_CONST,
+ SAMPLER_PARAM_TAG_KEY => $decision,
+ ], $tags);
+
+ $sampler->close();
+ }
+
+ public function samplerProvider()
+ {
+ return [
+ [true, 1],
+ [true, PHP_INT_MAX],
+ [false, 1],
+ [false, PHP_INT_MAX],
+ ];
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/ProbablisticSamplerTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/ProbablisticSamplerTest.php
new file mode 100644
index 000000000..2840ebf8c
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/ProbablisticSamplerTest.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace Jaeger\Tests\Sampler;
+
+use Jaeger\Sampler\ProbabilisticSampler;
+use OutOfBoundsException;
+use PHPUnit\Framework\TestCase;
+use const Jaeger\SAMPLER_PARAM_TAG_KEY;
+use const Jaeger\SAMPLER_TYPE_PROBABILISTIC;
+use const Jaeger\SAMPLER_TYPE_TAG_KEY;
+
+class ProbablisticSamplerTest extends TestCase
+{
+ /**
+ * @test
+ * @dataProvider samplerProvider
+ * @param float $rate
+ * @param mixed $traceId
+ * @param bool $decision
+ */
+ public function shouldDetermineWhetherOrTraceShouldBeSampled($rate, $traceId, $decision)
+ {
+ $sampler = new ProbabilisticSampler($rate);
+
+ list($sampled, $tags) = $sampler->isSampled($traceId);
+
+ $this->assertEquals($decision, $sampled);
+ $this->assertEquals([
+ SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_PROBABILISTIC,
+ SAMPLER_PARAM_TAG_KEY => $rate,
+ ], $tags);
+
+ $sampler->close();
+ }
+
+ public function samplerProvider()
+ {
+ return [
+ [1.0, PHP_INT_MAX-1, true],
+ [0, 0, false],
+ [0.5, PHP_INT_MIN + 10, true],
+ [0.5, PHP_INT_MAX - 10, false],
+ ];
+ }
+
+ /**
+ * @test
+ * @dataProvider rateProvider
+ * @param mixed $rate
+ */
+ public function shouldThrowOutOfBoundsExceptionInCaseOfInvalidRate($rate)
+ {
+ $this->expectException(OutOfBoundsException::class);
+ $this->expectExceptionMessage('Sampling rate must be between 0.0 and 1.0.');
+
+ new ProbabilisticSampler($rate);
+ }
+
+ public function rateProvider()
+ {
+ return [
+ [1.1],
+ [-0.1],
+ [PHP_INT_MAX],
+ [PHP_INT_MIN],
+ ];
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/RateLimitSamplerTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/RateLimitSamplerTest.php
new file mode 100644
index 000000000..4f6b8a632
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sampler/RateLimitSamplerTest.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace Jaeger\Tests\Sampler;
+
+use Cache\Adapter\PHPArray\ArrayCachePool;
+use Jaeger\Sampler\RateLimitingSampler;
+use Jaeger\Util\RateLimiter;
+use PHPUnit\Framework\TestCase;
+use const Jaeger\SAMPLER_PARAM_TAG_KEY;
+use const Jaeger\SAMPLER_TYPE_RATE_LIMITING;
+use const Jaeger\SAMPLER_TYPE_TAG_KEY;
+
+class RateLimitSamplerTest extends TestCase
+{
+ /**
+ * @test
+ * @dataProvider maxRateProvider
+ * @param integer $maxTracesPerSecond
+ * @param bool $decision
+ * @throws
+ */
+ public function shouldDetermineWhetherOrTraceShouldBeSampled($maxTracesPerSecond, $decision)
+ {
+ $sampler = new RateLimitingSampler(
+ $maxTracesPerSecond,
+ new RateLimiter(new ArrayCachePool(), 'balance', 'lastTick')
+ );
+
+ $sampler->isSampled();
+ list($sampled, $tags) = $sampler->isSampled();
+ $this->assertEquals($decision, $sampled);
+ $this->assertEquals([
+ SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_RATE_LIMITING,
+ SAMPLER_PARAM_TAG_KEY => $maxTracesPerSecond,
+ ], $tags);
+
+ $sampler->close();
+ }
+
+ public function maxRateProvider()
+ {
+ return [
+ [1000000, true],
+ [1, false],
+ [0, false],
+ ];
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ScopeManagerTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ScopeManagerTest.php
new file mode 100644
index 000000000..43a303642
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ScopeManagerTest.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Jaeger\Tests;
+
+use Jaeger\ScopeManager;
+use Jaeger\Span;
+use PHPUnit\Framework\TestCase;
+
+class ScopeManagerTest extends TestCase
+{
+ /**
+ * @var ScopeManager
+ */
+ private $scopeManager;
+
+ function setUp(): void
+ {
+ $this->scopeManager = new ScopeManager();
+ }
+
+ function testActivate()
+ {
+ $span = $this->createMock(Span::class);
+
+ $scope = $this->scopeManager->activate($span, true);
+
+ $this->assertEquals($scope->getSpan(), $span);
+ }
+
+ function testAbleGetActiveScope()
+ {
+ $span = $this->createMock(Span::class);
+
+ $this->assertNull($this->scopeManager->getActive());
+ $scope = $this->scopeManager->activate($span, false);
+
+ $this->assertEquals($scope, $this->scopeManager->getActive());
+ }
+
+ function testScopeClosingDeactivates()
+ {
+ $span = $this->createMock(Span::class);
+
+ $scope = $this->scopeManager->activate($span, false);
+ $scope->close();
+
+ $this->assertNull($this->scopeManager->getActive());
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ScopeTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ScopeTest.php
new file mode 100644
index 000000000..e36a8de3d
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ScopeTest.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Jaeger\Tests;
+
+use Jaeger\Scope;
+use Jaeger\ScopeManager;
+use Jaeger\Span;
+use PHPUnit\Framework\TestCase;
+
+class ScopeTest extends TestCase
+{
+ /**
+ * @var ScopeManager|\PHPUnit\Framework\MockObject\MockObject
+ */
+ private $scopeManager;
+
+ /**
+ * @var Span|\PHPUnit\Framework\MockObject\MockObject
+ */
+ private $span;
+
+ function setUp(): void
+ {
+ $this->scopeManager = $this->createMock(ScopeManager::class);
+ $this->span = $this->createMock(Span::class);
+ }
+
+ function testCloseDoNotFinishSpanOnClose()
+ {
+ $scope = new Scope($this->scopeManager, $this->span, false);
+
+ $this->scopeManager->method('getActive')->willReturn($scope);
+ $this->scopeManager->expects($this->once())->method('getActive');
+ $this->span->expects($this->never())->method('finish');
+ $this->scopeManager->expects($this->once())->method('setActive');
+
+ $scope->close();
+ }
+
+ function testCloseFinishSpanOnClose()
+ {
+ $scope = new Scope($this->scopeManager, $this->span, true);
+
+ $this->scopeManager->method('getActive')->willReturn($scope);
+ $this->scopeManager->expects($this->once())->method('getActive');
+ $this->span->expects($this->once())->method('finish');
+ $this->scopeManager->expects($this->once())->method('setActive');
+
+ $scope->close();
+ }
+
+ function testGetSpan()
+ {
+ $scope = new Scope($this->scopeManager, $this->span, false);
+
+ $this->assertEquals($this->span, $scope->getSpan());
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/JaegerThriftSenderTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/JaegerThriftSenderTest.php
new file mode 100644
index 000000000..5bd6d0a7b
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/JaegerThriftSenderTest.php
@@ -0,0 +1,126 @@
+<?php
+
+
+namespace Jaeger\Tests\Sender;
+
+use Jaeger\Sender\JaegerSender;
+use Jaeger\Sender\UdpSender;
+use Jaeger\Span;
+use Jaeger\SpanContext;
+use Jaeger\Thrift\Agent\AgentClient;
+use Jaeger\Thrift\Batch;
+use Jaeger\Tracer;
+use PHPUnit\Framework\TestCase;
+
+class JaegerThriftSenderTest extends TestCase
+{
+ /** @var Tracer|\PHPUnit\Framework\MockObject\MockObject */
+ private $tracer;
+
+ /** @var SpanContext|\PHPUnit\Framework\MockObject\MockObject */
+ private $context;
+
+ public function setUp(): void
+ {
+ $tracer = $this->createMock(Tracer::class);
+ $tracer->method('getIpAddress')->willReturn('');
+ $tracer->method('getServiceName')->willReturn('');
+
+ $this->tracer = $tracer;
+
+ $context = $this->createMock(SpanContext::class);
+ $this->context = $context;
+ }
+
+ public function testFlush(): void
+ {
+
+ $span = $this->createMock(Span::class);
+ $span->method('getOperationName')->willReturn('dummy-operation');
+ $span->method('getTracer')->willReturn($this->tracer);
+ $span->method('getContext')->willReturn($this->context);
+
+ $client = $this->createMock(AgentClient::class);
+ $sender = new JaegerSender($client);
+ $sender->setMaxBufferLength(64000);
+
+ $client
+ ->expects(self::exactly(1))
+ ->method('emitBatch');
+
+ $sender->append($span);
+ $sender->append($span);
+ $sender->append($span);
+
+ self::assertEquals(3, $sender->flush());
+ }
+
+ public function testEmitBatch() {
+ $client = $this->createMock(AgentClient::class);
+ $sender = new JaegerSender($client);
+ $sender->setMaxBufferLength(64000);
+
+ $span = $this->createMock(Span::class);
+ $span->method('getOperationName')->willReturn('dummy-operation');
+ $span->method('getTracer')->willReturn($this->tracer);
+ $span->method('getContext')->willReturn($this->context);
+
+ $client
+ ->expects($this->once())
+ ->method('emitBatch')
+ ->with($this->callback(function ($batch) {
+ /** @var Batch $batch */
+ $this->assertInstanceOf(Batch::class, $batch);
+ $this->assertCount(1, $batch->spans);
+
+ /** @var \Jaeger\Thrift\Span $span */
+ $span = $batch->spans[0];
+ $this->assertInstanceOf(\Jaeger\Thrift\Span::class, $span);
+ $this->assertSame("dummy-operation", $span->operationName);
+
+ return true;
+
+ }));
+
+ $sender->append($span);
+ $this->assertEquals(1, $sender->flush());
+ }
+
+ public function testMaxBufferLength() {
+ $tracer = $this->createMock(Tracer::class);
+ $tracer->method('getIpAddress')->willReturn('');
+ $tracer->method('getServiceName')->willReturn('');
+
+ $context = $this->createMock(SpanContext::class);
+
+ $span = $this->createMock(Span::class);
+ $span->method('getOperationName')->willReturn('dummy-operation');
+ $span->method('getTracer')->willReturn($tracer);
+ $span->method('getContext')->willReturn($context);
+
+ $client = $this->createMock(AgentClient::class);
+
+ $mockBuilder = $this->getMockBuilder(JaegerSender::class);
+ $mockMethods = ['emitJaegerBatch'];
+ if (method_exists($mockBuilder, "onlyMethods")) {
+ $mockBuilder = $mockBuilder->onlyMethods($mockMethods);
+ } else {
+ $mockBuilder = $mockBuilder->setMethods($mockMethods);
+ }
+ $sender = $mockBuilder->setConstructorArgs([$client])->getMock();
+ $sender->setMaxBufferLength(800);
+ $sender->expects(self::exactly(2))
+ ->method('emitJaegerBatch')
+ ->withConsecutive(
+ [self::countOf(2)],
+ [self::countOf(1)]
+ );
+
+ // jaeger batch overhead parameter = 512
+ $sender->append($span); // 512 + 143 < 800 - chunk 1
+ $sender->append($span); // 512 + 143*2 => 798 < 800 - chunk 1
+ $sender->append($span); // 512 + 143*3 > 800 - chunk 2
+
+ self::assertEquals(3, $sender->flush());
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/UdpSenderTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/UdpSenderTest.php
new file mode 100644
index 000000000..9011d00e3
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/UdpSenderTest.php
@@ -0,0 +1,116 @@
+<?php
+
+namespace Jaeger\Tests\Sender;
+
+use Jaeger\Sender\UdpSender;
+use Jaeger\Span;
+use Jaeger\SpanContext;
+use Jaeger\Thrift\Agent\AgentClient;
+use Jaeger\Thrift\Agent\Zipkin\Annotation as ZipkinAnnotation;
+use Jaeger\Thrift\Agent\Zipkin\Span as ZipkinSpan;
+use Jaeger\Tracer;
+use PHPUnit\Framework\TestCase;
+
+class UdpSenderTest extends TestCase
+{
+ /**
+ * @var UdpSender
+ */
+ private $sender;
+
+ /**
+ * @var AgentClient
+ */
+ private $client;
+
+ public function setUp(): void
+ {
+ $this->client = $this->createMock(AgentClient::class);
+ $this->sender = new UdpSender($this->client, 64000);
+ }
+
+ public function testMaxBufferLength(): void
+ {
+ $tracer = $this->createMock(Tracer::class);
+ $tracer->method('getIpAddress')->willReturn('');
+ $tracer->method('getServiceName')->willReturn('');
+
+ $context = $this->createMock(SpanContext::class);
+
+ $span = $this->createMock(Span::class);
+ $span->method('getOperationName')->willReturn('dummy-operation');
+ $span->method('getTracer')->willReturn($tracer);
+ $span->method('getContext')->willReturn($context);
+
+ $sender = new UdpSender($this->client, 100);
+
+ $this->client
+ ->expects(self::exactly(2))
+ ->method('emitZipkinBatch')
+ ->withConsecutive(
+ [self::countOf(2)],
+ [self::countOf(1)]
+ );
+
+ // one span has a length of ~25
+ $sender->append($span); // 30 + 25 < 100 - chunk 1
+ $sender->append($span); // 30 + 25 * 2 < 100 - chunk 1
+ $sender->append($span); // 30 + 25 * 3 > 100 - chunk 2
+
+ self::assertEquals(3, $sender->flush());
+ }
+
+ public function testFlush(): void
+ {
+ $this->assertEquals(0, $this->sender->flush());
+
+ $logTimeStamp = (int) (microtime(true) * 1000000);
+
+ $tracer = $this->createMock(Tracer::class);
+ $tracer->method('getIpAddress')->willReturn('');
+ $tracer->method('getServiceName')->willReturn('');
+ $context = $this->createMock(SpanContext::class);
+ $span = $this->createMock(Span::class);
+ $span->method('getTracer')->willReturn($tracer);
+ $span->method('getContext')->willReturn($context);
+ $span
+ ->expects($this->atLeastOnce())
+ ->method('getLogs')
+ ->willReturn([
+ [
+ 'timestamp' => $logTimeStamp,
+ 'fields' => [
+ 'foo' => 'bar',
+ ],
+ ],
+ ]);
+
+ $this->client
+ ->expects($this->once())
+ ->method('emitZipkinBatch')
+ ->with($this->callback(function ($spans) use ($logTimeStamp) {
+ $this->assertCount(1, $spans);
+
+ /* @var $annotation ZipkinSpan */
+ $span = $spans[0];
+ $this->assertInstanceOf(ZipkinSpan::class, $span);
+ $this->assertCount(1, $span->annotations);
+
+ /* @var $annotation ZipkinAnnotation */
+ $annotation = $span->annotations[0];
+ $this->assertInstanceOf(ZipkinAnnotation::class, $annotation);
+ $this->assertSame($logTimeStamp, $annotation->timestamp);
+ $this->assertSame(
+ json_encode([
+ 'foo' => 'bar',
+ ]),
+ $annotation->value
+ );
+
+ return true;
+ }));
+
+ $this->sender->append($span);
+ $this->assertEquals(1, $this->sender->flush());
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/SpanContextTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/SpanContextTest.php
new file mode 100644
index 000000000..998061088
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/SpanContextTest.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Jaeger\Tests;
+
+use Jaeger\SpanContext;
+use PHPUnit\Framework\TestCase;
+
+class SpanContextTest extends TestCase
+{
+ public function testIsDebugIdContainerOnly()
+ {
+ $ctx = new SpanContext(null, null, null, null, null, 'value1');
+ $this->assertTrue($ctx->isDebugIdContainerOnly());
+ $this->assertEquals($ctx->getDebugId(), 'value1');
+
+ $ctx = new SpanContext(1, 2, 3, 1);
+ $this->assertFalse($ctx->isDebugIdContainerOnly());
+ }
+
+ /**
+ * @dataProvider contextDataProvider
+ */
+ public function testBaggageInit($traceId, $spanId, $parentId, $flags, $baggage, $expected)
+ {
+ $ctx = new SpanContext($traceId, $spanId, $parentId, $flags, $baggage);
+ $this->assertEquals($expected, $ctx->getBaggage());
+ }
+
+ public function contextDataProvider()
+ {
+ return [
+ [null, null, null, null, [], []],
+ [null, null, null, null, null, []],
+ [null, null, null, null, ['key' => 'val'], ['key' => 'val']],
+ ];
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/SpanTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/SpanTest.php
new file mode 100644
index 000000000..d23879680
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/SpanTest.php
@@ -0,0 +1,293 @@
+<?php
+
+namespace Jaeger\Tests;
+
+use Jaeger\Reporter\NullReporter;
+use Jaeger\Sampler\ConstSampler;
+use Jaeger\Span;
+use Jaeger\SpanContext;
+use Jaeger\Thrift\Agent\Zipkin\AnnotationType;
+use Jaeger\Tracer;
+use PHPUnit\Framework\TestCase;
+use const Jaeger\SAMPLED_FLAG;
+
+class SpanTest extends TestCase
+{
+ /**
+ * @var Tracer
+ */
+ private $tracer;
+
+ /**
+ * @var SpanContext
+ */
+ private $context;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setUp(): void
+ {
+ $this->tracer = new Tracer('test-service', new NullReporter, new ConstSampler);
+ $this->context = new SpanContext(0, 0,0, SAMPLED_FLAG);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function tearDown(): void
+ {
+ $this->tracer = null;
+ $this->context = null;
+ }
+
+ /** @test */
+ public function shouldProperlyInitializeAtConstructTime(): void
+ {
+ $tags = [
+ 'foo-1' => 'test-component-1',
+ 'foo-2' => 'test-component-2',
+ 'foo-3' => 'test-component-3',
+ ];
+
+ $span = new Span($this->context, $this->tracer, 'test-operation', $tags);
+
+ $this->assertEquals( 3, count($span->getTags()));
+ $this->assertEquals($this->tracer, $span->getTracer());
+ $this->assertEquals(false, $span->isDebug());
+ $this->assertEquals(null, $span->getEndTime());
+ }
+
+ /** @test */
+ public function shouldSetComponentThroughTag(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+
+ $span->setTag('component', 'libredis');
+
+ $spanReflection = new \ReflectionClass(Span::class);
+ $component = $spanReflection->getProperty('component');
+ $component->setAccessible(true);
+
+ $this->assertEquals( 0, count($span->getTags()));
+ $this->assertEquals( 'libredis', $component->getValue($span));
+ $this->assertEquals( 'libredis', $span->getComponent());
+ }
+
+ /** @test */
+ public function shouldSetTags(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+
+ $this->assertEquals( 0, count($span->getTags()));
+
+ $span->setTags([
+ 'foo-1' => 'test-component-1',
+ 'foo-2' => 'test-component-2',
+ 'foo-3' => 'test-component-3',
+ ]);
+
+ $this->assertEquals( 3, count($span->getTags()));
+ }
+
+ /** @test */
+ public function shouldSetDifferentTypeOfTags() {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+
+ $this->assertEquals( 0, count($span->getTags()));
+
+ $span->setTags([
+ 'tag-bool1' => true,
+ 'tag-bool2' => false,
+ 'tag-int' => 1234567,
+ 'tag-float' => 1.23456,
+ 'tag-string' => "hello-world"
+ ]);
+
+ $tags = array_values($span->getTags());
+ $this->assertEquals( 5, count($tags));
+
+ $index = 0;
+ $this->assertTrue($tags[$index]->annotation_type === AnnotationType::BOOL);
+ $this->assertTrue($tags[$index]->value === true);
+ $this->assertTrue($tags[$index]->key === 'tag-bool1');
+ $index++;
+
+ $this->assertTrue($tags[$index]->annotation_type === AnnotationType::BOOL);
+ $this->assertTrue($tags[$index]->value === false);
+ $this->assertTrue($tags[$index]->key === 'tag-bool2');
+ $index++;
+
+ $this->assertTrue($tags[$index]->annotation_type === AnnotationType::I64);
+ $this->assertTrue($tags[$index]->value === 1234567);
+ $this->assertTrue($tags[$index]->key === 'tag-int');
+ $index++;
+
+ $this->assertTrue($tags[$index]->annotation_type === AnnotationType::DOUBLE);
+ $this->assertTrue($tags[$index]->value === 1.23456);
+ $this->assertTrue($tags[$index]->key === 'tag-float');
+ $index++;
+
+ $this->assertTrue($tags[$index]->annotation_type === AnnotationType::STRING);
+ $this->assertTrue($tags[$index]->value === "hello-world");
+ $this->assertTrue($tags[$index]->key === 'tag-string');
+ }
+
+ /** @test */
+ public function shouldOverwriteTheSameTag(): void
+ {
+ // Given
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+
+ // When
+ $span->setTag('foo', 'test-component-1');
+ $span->setTag('foo', 'test-component-2');
+
+ // Then
+ $this->assertEquals( 1, count($span->getTags()));
+ $this->assertEquals( 'test-component-2', $span->getTags()['foo']->value);
+ }
+ /** @test */
+ public function shouldAddLogRecordsToTheSpan(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+
+ $fields01 = [
+ 'event' => 'error',
+ 'message' => 'dummy error message',
+ ];
+ $fields02 = [
+ 'foo' => 'bar',
+ ];
+
+ $dateTime01 = new \DateTime('+5 seconds');
+ $dateTime02 = $dateTime01->getTimestamp();
+ $dateTime03 = microtime(true) + 5;
+
+ $span->log($fields01, $dateTime01);
+ $span->log($fields02, $dateTime01->getTimestamp()*1000000);
+ $span->log($fields02, $dateTime03);
+ $span->log($fields02);
+
+ $logs = $span->getLogs();
+
+ $this->assertCount(4, $logs);
+
+ $this->assertIsInt($logs[0]['timestamp']);
+ $this->assertEquals((int)($dateTime01->format('U.u')*1000000), $logs[0]['timestamp']);
+ $this->assertSame($fields01, $logs[0]['fields']);
+
+ $this->assertIsInt($logs[1]['timestamp']);
+ $this->assertSame($dateTime02*1000000, $logs[1]['timestamp']);
+ $this->assertSame($fields02, $logs[1]['fields']);
+
+ $this->assertIsInt($logs[2]['timestamp']);
+ $this->assertSame((int) ($dateTime03 * 1000000), $logs[2]['timestamp']);
+ $this->assertSame($fields02, $logs[2]['fields']);
+
+ $this->assertIsInt($logs[3]['timestamp']);
+ $this->assertSame($fields02, $logs[3]['fields']);
+ }
+
+ /** @test */
+ public function timingDefaultTimes(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+ $span->finish();
+
+ $this->assertEquals(0.0, round(($span->getEndTime() - $span->getStartTime()) / 1000000));
+ }
+
+ /** @test */
+ public function timingSetStartTimeAsDateTime(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation', [], new \DateTime('-2 seconds'));
+ $span->finish();
+
+ $this->assertSpanDuration($span);
+ }
+
+ /** @test */
+ public function timingSetEndTimeAsDateTime(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+
+ $endTime = new \DateTime('+2 seconds');
+ // add microseconds because php < 7.1 has a bug
+ // https://bugs.php.net/bug.php?id=48225
+ if (version_compare(phpversion(), '7.1', '<')) {
+ list($usec) = explode(' ', microtime());
+ $endTime = \DateTime::createFromFormat('U.u', $endTime->format('U')+$usec);
+ }
+ $span->finish($endTime);
+
+ $this->assertSpanDuration($span);
+ }
+
+ /** @test */
+ public function timingSetStartTimeAsInt(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation', [], (int) round((microtime(true) - 2) * 1000000));
+ $span->finish();
+
+ $this->assertSpanDuration($span);
+ }
+
+ /** @test */
+ public function timingSetEndTimeAsInt(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+ $span->finish((int) round((microtime(true) + 2) * 1000000));
+
+ $this->assertSpanDuration($span);
+ }
+
+ /** @test */
+ public function timingSetStartTimeAsFloat(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation', [], microtime(true) - 2);
+ $span->finish();
+
+ $this->assertSpanDuration($span);
+ }
+
+ /** @test */
+ public function timingSetEndTimeAsFloat(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+ $span->finish(microtime(true) + 2);
+
+ $this->assertSpanDuration($span);
+ }
+
+ /** @test */
+ public function timingSetMixedTimes(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation', [], new \DateTime());
+ $span->finish(microtime(true) + 2);
+
+ $this->assertSpanDuration($span);
+ }
+
+ protected function assertSpanDuration(Span $span): void
+ {
+ $this->assertEquals(2, (int)(($span->getEndTime() - $span->getStartTime()) / 1000000));
+ }
+
+ /** @test */
+ public function invalidStartTime(): void
+ {
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('Time should be one of the types int|float|DateTime|null, got string.');
+ $span = new Span($this->context, $this->tracer, 'test-operation', [], 'string');
+ }
+
+ /** @test */
+ public function invalidEndTime(): void
+ {
+ $span = new Span($this->context, $this->tracer, 'test-operation');
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('Time should be one of the types int|float|DateTime|null, got array.');
+ $span->finish([]);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ThriftUdpTransportTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ThriftUdpTransportTest.php
new file mode 100644
index 000000000..abc4e32aa
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ThriftUdpTransportTest.php
@@ -0,0 +1,166 @@
+<?php
+
+namespace Jaeger\Tests;
+
+use Jaeger\Config;
+use Jaeger\Tests\Logger\StackLogger;
+use Jaeger\ThriftUdpTransport;
+use Jaeger\Tracer;
+use PHPUnit\Framework\TestCase;
+use Thrift\Exception\TTransportException;
+
+class ThriftUdpTransportTest extends TestCase
+{
+ /**
+ * @var ThriftUdpTransport
+ */
+ private $transport;
+
+ /**
+ * @var StackLogger
+ */
+ private $logger;
+
+ public function setUp(): void
+ {
+ $this->logger = new StackLogger();
+ $this->transport = new ThriftUdpTransport('127.0.0.1', 12345, $this->logger);
+ }
+
+ public function testisOpenWhenOpen()
+ {
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ $this->assertTrue($this->transport->isOpen());
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ }
+
+ public function testisOpenWhenClosed()
+ {
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ $this->transport->close();
+ $this->assertFalse($this->transport->isOpen());
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ }
+
+ public function testClose()
+ {
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ $this->transport->close();
+
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ $this->transport->write('hello');
+ $this->assertEquals($this->logger->getMessagesCount(), 1);
+ $this->assertEquals($this->logger->getLastMessage(), 'transport is closed');
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ }
+
+ public function testDoubleClose()
+ {
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ $this->transport->close();
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ $this->transport->close();
+ $this->assertEquals($this->logger->getMessagesCount(), 1);
+ $this->assertEquals(
+ $this->logger->getLastMessage(),
+ "can't close empty socket"
+ );
+ }
+
+ public function testException()
+ {
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+ $this->transport->open();
+ $this->assertEquals($this->logger->getMessagesCount(), 0);
+
+ $this->transport->write(str_repeat("some string", 10000));
+
+ $this->assertEquals($this->logger->getMessagesCount(), 1);
+ $msg = $this->logger->getLastMessage();
+ $pattern = "/socket_write failed: \[code - \d+\] Message too long/";
+
+ if (method_exists($this, "assertMatchesRegularExpression")) {
+ $this->assertMatchesRegularExpression($pattern, $msg);
+ } else {
+ $this->assertRegExp($pattern, $msg);
+ }
+ }
+
+ public function testProtocolVersionIPv4()
+ {
+ $config = new Config([
+ Config::IP_VERSION => Config::IPV4
+ ], "testServiceName");
+
+ $transport = new ThriftUdpTransport('127.0.0.1', 12345, $this->logger, $config);
+
+ $reflectionTransport = new \ReflectionClass($transport);
+ $ipProtocolVersionMethod = $reflectionTransport->getMethod("ipProtocolVersion");
+ $ipProtocolVersionMethod->setAccessible(true);
+
+ $this->assertEquals(Config::IPV4, $ipProtocolVersionMethod->invoke($transport));
+ }
+
+ public function testProtocolVersionIPv6()
+ {
+ $config = new Config([
+ Config::IP_VERSION => Config::IPV6
+ ], "testServiceName");
+
+ $transport = new ThriftUdpTransport('127.0.0.1', 12345, $this->logger, $config);
+//
+ $reflectionTransport = new \ReflectionClass($transport);
+ $ipProtocolVersionMethod = $reflectionTransport->getMethod("ipProtocolVersion");
+ $ipProtocolVersionMethod->setAccessible(true);
+//
+ $this->assertEquals(Config::IPV6, $ipProtocolVersionMethod->invoke($transport));
+ }
+
+ public function testProtocolVersionDefault()
+ {
+ $config = new Config([
+ ], "testServiceName");
+
+ $transport = new ThriftUdpTransport('127.0.0.1', 12345, $this->logger, $config);
+
+ $reflectionTransport = new \ReflectionClass($transport);
+ $ipProtocolVersionMethod = $reflectionTransport->getMethod("ipProtocolVersion");
+ $ipProtocolVersionMethod->setAccessible(true);
+
+ $this->assertEquals(Config::IPV4, $ipProtocolVersionMethod->invoke($transport));
+ }
+
+ public function testCreateSocket()
+ {
+ $transport = $this->getMockBuilder(ThriftUdpTransport::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $reflectionClass = new \ReflectionClass($transport);
+ $method = $reflectionClass->getMethod("setLogger");
+ $method->setAccessible(true);
+ $method->invokeArgs($transport, [$this->logger]);
+
+ $method = $reflectionClass->getMethod("createSocket");
+ $method->setAccessible(true);
+ $res = $method->invokeArgs($transport, [Config::IPV6]);
+
+ $this->assertNotFalse($res);
+
+
+ $transport = $this->getMockBuilder(ThriftUdpTransport::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $reflectionClass = new \ReflectionClass($transport);
+ $method = $reflectionClass->getMethod("setLogger");
+ $method->setAccessible(true);
+ $method->invokeArgs($transport, [$this->logger]);
+
+ $method = $reflectionClass->getMethod("createSocket");
+ $method->setAccessible(true);
+ $res = $method->invokeArgs($transport, [Config::IPV4]);
+
+ $this->assertNotFalse($res);
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/TracerTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/TracerTest.php
new file mode 100644
index 000000000..3e7b4c05f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/TracerTest.php
@@ -0,0 +1,262 @@
+<?php
+
+namespace Jaeger\Tests;
+
+use Jaeger\Reporter\ReporterInterface;
+use Jaeger\Sampler\SamplerInterface;
+use Jaeger\Scope;
+use Jaeger\ScopeManager;
+use Jaeger\Span;
+use Jaeger\SpanContext;
+use Jaeger\Tracer;
+use OpenTracing\Exceptions\UnsupportedFormat;
+use OpenTracing\NoopSpanContext;
+use OpenTracing\UnsupportedFormatException;
+use PHPUnit\Framework\TestCase;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+use const Jaeger\BAGGAGE_HEADER_PREFIX;
+use const Jaeger\DEBUG_ID_HEADER_KEY;
+use const Jaeger\TRACE_ID_HEADER;
+use const Jaeger\ZIPKIN_SPAN_FORMAT;
+use const OpenTracing\Formats\TEXT_MAP;
+
+class TracerTest extends TestCase
+{
+ /**
+ * @var ReporterInterface|\PHPUnit\Framework\MockObject\MockObject
+ */
+ private $reporter;
+
+ /**
+ * @var SamplerInterface|\PHPUnit\Framework\MockObject\MockObject
+ */
+ private $sampler;
+
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * @var ScopeManager|\PHPUnit\Framework\MockObject\MockObject
+ */
+ private $scopeManager;
+
+ /**
+ * @var Tracer
+ */
+ private $tracer;
+
+ /**
+ * @var string
+ */
+ private $serviceName = 'test-service';
+
+ /**
+ * @var string
+ */
+ private $operationName = 'test-operation';
+
+ public function setUp(): void
+ {
+ $this->scopeManager = $this->createMock(ScopeManager::class);
+ $this->sampler = $this->createMock(SamplerInterface::class);
+ $this->reporter = $this->createMock(ReporterInterface::class);
+ $this->logger = new NullLogger();
+
+ $this->tracer = new Tracer($this->serviceName, $this->reporter, $this->sampler, true, $this->logger, $this->scopeManager);
+ }
+
+ public function testStartSpan(): void
+ {
+ $span = $this->tracer->startSpan($this->operationName);
+
+ $this->assertEquals($this->operationName, $span->getOperationName());
+ }
+
+ public function testStartActiveSpan(): void
+ {
+ $tracer = new Tracer($this->serviceName, $this->reporter, $this->sampler);
+
+ $tracer->startActiveSpan('test-operation1');
+ $this->assertEquals('test-operation1', $tracer->getActiveSpan()->getOperationName());
+
+ $scope = $tracer->startActiveSpan('test-operation2');
+ $this->assertEquals('test-operation2', $tracer->getActiveSpan()->getOperationName());
+ $scope->close();
+
+ $this->assertEquals('test-operation1', $tracer->getActiveSpan()->getOperationName());
+ }
+
+ /** @test */
+ public function shouldAddConfiguredTagsToStartedSpanWhenSampled(): void
+ {
+ $this->sampler->expects($this->any())
+ ->method('isSampled')
+ ->willReturn([true, []]);
+
+ $tags = [
+ 'bar' => 'a-value',
+ 'other.tag' => 'foo',
+ ];
+
+ $tracer = new Tracer(
+ $this->serviceName,
+ $this->reporter,
+ $this->sampler,
+ true,
+ $this->logger,
+ $this->scopeManager,
+ TRACE_ID_HEADER,
+ BAGGAGE_HEADER_PREFIX,
+ DEBUG_ID_HEADER_KEY,
+ $tags
+ );
+
+ $span = $tracer->startSpan('test-span');
+ $spanTags = $span->getTags();
+
+ foreach ($tags as $name => $value) {
+ $this->assertArrayHasKey($name, $spanTags, "Tag '$name' should be set on span");
+ $this->assertEquals($value, $spanTags[$name]->value, "Tag '$name' should have configured value");
+ }
+ }
+
+ /** @test */
+ public function shouldAddNoConfiguredTagsToStartedSpanWhenNotSampled(): void
+ {
+ $this->sampler->expects($this->any())
+ ->method('isSampled')
+ ->willReturn([false, []]);
+
+ $tags = [
+ 'bar' => 'a-value',
+ 'other.tag' => 'foo',
+ ];
+
+ $tracer = new Tracer(
+ $this->serviceName,
+ $this->reporter,
+ $this->sampler,
+ true,
+ $this->logger,
+ $this->scopeManager,
+ TRACE_ID_HEADER,
+ BAGGAGE_HEADER_PREFIX,
+ DEBUG_ID_HEADER_KEY,
+ $tags
+ );
+
+ $span = $tracer->startSpan('test-span');
+
+ $this->assertEquals([], $span->getTags(), 'No tags should be set when not sampled');
+ }
+
+ /** @test */
+ public function shouldThrowExceptionOnInvalidFormat(): void
+ {
+ $spanContext = new SpanContext(0, 0, 0, 0);
+ $carrier = [];
+
+ $this->expectException(UnsupportedFormatException::class);
+ $this->expectExceptionMessage('The format "bad-format" is not supported.');
+
+ $this->tracer->inject($spanContext, 'bad-format', $carrier);
+ $this->assertSame([], $carrier);
+ }
+
+ /** @test */
+ public function shouldNotThrowExceptionOnInvalidContext(): void
+ {
+ $spanContext = new NoopSpanContext();
+ $carrier = [];
+
+ $this->tracer->inject($spanContext, ZIPKIN_SPAN_FORMAT, $carrier);
+ $this->assertSame([], $carrier);
+ }
+
+ /** @test */
+ public function shouldInjectSpanContextToCarrier(): void
+ {
+ $spanContext = new SpanContext(0, 0, 0, 0);
+ $carrier = [];
+
+ $this->tracer->inject($spanContext, TEXT_MAP, $carrier);
+
+ $this->assertCount(1, $carrier);
+ $this->assertEquals('0:0:0:0', $carrier[TRACE_ID_HEADER]);
+ }
+
+ /** @test */
+ public function shouldThrowExceptionOnExtractInvalidFormat(): void
+ {
+ $this->expectException(UnsupportedFormatException::class);
+ $this->expectExceptionMessage('The format "bad-format" is not supported.');
+
+ $this->tracer->extract('bad-format', []);
+ }
+
+ /** @test */
+ public function shouldNotThrowExceptionOnExtractFromMalformedState(): void
+ {
+ $this->assertNull($this->tracer->extract(TEXT_MAP, ['uber-trace-id' => '']));
+ }
+
+ /** @test */
+ public function shouldExtractSpanContextFromCarrier(): void
+ {
+ $carrier = ['uber-trace-id' => '32834e4115071776:f7802330248418d:f123456789012345:1'];
+
+ $this->assertInstanceOf(SpanContext::class, $this->tracer->extract(TEXT_MAP, $carrier));
+ }
+
+ public function testGetScopeManager()
+ {
+ $this->assertEquals($this->scopeManager, $this->tracer->getScopeManager());
+ }
+
+ public function testGetActiveSpan(): void
+ {
+ $span = $this->createMock(Span::class);
+ $scope = $this->createMock(Scope::class);
+ $scope->expects($this->once())->method('getSpan')->willReturn($span);
+
+ $this->scopeManager->expects($this->once())->method('getActive')->willReturn($scope);
+
+ $this->assertEquals($span, $this->tracer->getActiveSpan());
+ }
+
+ public function testGetActiveSpanNull(): void
+ {
+ $this->scopeManager->expects($this->once())->method('getActive')->willReturn(null);
+
+ $this->assertEquals(null, $this->tracer->getActiveSpan());
+ }
+
+ public function testFlush(): void
+ {
+ $this->reporter->expects($this->once())->method('close');
+
+ $this->tracer->flush();
+ }
+
+ /** @test */
+ public function shouldHandleEmptyHostName(): void
+ {
+ $tracer = new \ReflectionClass(Tracer::class);
+
+ $getHostByName = $tracer->getMethod('getHostByName');
+ $getHostByName->setAccessible(true);
+
+ $stub = $this->getMockBuilder(Tracer::class)
+ ->disableOriginalConstructor()
+ ->getMockForAbstractClass();
+
+ $logger = $tracer->getProperty('logger');
+ $logger->setAccessible(true);
+ $logger->setValue($stub, $this->logger);
+
+ $this->assertEquals('127.0.0.1', $getHostByName->invokeArgs($stub, [null]));
+ }
+}
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/README.md b/vendor/jonahgeorge/jaeger-client-php/tests/README.md
new file mode 100644
index 000000000..aa828030f
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/README.md
@@ -0,0 +1,48 @@
+# Jaeger Bindings for PHP OpenTracing API: Unit Tests
+
+Welcome to the Jaeger Testing Suite.
+
+This folder includes all the unit tests that test Jaeger components, ensuring that you enjoy a bug free library.
+
+## Current PHP Support
+
+| version | status |
+|---------|--------|
+| 7.0 | ✔ |
+| 7.1 | ✔ |
+| 7.2 | ✔ |
+
+
+## Getting Started
+
+This testing suite uses [Travis CI](https://travis-ci.org/) for each run.
+Every commit pushed to this repository will queue a build into the continuous integration service and will run all tests
+to ensure that everything is going well and the project is stable.
+
+The testing suite can be run on your own machine. The main dependency is [PHPUnit](https://phpunit.de/)
+which can be installed using [Composer](https://getcomposer.org/):
+
+```bash
+# run this command from project root
+$ composer install
+```
+
+Then run the tests by calling command from the terminal as follows:
+
+```bash
+$ composer test
+```
+
+## Run Tests for Supported Versions
+
+There is also an ability to run tests for different PHP versions. To achieve this we offer use
+[docker](https://docs.docker.com/install/)-based approach:
+
+```bash
+
+$ docker run --rm -it -v $(pwd):/usr/app php:7.0 ./usr/app/tests/php-test.sh
+
+$ docker run --rm -it -v $(pwd):/usr/app php:7.1 ./usr/app/tests/php-test.sh
+
+$ docker run --rm -it -v $(pwd):/usr/app php:7.2 ./usr/app/tests/php-test.sh
+```
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/php-test.sh b/vendor/jonahgeorge/jaeger-client-php/tests/php-test.sh
new file mode 100644
index 000000000..99a522856
--- /dev/null
+++ b/vendor/jonahgeorge/jaeger-client-php/tests/php-test.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/env bash
+
+# trace ERR through pipes
+set -o pipefail
+
+# trace ERR through 'time command' and other functions
+set -o errtrace
+
+# set -u : exit the script if you try to use an uninitialised variable
+set -o nounset
+
+# set -e : exit the script if any statement returns a non-true return value
+set -o errexit
+
+# to avoid message:
+# "Do not run Composer as root/super user! See https://getcomposer.org/root for details"
+export COMPOSER_ALLOW_SUPERUSER=1
+
+export TERM=xterm-256color
+
+echo "[INFO]: Install OS dependencies..."
+apt-get update -yq > /dev/null 2>&1
+apt-get install -yq git wget unzip zip > /dev/null 2>&1
+
+echo "[INFO]: Install PHP extensions..."
+docker-php-ext-install bcmath sockets > /dev/null 2>&1
+pecl install hrtime > /dev/null 2>&1
+docker-php-ext-enable hrtime > /dev/null 2>&1
+
+echo "[INFO]: Install Xdebug to enable code coverage..."
+pecl install xdebug > /dev/null 2>&1
+docker-php-ext-enable xdebug > /dev/null 2>&1
+
+cd /tmp
+
+echo "[INFO]: Install Composer..."
+EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)"
+php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
+ACTUAL_SIGNATURE="$(php -r "echo hash_file('SHA384', 'composer-setup.php');")"
+
+if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then
+ >&2 echo '[ERROR]: Invalid installer signature'
+ rm composer-setup.php
+ exit 1
+fi
+
+php composer-setup.php --quiet
+rm composer-setup.php
+
+# this step is required to be able to overwrite composer.lock
+cp -R /usr/app /usr/tests
+
+cd /usr/tests
+rm -f composer.lock
+
+echo "[INFO]: Install library dependencies..."
+php /tmp/composer.phar install \
+ --no-interaction \
+ --no-ansi \
+ --no-progress \
+ --no-suggest
+
+echo -e "[INFO]: Run tests...\n"
+/tmp/composer.phar test
diff --git a/vendor/opentracing/opentracing/.github/ISSUE_TEMPLATE.md b/vendor/opentracing/opentracing/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 000000000..f99dd606b
--- /dev/null
+++ b/vendor/opentracing/opentracing/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,21 @@
+<!--
+Welcome to the OpenTracing PHP repo! 👋🎉
+
+- Please search for existing issues in order to ensure we don't have duplicate bugs/feature requests.)
+- Please be respectful and considerate of others when commenting on issues)
+- Please provide as much information as possible so we all understand the issue.)
+- Please don't ask questions here. If you have any question head to our gitter chat https://gitter.im/opentracing/opentracing-php
+-->
+
+
+## Background
+Something that gives context about why this is an issue.
+
+## Problem
+Describe the problem. If the issue is about an improvement you can skip this. If possible, include a description of the impact of the problem.
+
+## Proposal
+A proposal that from your POV would solve the problem or improve the existing situation. It should also include the impact.
+
+## Questions to address
+Questions that should be answered as outcome of this issue.
diff --git a/vendor/opentracing/opentracing/.github/PULL_REQUEST_TEMPLATE.md b/vendor/opentracing/opentracing/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..d81c08379
--- /dev/null
+++ b/vendor/opentracing/opentracing/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,24 @@
+<!--
+We appreciate the effort for this pull request but before that please make sure you read the contribution guidelines given above, then fill out the blanks below.
+
+Please don't open huge pull requests and keep one pull request solving one problem.
+
+Please enter the issue number you are resolving in your PR after one of the following words [Fixes, Closes, Resolves]. This will auto-link these issues and close them when this PR is merged!
+e.g.
+Fixes #1
+Closes #2
+-->
+
+### Short description of what this PR does:
+-
+-
+
+### Checklist
+- [ ] I have made a material change to the repo (functionality, testing, spelling, grammar)
+- [ ] I have read the [Contribution Guide] and my PR follows them.
+- [ ] I updated my branch with the master branch.
+- [ ] I have added tests that prove my fix is effective or that my feature works
+- [ ] I have added necessary documentation about the functionality in the appropriate .md file
+- [ ] I have added in line documentation to the code I modified
+
+Closes # \ No newline at end of file
diff --git a/vendor/opentracing/opentracing/.github/workflows/ci.yml b/vendor/opentracing/opentracing/.github/workflows/ci.yml
new file mode 100644
index 000000000..8fba7baf8
--- /dev/null
+++ b/vendor/opentracing/opentracing/.github/workflows/ci.yml
@@ -0,0 +1,44 @@
+name: Build
+on:
+ push:
+ branches:
+ - master
+ paths-ignore:
+ - "**/*.md"
+ - "LICENSE"
+ pull_request:
+jobs:
+ test:
+ name: OpenTracing (PHP version ${{ matrix.php-versions }} on ${{ matrix.operating-system }})
+ runs-on: ${{ matrix.operating-system }}
+ strategy:
+ fail-fast: false
+ matrix:
+ operating-system: [ubuntu-latest, windows-latest, macos-latest]
+ php-versions: ["7.1", "7.2", "7.3", "7.4", "8.0", "8.1"]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
+ with:
+ php-version: ${{ matrix.php-versions }}
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+ - name: Cache composer dependencies
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
+ restore-keys: ${{ runner.os }}-composer-
+ - name: Install Composer dependencies
+ run: |
+ composer install --no-progress --prefer-dist --optimize-autoloader
+ - name: Run lint
+ if: matrix.operating-system != 'windows-latest'
+ run: composer lint
+ - name: Run static check
+ run: composer static-check
+ - name: Run tests
+ run: composer test
diff --git a/vendor/opentracing/opentracing/.gitignore b/vendor/opentracing/opentracing/.gitignore
new file mode 100644
index 000000000..56e80855d
--- /dev/null
+++ b/vendor/opentracing/opentracing/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+.phpunit.result.cache
+composer.lock
+vendor \ No newline at end of file
diff --git a/vendor/opentracing/opentracing/CONTRIBUTING.md b/vendor/opentracing/opentracing/CONTRIBUTING.md
new file mode 100644
index 000000000..a13c0fe1d
--- /dev/null
+++ b/vendor/opentracing/opentracing/CONTRIBUTING.md
@@ -0,0 +1,75 @@
+Contributing
+============
+
+Thank you for contributing to this project!
+
+Bug reports
+-----------
+
+If you find a bug, please submit an issue. Try to be as detailed as possible
+in your problem description to help us fix the bug.
+
+Feature requests
+----------------
+
+If you wish to propose a feature, please submit an issue. Try to explain your
+use case as fully as possible to help us understand why you think the feature
+should be added.
+
+License
+-------
+
+By contributing your code, you agree to license your contribution under the terms of the APLv2:
+https://github.com/opentracing/opentracing-php/blob/master/LICENSE
+
+All files are released with the Apache 2.0 license.
+
+Creating a pull request (PR)
+----------------------------
+
+First [fork the repository](https://help.github.com/articles/fork-a-repo/) on
+GitHub.
+
+Then clone your fork:
+
+```bash
+$ git clone https://github.com/your-name/opentracing-php.git
+$ git checkout -b bug-or-feature-description
+```
+
+And install the dependencies:
+
+```bash
+$ composer install
+```
+
+Write your code and add tests. Then run the static check and the tests:
+
+```bash
+$ composer run static-check
+$ composer run test
+```
+
+Commit your changes and push them to GitHub:
+
+```bash
+$ git commit -m "Fix nasty bug"
+$ git push -u origin bug-or-feature-description
+```
+
+Then [create a pull request](https://help.github.com/articles/creating-a-pull-request/)
+on GitHub.
+
+If you need to make some changes, commit and push them as you like. When asked
+to squash your commits, do so as follows:
+
+```bash
+git rebase -i
+git push origin bug-or-feature-description -f
+```
+
+Coding standard
+---------------
+
+This project follows the [PSR-2](http://www.php-fig.org/psr/psr-2/) coding style.
+Please make sure your pull requests adhere to this standard.
diff --git a/vendor/opentracing/opentracing/LICENSE b/vendor/opentracing/opentracing/LICENSE
new file mode 100644
index 000000000..8dada3eda
--- /dev/null
+++ b/vendor/opentracing/opentracing/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/vendor/opentracing/opentracing/README.md b/vendor/opentracing/opentracing/README.md
new file mode 100644
index 000000000..ce03bc951
--- /dev/null
+++ b/vendor/opentracing/opentracing/README.md
@@ -0,0 +1,306 @@
+# OpenTracing API for PHP
+
+[![Build](https://github.com/opentracing/opentracing-php/actions/workflows/ci.yml/badge.svg)](https://github.com/opentracing/opentracing-php/actions/workflows/ci.yml)
+[![OpenTracing Badge](https://img.shields.io/badge/OpenTracing-enabled-blue.svg)](http://opentracing.io)
+[![Total Downloads](https://poser.pugx.org/opentracing/opentracing/downloads)](https://packagist.org/packages/opentracing/opentracing)
+[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg)](https://php.net/)
+[![License](https://img.shields.io/github/license/opentracing/opentracing-php.svg)](https://github.com/opentracing/opentracing-php/blob/master/LICENSE)
+[![Join the chat at https://gitter.im/opentracing/opentracing-php](https://badges.gitter.im/opentracing/opentracing-php.svg)](https://gitter.im/opentracing/opentracing-php?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+
+PHP library for the OpenTracing's API.
+
+## Required Reading
+
+In order to understand the library, one must first be familiar with the
+[OpenTracing project](http://opentracing.io) and
+[specification](http://opentracing.io/documentation/pages/spec.html) more specifically.
+
+## Installation
+
+OpenTracing-PHP can be installed via Composer:
+
+```bash
+composer require opentracing/opentracing
+```
+
+## Usage
+
+When consuming this library one really only need to worry about a couple of key
+abstractions: the `Tracer::startActiveSpan` and `Tracer::startSpan` method,
+the `Span` interface, the `Scope` interface and binding a `Tracer` at bootstrap time. Here are code snippets
+demonstrating some important use cases:
+
+### Singleton initialization
+
+The simplest starting point is to set the global tracer. As early as possible, do:
+
+```php
+use OpenTracing\GlobalTracer;
+
+GlobalTracer::set(new MyTracerImplementation());
+```
+
+### Creating a Span given an existing Request
+
+To start a new `Span`, you can use the `startSpan` method.
+
+```php
+use OpenTracing\Formats;
+use OpenTracing\GlobalTracer;
+
+...
+
+// extract the span context
+$spanContext = GlobalTracer::get()->extract(
+ Formats\HTTP_HEADERS,
+ getallheaders()
+);
+
+function doSomething() {
+ ...
+
+ // start a new span called 'my_span' and make it a child of the $spanContext
+ $span = GlobalTracer::get()->startSpan('my_span', ['child_of' => $spanContext]);
+
+ ...
+
+ // add some logs to the span
+ $span->log([
+ 'event' => 'soft error',
+ 'type' => 'cache timeout',
+ 'waiter.millis' => 1500,
+ ])
+
+ // finish the the span
+ $span->finish();
+}
+```
+
+### Starting a new trace by creating a "root span"
+
+It's always possible to create a "root" `Span` with no parent or other causal reference.
+
+```php
+$span = $tracer->startSpan('my_first_span');
+...
+$span->finish();
+```
+
+### Active Spans and Scope Manager
+
+For most use cases, it is recommended that you use the `Tracer::startActiveSpan` function for
+creating new spans.
+
+An example of a linear, two level deep span tree using active spans looks like
+this in PHP code:
+```php
+// At dispatcher level
+$scope = $tracer->startActiveSpan('request');
+...
+$scope->close();
+```
+```php
+// At controller level
+$scope = $tracer->startActiveSpan('controller');
+...
+$scope->close();
+```
+
+```php
+// At RPC calls level
+$scope = $tracer->startActiveSpan('http');
+file_get_contents('http://php.net');
+$scope->close();
+```
+
+When using the `Tracer::startActiveSpan` function the underlying tracer uses an
+abstraction called scope manager to keep track of the currently active span.
+
+Starting an active span will always use the currently active span as a parent.
+If no parent is available, then the newly created span is considered to be the
+root span of the trace.
+
+Unless you are using asynchronous code that tracks multiple spans at the same
+time, such as when using cURL Multi Exec or MySQLi Polling it is recommended that you
+use `Tracer::startActiveSpan` everywhere in your application.
+
+The currently active span gets automatically finished when you call `$scope->close()`
+as you can see in the previous examples.
+
+If you don't want a span to automatically close when `$scope->close()` is called
+then you must specify `'finish_span_on_close'=> false,` in the `$options`
+argument of `startActiveSpan`.
+
+#### Creating a child span assigning parent manually
+
+```php
+$parent = GlobalTracer::get()->startSpan('parent');
+
+$child = GlobalTracer::get()->startSpan('child', [
+ 'child_of' => $parent
+]);
+
+...
+
+$child->finish();
+
+...
+
+$parent->finish();
+```
+
+#### Creating a child span using automatic active span management
+
+Every new span will take the active span as parent and it will take its spot.
+
+```php
+$parent = GlobalTracer::get()->startActiveSpan('parent');
+
+...
+
+/*
+ * Since the parent span has been created by using startActiveSpan we don't need
+ * to pass a reference for this child span
+ */
+$child = GlobalTracer::get()->startActiveSpan('my_second_span');
+
+...
+
+$child->close();
+
+...
+
+$parent->close();
+```
+
+### Serializing to the wire
+
+```php
+use GuzzleHttp\Client;
+use OpenTracing\Formats;
+
+...
+
+$tracer = GlobalTracer::get();
+
+$spanContext = $tracer->extract(
+ Formats\HTTP_HEADERS,
+ getallheaders()
+);
+
+try {
+ $span = $tracer->startSpan('my_span', ['child_of' => $spanContext]);
+
+ $client = new Client;
+
+ $headers = [];
+
+ $tracer->inject(
+ $span->getContext(),
+ Formats\HTTP_HEADERS,
+ $headers
+ );
+
+ $request = new \GuzzleHttp\Psr7\Request('GET', 'http://myservice', $headers);
+ $client->send($request);
+ ...
+
+} catch (\Exception $e) {
+ ...
+}
+...
+```
+
+### Deserializing from the wire
+
+When using http header for context propagation you can use either the `Request` or the `$_SERVER`
+variable:
+
+```php
+use OpenTracing\GlobalTracer;
+use OpenTracing\Formats;
+
+$tracer = GlobalTracer::get();
+$spanContext = $tracer->extract(Formats\HTTP_HEADERS, getallheaders());
+$tracer->startSpan('my_span', [
+ 'child_of' => $spanContext,
+]);
+```
+
+### Flushing Spans
+
+PHP as a request scoped language has no simple means to pass the collected spans
+data to a background process without blocking the main request thread/process.
+The OpenTracing API makes no assumptions about this, but for PHP that might
+cause problems for Tracer implementations. This is why the PHP API contains a
+`flush` method that allows to trigger a span sending out of process.
+
+```php
+use OpenTracing\GlobalTracer;
+
+$application->run();
+
+register_shutdown_function(function() {
+ /* Flush the tracer to the backend */
+ $tracer = GlobalTracer::get();
+ $tracer->flush();
+});
+```
+
+This is optional, tracers can decide to immediately send finished spans to a
+backend. The flush call can be implemented as a NO-OP for these tracers.
+
+### Using `StartSpanOptions`
+
+Passing options to the pass can be done using either an array or the
+SpanOptions wrapper object. The following keys are valid:
+
+- `start_time` is a float, int or `\DateTime` representing a timestamp with arbitrary precision.
+- `child_of` is an object of type `OpenTracing\SpanContext` or `OpenTracing\Span`.
+- `references` is an array of `OpenTracing\Reference`.
+- `tags` is an array with string keys and scalar values that represent OpenTracing tags.
+- `finish_span_on_close` is a boolean that determines whether a span should be finished or not when the
+scope is closed.
+
+```php
+$span = $tracer->startActiveSpan('my_span', [
+ 'child_of' => $spanContext,
+ 'tags' => ['foo' => 'bar'],
+ 'start_time' => time(),
+]);
+```
+
+### Propagation Formats
+
+The propagation formats should be implemented consistently across all tracers.
+If you want to implement your own format, then don't reuse the existing constants.
+Tracers will throw an exception if the requested format is not handled by them.
+
+- `Tracer::FORMAT_TEXT_MAP` should represent the span context as a key value map. There is no
+ assumption about the semantics where the context is coming from and sent to.
+
+- `Tracer::FORMAT_HTTP_HEADERS` should represent the span context as HTTP header lines
+ in an array list. For two context details "Span-Id" and "Trace-Id", the
+ result would be `['Span-Id: abc123', 'Trace-Id: def456']`. This definition can be
+ passed directly to `curl` and `file_get_contents`.
+
+- `Tracer::FORMAT_BINARY` makes no assumptions about the data format other than it is
+ proprietary and each Tracer can handle it as it wants.
+
+## Mock implementation
+
+OpenTracing PHP comes with a mock implementation, it has three purposes:
+
+1. Helps to iron the API.
+2. Works as a reference implementation.
+3. Enhances vendor agnostic unit testing as it allows developers to inspect the tracing objects
+in order to do assertions about them.
+
+## Coding Style
+
+OpenTracing PHP follows the [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
+coding standard and the [PSR-4](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md) autoloading standard.
+
+## License
+
+All the open source contributions are under the terms of the [Apache-2.0 License](https://opensource.org/licenses/Apache-2.0).
diff --git a/vendor/opentracing/opentracing/composer.json b/vendor/opentracing/opentracing/composer.json
new file mode 100644
index 000000000..b00b67381
--- /dev/null
+++ b/vendor/opentracing/opentracing/composer.json
@@ -0,0 +1,44 @@
+{
+ "name": "opentracing/opentracing",
+ "type": "library",
+ "description": "OpenTracing API for PHP",
+ "license": "Apache-2.0",
+ "minimum-stability": "stable",
+ "authors": [
+ {
+ "name": "José Carlos Chávez",
+ "email": "[email protected]"
+ }
+ ],
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "~0.12",
+ "phpunit/phpunit": "^7.0 || ^9.0",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "config": {
+ "sort-packages": true
+ },
+ "autoload": {
+ "psr-4": {
+ "OpenTracing\\": "src/OpenTracing/"
+ },
+ "files": [
+ "src/OpenTracing/Tags.php",
+ "src/OpenTracing/Formats.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "OpenTracing\\Tests\\": "tests/OpenTracing"
+ }
+ },
+ "scripts": {
+ "fix-lint": "phpcbf --standard=ZEND --standard=PSR2 --ignore=*/vendor/* ./",
+ "lint": "phpcs --standard=ZEND --standard=PSR2 --ignore=*/vendor/* ./",
+ "test": "phpunit tests",
+ "static-check": "phpstan analyse"
+ }
+}
diff --git a/vendor/opentracing/opentracing/phpstan.neon b/vendor/opentracing/opentracing/phpstan.neon
new file mode 100644
index 000000000..c9e64bf1f
--- /dev/null
+++ b/vendor/opentracing/opentracing/phpstan.neon
@@ -0,0 +1,5 @@
+parameters:
+ paths:
+ - src
+
+ level: 5
diff --git a/vendor/opentracing/opentracing/phpunit.xml b/vendor/opentracing/opentracing/phpunit.xml
new file mode 100644
index 000000000..2083a425c
--- /dev/null
+++ b/vendor/opentracing/opentracing/phpunit.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
+ backupGlobals="true"
+ backupStaticAttributes="false"
+ bootstrap="./vendor/autoload.php"
+ colors="false"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ forceCoversAnnotation="false"
+ processIsolation="false"
+ stopOnError="false"
+ stopOnFailure="false"
+ stopOnIncomplete="false"
+ stopOnSkipped="false"
+ stopOnRisky="false"
+ timeoutForSmallTests="1"
+ timeoutForMediumTests="10"
+ timeoutForLargeTests="60"
+ verbose="false">
+ <testsuites>
+ <testsuite name="suite">
+ <directory>tests</directory>
+ </testsuite>
+ </testsuites>
+</phpunit>
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Formats.php b/vendor/opentracing/opentracing/src/OpenTracing/Formats.php
new file mode 100644
index 000000000..f26c5ecf1
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Formats.php
@@ -0,0 +1,49 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Formats;
+
+/**
+ * Used a (single) arbitrary binary blob representing a SpanContext
+ *
+ * For both Tracer::inject() and Tracer::extract() the carrier must be a `string`.
+ */
+const BINARY = 'binary';
+
+/**
+ * Used for an arbitrary string-to-string map with an unrestricted character set for both keys and values
+ *
+ * Unlike `HTTP_HEADERS`, the `TEXT_MAP` format does not restrict the key or
+ * value character sets in any way.
+ *
+ * For both Tracer::inject() and Tracer::extract() the carrier must be a `array|ArrayObject`.
+ */
+const TEXT_MAP = 'text_map';
+
+/**
+ * Used for a string-to-string map with keys and values that are suitable for use in HTTP headers (a la RFC 7230.
+ * In practice, since there is such "diversity" in the way that HTTP headers are treated in the wild, it is strongly
+ * recommended that Tracer implementations use a limited HTTP header key space and escape values conservatively.
+ *
+ * Unlike `TEXT_MAP`, the `HTTP_HEADERS` format requires that the keys and values be valid as HTTP headers as-is
+ * (i.e., character casing may be unstable and special characters are disallowed in keys, values should be
+ * URL-escaped, etc).
+ *
+ * For both Tracer::inject() and Tracer::extract() the carrier must be a `array|ArrayObject`.
+ *
+ * For example, Tracer::inject():
+ *
+ * $headers = []
+ * $tracer->inject($span->getContext(), Formats\HTTP_HEADERS, $headers)
+ * $request = new GuzzleHttp\Psr7\Request($uri, $body, $headers);
+ *
+ * Or Tracer::extract():
+ *
+ * $headers = $request->getHeaders()
+ * $clientContext = $tracer->extract(Formats\HTTP_HEADERS, $headers)
+ *
+ * @see http://www.php-fig.org/psr/psr-7/#12-http-headers
+ * @see http://php.net/manual/en/function.getallheaders.php
+ */
+const HTTP_HEADERS = 'http_headers';
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/GlobalTracer.php b/vendor/opentracing/opentracing/src/OpenTracing/GlobalTracer.php
new file mode 100644
index 000000000..aafdba121
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/GlobalTracer.php
@@ -0,0 +1,60 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+final class GlobalTracer
+{
+ /**
+ * @var Tracer
+ */
+ private static $instance;
+
+ /**
+ * @var bool
+ */
+ private static $isRegistered = false;
+
+ /**
+ * GlobalTracer::set sets the [singleton] Tracer returned by get().
+ * Those who use GlobalTracer (rather than directly manage a Tracer instance)
+ * should call GlobalTracer::set as early as possible in bootstrap, prior to
+ * start a new span. Prior to calling GlobalTracer::set, any Spans started
+ * via the `Tracer::startActiveSpan` (etc) globals are noops.
+ *
+ * @param Tracer $tracer
+ * @return void
+ */
+ public static function set(Tracer $tracer): void
+ {
+ self::$instance = $tracer;
+ self::$isRegistered = true;
+ }
+
+ /**
+ * GlobalTracer::get returns the global singleton `Tracer` implementation.
+ * Before `GlobalTracer::set` is called, the `GlobalTracer::get` is a noop
+ * implementation that drops all data handed to it.
+ *
+ * @return Tracer
+ */
+ public static function get(): Tracer
+ {
+ if (self::$instance === null) {
+ self::$instance = new NoopTracer();
+ }
+
+ return self::$instance;
+ }
+
+ /**
+ * Returns true if a global tracer has been registered, otherwise returns false.
+ *
+ * @return bool
+ */
+ public static function isRegistered(): bool
+ {
+ return self::$isRegistered;
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/InvalidReferenceArgumentException.php b/vendor/opentracing/opentracing/src/OpenTracing/InvalidReferenceArgumentException.php
new file mode 100644
index 000000000..128360393
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/InvalidReferenceArgumentException.php
@@ -0,0 +1,33 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use InvalidArgumentException;
+
+/**
+ * Thrown when passing an invalid argument for a reference
+ */
+final class InvalidReferenceArgumentException extends InvalidArgumentException
+{
+ /**
+ * @return InvalidReferenceArgumentException
+ */
+ public static function forEmptyType(): InvalidReferenceArgumentException
+ {
+ return new self('Reference type can not be an empty string');
+ }
+
+ /**
+ * @param mixed $context
+ * @return InvalidReferenceArgumentException
+ */
+ public static function forInvalidContext($context): InvalidReferenceArgumentException
+ {
+ return new self(sprintf(
+ 'Reference expects \OpenTracing\Span or \OpenTracing\SpanContext as context, got %s',
+ is_object($context) ? get_class($context) : gettype($context)
+ ));
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/InvalidReferencesSetException.php b/vendor/opentracing/opentracing/src/OpenTracing/InvalidReferencesSetException.php
new file mode 100644
index 000000000..de7d907c8
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/InvalidReferencesSetException.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use DomainException;
+
+/**
+ * Thrown when a reference has more than one parent in the SpanOptions
+ */
+final class InvalidReferencesSetException extends DomainException
+{
+ /**
+ * @param string $message
+ * @return InvalidReferencesSetException
+ */
+ public static function create(string $message): InvalidReferencesSetException
+ {
+ return new self($message);
+ }
+
+ /**
+ * @return InvalidReferencesSetException
+ */
+ public static function forMoreThanOneParent(): InvalidReferencesSetException
+ {
+ return new self('Span can not have more than one parent, either one as child_of or either one as follows_from');
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/InvalidSpanOptionException.php b/vendor/opentracing/opentracing/src/OpenTracing/InvalidSpanOptionException.php
new file mode 100644
index 000000000..f9b8003ff
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/InvalidSpanOptionException.php
@@ -0,0 +1,131 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use InvalidArgumentException;
+
+/**
+ * Thrown when passing an invalid option on Span creation
+ */
+final class InvalidSpanOptionException extends InvalidArgumentException
+{
+ /**
+ * @return InvalidSpanOptionException
+ */
+ public static function forIncludingBothChildOfAndReferences(): InvalidSpanOptionException
+ {
+ return new self('Either "childOf" or "references" options are accepted but not both.');
+ }
+
+ /**
+ * @param mixed $reference
+ * @return InvalidSpanOptionException
+ */
+ public static function forInvalidReference($reference): InvalidSpanOptionException
+ {
+ return new self(sprintf(
+ 'Invalid reference. Expected OpenTracing\Reference, got %s.',
+ is_object($reference) ? get_class($reference) : gettype($reference)
+ ));
+ }
+
+ /**
+ * @return InvalidSpanOptionException
+ */
+ public static function forInvalidStartTime(): InvalidSpanOptionException
+ {
+ return new self('Invalid start_time option. Expected int or float got string.');
+ }
+
+ /**
+ * @param mixed $childOfOption
+ * @return InvalidSpanOptionException
+ */
+ public static function forInvalidChildOf($childOfOption): InvalidSpanOptionException
+ {
+ return new self(sprintf(
+ 'Invalid child_of option. Expected Span or SpanContext, got %s',
+ is_object($childOfOption) ? get_class($childOfOption) : gettype($childOfOption)
+ ));
+ }
+
+ /**
+ * @param string $key
+ * @return InvalidSpanOptionException
+ */
+ public static function forUnknownOption(string $key): InvalidSpanOptionException
+ {
+ return new self(sprintf('Invalid option %s.', $key));
+ }
+
+ /**
+ * @param mixed $tag
+ * @return InvalidSpanOptionException
+ */
+ public static function forInvalidTag($tag): InvalidSpanOptionException
+ {
+ return new self(sprintf('Invalid tag. Expected string, got %s', gettype($tag)));
+ }
+
+ /**
+ * @param mixed $tagValue
+ * @return InvalidSpanOptionException
+ */
+ public static function forInvalidTagValue($tagValue): InvalidSpanOptionException
+ {
+ return new self(sprintf(
+ 'Invalid tag value. Expected scalar or object with __toString method, got %s',
+ is_object($tagValue) ? get_class($tagValue) : gettype($tagValue)
+ ));
+ }
+
+ /**
+ * @param mixed $value
+ * @return InvalidSpanOptionException
+ */
+ public static function forInvalidTags($value): InvalidSpanOptionException
+ {
+ return new self(sprintf(
+ 'Invalid tags value. Expected a associative array of tags, got %s',
+ is_object($value) ? get_class($value) : gettype($value)
+ ));
+ }
+
+ /**
+ * @param mixed $value
+ * @return InvalidSpanOptionException
+ */
+ public static function forInvalidReferenceSet($value): InvalidSpanOptionException
+ {
+ return new self(sprintf(
+ 'Invalid references set. Expected Reference or Reference[], got %s',
+ is_object($value) ? get_class($value) : gettype($value)
+ ));
+ }
+
+ /**
+ * @param mixed $value
+ * @return InvalidSpanOptionException
+ */
+ public static function forFinishSpanOnClose($value): InvalidSpanOptionException
+ {
+ return new self(sprintf(
+ 'Invalid type for finish_span_on_close. Expected bool, got %s',
+ is_object($value) ? get_class($value) : gettype($value)
+ ));
+ }
+
+ /**
+ * @param mixed $value
+ * @return InvalidSpanOptionException
+ */
+ public static function forIgnoreActiveSpan($value): InvalidSpanOptionException
+ {
+ return new self(sprintf(
+ 'Invalid type for ignore_active_span. Expected bool, got %s',
+ is_object($value) ? get_class($value) : gettype($value)
+ ));
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockScope.php b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockScope.php
new file mode 100644
index 000000000..a814b45b5
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockScope.php
@@ -0,0 +1,62 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Mock;
+
+use OpenTracing\Scope;
+use OpenTracing\Span;
+
+final class MockScope implements Scope
+{
+ /**
+ * @var Span
+ */
+ private $span;
+
+ /**
+ * @var MockScopeManager
+ */
+ private $scopeManager;
+
+ /**
+ * @var bool
+ */
+ private $finishSpanOnClose;
+
+ /**
+ * @param MockScopeManager $scopeManager
+ * @param Span $span
+ * @param bool $finishSpanOnClose
+ */
+ public function __construct(
+ MockScopeManager $scopeManager,
+ Span $span,
+ bool $finishSpanOnClose
+ ) {
+ $this->scopeManager = $scopeManager;
+ $this->span = $span;
+ $this->finishSpanOnClose = $finishSpanOnClose;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close(): void
+ {
+ if ($this->finishSpanOnClose) {
+ $this->span->finish();
+ }
+
+ $this->scopeManager->deactivate($this);
+ }
+
+ /**
+ * {@inheritdoc}
+ * @return Span|MockSpan
+ */
+ public function getSpan(): Span
+ {
+ return $this->span;
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockScopeManager.php b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockScopeManager.php
new file mode 100644
index 000000000..c75c71942
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockScopeManager.php
@@ -0,0 +1,49 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Mock;
+
+use OpenTracing\Scope;
+use OpenTracing\ScopeManager;
+use OpenTracing\Span;
+
+final class MockScopeManager implements ScopeManager
+{
+ /**
+ * @var Scope[]
+ */
+ private $scopes = [];
+
+ /**
+ * {@inheritdoc}
+ */
+ public function activate(Span $span, bool $finishSpanOnClose = ScopeManager::DEFAULT_FINISH_SPAN_ON_CLOSE): Scope
+ {
+ $scope = new MockScope($this, $span, $finishSpanOnClose);
+ $this->scopes[] = $scope;
+
+ return $scope;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getActive(): ?Scope
+ {
+ if (empty($this->scopes)) {
+ return null;
+ }
+
+ return $this->scopes[count($this->scopes) - 1];
+ }
+
+ public function deactivate(MockScope $scope): void
+ {
+ foreach ($this->scopes as $scopeIndex => $scopeItem) {
+ if ($scope === $scopeItem) {
+ unset($this->scopes[$scopeIndex]);
+ }
+ }
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockSpan.php b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockSpan.php
new file mode 100644
index 000000000..db53649bf
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockSpan.php
@@ -0,0 +1,145 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Mock;
+
+use OpenTracing\Span;
+use OpenTracing\SpanContext;
+
+final class MockSpan implements Span
+{
+ /**
+ * @var string
+ */
+ private $operationName;
+
+ /**
+ * @var SpanContext
+ */
+ private $context;
+
+ /**
+ * @var array
+ */
+ private $tags = [];
+
+ /**
+ * @var array
+ */
+ private $logs = [];
+
+ /**
+ * @var int
+ */
+ private $startTime;
+
+ /**
+ * @var int|null
+ */
+ private $duration;
+
+ public function __construct(
+ string $operationName,
+ SpanContext $context,
+ ?int $startTime = null
+ ) {
+ $this->operationName = $operationName;
+ $this->context = $context;
+ $this->startTime = $startTime ?: time();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getOperationName(): string
+ {
+ return $this->operationName;
+ }
+
+ /**
+ * {@inheritdoc}
+ * @return SpanContext|MockSpanContext
+ */
+ public function getContext(): SpanContext
+ {
+ return $this->context;
+ }
+
+ public function getStartTime(): ?int
+ {
+ return $this->startTime;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function finish($finishTime = null): void
+ {
+ $finishTime = ($finishTime ?: time());
+ $this->duration = $finishTime - $this->startTime;
+ }
+
+ public function isFinished(): bool
+ {
+ return $this->duration !== null;
+ }
+
+ public function getDuration(): ?int
+ {
+ return $this->duration;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function overwriteOperationName(string $newOperationName): void
+ {
+ $this->operationName = (string)$newOperationName;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setTag(string $key, $value): void
+ {
+ $this->tags[$key] = $value;
+ }
+
+ public function getTags(): array
+ {
+ return $this->tags;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function log(array $fields = [], $timestamp = null): void
+ {
+ $this->logs[] = [
+ 'timestamp' => $timestamp ?: time(),
+ 'fields' => $fields,
+ ];
+ }
+
+ public function getLogs(): array
+ {
+ return $this->logs;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function addBaggageItem(string $key, string $value): void
+ {
+ $this->context = $this->context->withBaggageItem($key, $value);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getBaggageItem(string $key): ?string
+ {
+ return $this->context->getBaggageItem($key);
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockSpanContext.php b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockSpanContext.php
new file mode 100644
index 000000000..d094ea0e0
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockSpanContext.php
@@ -0,0 +1,100 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Mock;
+
+use OpenTracing\SpanContext;
+use ArrayIterator;
+
+final class MockSpanContext implements SpanContext
+{
+ /**
+ * @var int
+ */
+ private $traceId;
+
+ /**
+ * @var int
+ */
+ private $spanId;
+
+ /**
+ * @var bool
+ */
+ private $isSampled;
+
+ /**
+ * @var array
+ */
+ private $items;
+
+ private function __construct(int $traceId, int $spanId, bool $isSampled, array $items)
+ {
+ $this->traceId = $traceId;
+ $this->spanId = $spanId;
+ $this->isSampled = $isSampled;
+ $this->items = $items;
+ }
+
+ public static function create(int $traceId, int $spanId, bool $sampled = true, array $items = []): SpanContext
+ {
+ return new self($traceId, $spanId, $sampled, $items);
+ }
+
+ public static function createAsRoot(bool $sampled = true, array $items = []): SpanContext
+ {
+ $traceId = $spanId = self::nextId();
+ return new self($traceId, $spanId, $sampled, $items);
+ }
+
+ public static function createAsChildOf(MockSpanContext $spanContext): SpanContext
+ {
+ $spanId = self::nextId();
+ return new self($spanContext->traceId, $spanId, $spanContext->isSampled, $spanContext->items);
+ }
+
+ public function getTraceId(): int
+ {
+ return $this->traceId;
+ }
+
+ public function getSpanId(): int
+ {
+ return $this->spanId;
+ }
+
+ public function isSampled(): bool
+ {
+ return $this->isSampled;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIterator(): ArrayIterator
+ {
+ return new ArrayIterator($this->items);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getBaggageItem(string $key): ?string
+ {
+ return array_key_exists($key, $this->items) ? $this->items[$key] : null;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function withBaggageItem(string $key, string $value): SpanContext
+ {
+ return new self($this->traceId, $this->spanId, $this->isSampled, array_merge($this->items, [$key => $value]));
+ }
+
+ private static function nextId(): int
+ {
+ return mt_rand(0, 99999);
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockTracer.php b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockTracer.php
new file mode 100644
index 000000000..f4f4577a1
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Mock/MockTracer.php
@@ -0,0 +1,152 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Mock;
+
+use OpenTracing\InvalidReferenceArgumentException;
+use OpenTracing\UnsupportedFormatException;
+use OpenTracing\Scope;
+use OpenTracing\ScopeManager;
+use OpenTracing\Span;
+use OpenTracing\SpanContext;
+use OpenTracing\StartSpanOptions;
+use OpenTracing\Tracer;
+
+final class MockTracer implements Tracer
+{
+ /**
+ * @var array|MockSpan[]
+ */
+ private $spans = [];
+
+ /**
+ * @var array|callable[]
+ */
+ private $injectors;
+
+ /**
+ * @var array|callable[]
+ */
+ private $extractors;
+
+ /**
+ * @var ScopeManager
+ */
+ private $scopeManager;
+
+ public function __construct(array $injectors = [], array $extractors = [])
+ {
+ $this->injectors = $injectors;
+ $this->extractors = $extractors;
+ $this->scopeManager = new MockScopeManager();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function startActiveSpan(string $operationName, $options = []): Scope
+ {
+ if (!($options instanceof StartSpanOptions)) {
+ $options = StartSpanOptions::create($options);
+ }
+
+ if (($activeSpan = $this->getActiveSpan()) !== null) {
+ $options = $options->withParent($activeSpan);
+ }
+
+ $span = $this->startSpan($operationName, $options);
+
+ return $this->scopeManager->activate($span, $options->shouldFinishSpanOnClose());
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function startSpan(string $operationName, $options = []): Span
+ {
+ if (!($options instanceof StartSpanOptions)) {
+ $options = StartSpanOptions::create($options);
+ }
+
+ if (empty($options->getReferences())) {
+ $spanContext = MockSpanContext::createAsRoot();
+ } else {
+ $referenceContext = $options->getReferences()[0]->getSpanContext();
+ if (!$referenceContext instanceof MockSpanContext) {
+ throw InvalidReferenceArgumentException::forInvalidContext($referenceContext);
+ }
+ $spanContext = MockSpanContext::createAsChildOf($referenceContext);
+ }
+
+ $span = new MockSpan($operationName, $spanContext, $options->getStartTime());
+
+ foreach ($options->getTags() as $key => $value) {
+ $span->setTag($key, $value);
+ }
+
+ $this->spans[] = $span;
+
+ return $span;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function inject(SpanContext $spanContext, string $format, &$carrier): void
+ {
+ if (!array_key_exists($format, $this->injectors)) {
+ throw UnsupportedFormatException::forFormat($format);
+ }
+
+ $this->injectors[$format]($spanContext, $carrier);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function extract(string $format, $carrier): ?SpanContext
+ {
+ if (!array_key_exists($format, $this->extractors)) {
+ throw UnsupportedFormatException::forFormat($format);
+ }
+
+ return $this->extractors[$format]($carrier);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function flush(): void
+ {
+ $this->spans = [];
+ }
+
+ /**
+ * @return array|MockSpan[]
+ */
+ public function getSpans(): array
+ {
+ return $this->spans;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getScopeManager(): ScopeManager
+ {
+ return $this->scopeManager;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getActiveSpan(): ?Span
+ {
+ if (null !== ($activeScope = $this->scopeManager->getActive())) {
+ return $activeScope->getSpan();
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/NoopScope.php b/vendor/opentracing/opentracing/src/OpenTracing/NoopScope.php
new file mode 100644
index 000000000..7170c846a
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/NoopScope.php
@@ -0,0 +1,23 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+final class NoopScope implements Scope
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function close(): void
+ {
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getSpan(): Span
+ {
+ return new NoopSpan();
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/NoopScopeManager.php b/vendor/opentracing/opentracing/src/OpenTracing/NoopScopeManager.php
new file mode 100644
index 000000000..5576171a8
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/NoopScopeManager.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+final class NoopScopeManager implements ScopeManager
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function activate(Span $span, bool $finishSpanOnClose = ScopeManager::DEFAULT_FINISH_SPAN_ON_CLOSE): Scope
+ {
+ return new NoopScope();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getActive(): ?Scope
+ {
+ return new NoopScope();
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/NoopSpan.php b/vendor/opentracing/opentracing/src/OpenTracing/NoopSpan.php
new file mode 100644
index 000000000..c1af8dfc7
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/NoopSpan.php
@@ -0,0 +1,67 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+final class NoopSpan implements Span
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getOperationName(): string
+ {
+ return 'noop_span';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getContext(): SpanContext
+ {
+ return new NoopSpanContext();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function finish($finishTime = null): void
+ {
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function overwriteOperationName(string $newOperationName): void
+ {
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setTag(string $key, $value): void
+ {
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function log(array $fields = [], $timestamp = null): void
+ {
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function addBaggageItem(string $key, string $value): void
+ {
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getBaggageItem(string $key): ?string
+ {
+ return null;
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/NoopSpanContext.php b/vendor/opentracing/opentracing/src/OpenTracing/NoopSpanContext.php
new file mode 100644
index 000000000..5b0de7c93
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/NoopSpanContext.php
@@ -0,0 +1,35 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use EmptyIterator;
+use Traversable;
+
+final class NoopSpanContext implements SpanContext
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getIterator(): Traversable
+ {
+ return new EmptyIterator();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getBaggageItem(string $key): ?string
+ {
+ return null;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function withBaggageItem(string $key, string $value): SpanContext
+ {
+ return new self();
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/NoopTracer.php b/vendor/opentracing/opentracing/src/OpenTracing/NoopTracer.php
new file mode 100644
index 000000000..267823bb9
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/NoopTracer.php
@@ -0,0 +1,62 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+final class NoopTracer implements Tracer
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getActiveSpan(): ?Span
+ {
+ return new NoopSpan();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getScopeManager(): ScopeManager
+ {
+ return new NoopScopeManager();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function startSpan(string $operationName, $options = []): Span
+ {
+ return new NoopSpan();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function startActiveSpan(string $operationName, $options = []): Scope
+ {
+ return new NoopScope();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function inject(SpanContext $spanContext, string $format, &$carrier): void
+ {
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function extract(string $format, $carrier): ?SpanContext
+ {
+ return new NoopSpanContext();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function flush(): void
+ {
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Reference.php b/vendor/opentracing/opentracing/src/OpenTracing/Reference.php
new file mode 100644
index 000000000..7dadf1785
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Reference.php
@@ -0,0 +1,77 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use OpenTracing\InvalidReferenceArgumentException;
+
+final class Reference
+{
+ /**
+ * A Span may be the ChildOf a parent Span. In a ChildOf reference,
+ * the parent Span depends on the child Span in some capacity.
+ */
+ public const CHILD_OF = 'child_of';
+
+ /**
+ * Some parent Spans do not depend in any way on the result of their
+ * child Spans. In these cases, we say merely that the child Span
+ * FollowsFrom the parent Span in a causal sense.
+ */
+ public const FOLLOWS_FROM = 'follows_from';
+
+ /**
+ * @var string
+ */
+ private $type;
+
+ /**
+ * @var SpanContext
+ */
+ private $spanContext;
+
+ /**
+ * @param string $type
+ * @param SpanContext $spanContext
+ */
+ public function __construct(string $type, SpanContext $spanContext)
+ {
+ if (empty($type)) {
+ throw InvalidReferenceArgumentException::forEmptyType();
+ }
+
+ $this->type = $type;
+ $this->spanContext = $spanContext;
+ }
+
+ /**
+ * @param string $type
+ * @param Span $span
+ * @return Reference when context is invalid
+ * @throws InvalidReferenceArgumentException on empty type
+ */
+ public static function createForSpan(string $type, Span $span): Reference
+ {
+ return new self($type, $span->getContext());
+ }
+
+ /**
+ * @return SpanContext
+ */
+ public function getSpanContext(): SpanContext
+ {
+ return $this->spanContext;
+ }
+
+ /**
+ * Checks whether a Reference is of one type.
+ *
+ * @param string $type the type for the reference
+ * @return bool
+ */
+ public function isType(string $type): bool
+ {
+ return $this->type === $type;
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Scope.php b/vendor/opentracing/opentracing/src/OpenTracing/Scope.php
new file mode 100644
index 000000000..174495434
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Scope.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+/**
+ * A {@link Scope} formalizes the activation and deactivation of a {@link Span}, usually from a CPU standpoint.
+ *
+ * Many times a {@link Span} will be extant (in that {@link Span#finish()} has not been called) despite being in a
+ * non-runnable state from a CPU/scheduler standpoint. For instance, a {@link Span} representing the client side of an
+ * RPC will be unfinished but blocked on IO while the RPC is still outstanding. A {@link Scope} defines when a given
+ * {@link Span} <em>is</em> scheduled and on the path.
+ */
+interface Scope
+{
+ /**
+ * Mark the end of the active period for the current thread and {@link Scope},
+ * updating the {@link ScopeManager#active()} in the process.
+ *
+ * NOTE: Calling {@link #close} more than once on a single {@link Scope} instance leads to undefined
+ * behavior.
+ *
+ * @return void
+ */
+ public function close(): void;
+
+ /**
+ * @return Span the {@link Span} that's been scoped by this {@link Scope}
+ */
+ public function getSpan(): Span;
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/ScopeManager.php b/vendor/opentracing/opentracing/src/OpenTracing/ScopeManager.php
new file mode 100644
index 000000000..db5fcaa47
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/ScopeManager.php
@@ -0,0 +1,40 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+/**
+ * Keeps track of the current active `Span`.
+ */
+interface ScopeManager
+{
+ public const DEFAULT_FINISH_SPAN_ON_CLOSE = true;
+
+ /**
+ * Activates an `Span`, so that it is used as a parent when creating new spans.
+ * The implementation must keep track of the active spans sequence, so
+ * that previous spans can be resumed after a deactivation.
+ *
+ * @param Span $span the {@link Span} that should become the {@link #active()}
+ * @param bool $finishSpanOnClose whether span should automatically be finished
+ * when {@link Scope#close()} is called. Its default value is true.
+ *
+ * @return Scope instance to control the end of the active period for the {@link Span}. It is a
+ * programming error to neglect to call {@link Scope#close()} on the returned instance.
+ */
+ public function activate(Span $span, bool $finishSpanOnClose = self::DEFAULT_FINISH_SPAN_ON_CLOSE): Scope;
+
+ /**
+ * Return the currently active {@link Scope} which can be used to access the
+ * currently active {@link Scope#getSpan()}.
+ *
+ * If there is an {@link Scope non-null scope}, its wrapped {@link Span} becomes an implicit parent
+ * (as {@link References#CHILD_OF} reference) of any
+ * newly-created {@link Span} at {@link Tracer.SpanBuilder#startActive(boolean)} or {@link SpanBuilder#start()}
+ * time rather than at {@link Tracer#buildSpan(String)} time.
+ *
+ * @return Scope|null
+ */
+ public function getActive(): ?Scope;
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Span.php b/vendor/opentracing/opentracing/src/OpenTracing/Span.php
new file mode 100644
index 000000000..9fa8c2bc2
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Span.php
@@ -0,0 +1,95 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use DateTimeInterface;
+
+interface Span
+{
+ /**
+ * @return string
+ */
+ public function getOperationName(): string;
+
+ /**
+ * Yields the SpanContext for this Span. Note that the return value of
+ * Span::getContext() is still valid after a call to Span::finish(), as is
+ * a call to Span::getContext() after a call to Span::finish().
+ *
+ * @return SpanContext
+ */
+ public function getContext(): SpanContext;
+
+ /**
+ * Sets the end timestamp and finalizes Span state.
+ *
+ * With the exception of calls to getContext() (which are always allowed),
+ * finish() must be the last call made to any span instance, and to do
+ * otherwise leads to undefined behavior but not returning an exception.
+ *
+ * As an implementor, make sure you call {@see Tracer::deactivate()}
+ * otherwise new spans might try to be child of this one.
+ *
+ * If the span is already finished, a warning should be logged.
+ *
+ * @param float|int|DateTimeInterface|null $finishTime if passing float or int
+ * it should represent the timestamp (including as many decimal places as you need)
+ * @return void
+ */
+ public function finish($finishTime = null): void;
+
+ /**
+ * If the span is already finished, a warning should be logged.
+ *
+ * @param string $newOperationName
+ * @return void
+ */
+ public function overwriteOperationName(string $newOperationName): void;
+
+ /**
+ * Adds a tag to the span.
+ *
+ * If there is a pre-existing tag set for key, it is overwritten.
+ *
+ * As an implementor, consider using "standard tags" listed in {@see \OpenTracing\Tags}
+ *
+ * If the span is already finished, a warning should be logged.
+ *
+ * @param string $key
+ * @param string|bool|int|float $value
+ * @return void
+ */
+ public function setTag(string $key, $value): void;
+
+ /**
+ * Adds a log record to the span in key => value format, key must be a string and tag must be either
+ * a string, a boolean value, or a numeric type.
+ *
+ * If the span is already finished, a warning should be logged.
+ *
+ * @param array $fields
+ * @param int|float|DateTimeInterface $timestamp
+ * @return void
+ */
+ public function log(array $fields = [], $timestamp = null): void;
+
+ /**
+ * Adds a baggage item to the SpanContext which is immutable so it is required to use
+ * SpanContext::withBaggageItem to get a new one.
+ *
+ * If the span is already finished, a warning should be logged.
+ *
+ * @param string $key
+ * @param string $value
+ * @return void
+ */
+ public function addBaggageItem(string $key, string $value): void;
+
+ /**
+ * @param string $key
+ * @return string|null returns null when there is not a item under the provided key
+ */
+ public function getBaggageItem(string $key): ?string;
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/SpanContext.php b/vendor/opentracing/opentracing/src/OpenTracing/SpanContext.php
new file mode 100644
index 000000000..ca05ff9ac
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/SpanContext.php
@@ -0,0 +1,37 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use IteratorAggregate;
+
+/**
+ * SpanContext must be immutable in order to avoid complicated lifetime
+ * issues around Span finish and references.
+ *
+ * Baggage items are key => value string pairs that apply to the given Span,
+ * its SpanContext, and all Spans which directly or transitively reference
+ * the local Span. That is, baggage items propagate in-band along with the
+ * trace itself.
+ */
+interface SpanContext extends IteratorAggregate
+{
+ /**
+ * Returns the value of a baggage item based on its key. If there is no
+ * value with such key it will return null.
+ *
+ * @param string $key
+ * @return string|null
+ */
+ public function getBaggageItem(string $key): ?string;
+
+ /**
+ * Creates a new SpanContext out of the existing one and the new key => value pair.
+ *
+ * @param string $key
+ * @param string $value
+ * @return SpanContext
+ */
+ public function withBaggageItem(string $key, string $value): SpanContext;
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/StartSpanOptions.php b/vendor/opentracing/opentracing/src/OpenTracing/StartSpanOptions.php
new file mode 100644
index 000000000..28b73ff0a
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/StartSpanOptions.php
@@ -0,0 +1,206 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use DateTime;
+use DateTimeInterface;
+use OpenTracing\InvalidReferencesSetException;
+use OpenTracing\InvalidSpanOptionException;
+
+final class StartSpanOptions
+{
+ /**
+ * @var Reference[]
+ */
+ private $references = [];
+
+ /**
+ * @var array
+ */
+ private $tags = [];
+
+ /**
+ * @var int|float|DateTimeInterface
+ */
+ private $startTime;
+
+ /**
+ * Only used for spans that are actively managed by scope manager.
+ *
+ * @var bool
+ */
+ private $finishSpanOnClose = ScopeManager::DEFAULT_FINISH_SPAN_ON_CLOSE;
+
+ /**
+ * @var bool
+ */
+ private $ignoreActiveSpan = false;
+
+ /**
+ * @param array $options
+ * @return StartSpanOptions
+ * @throws InvalidReferencesSetException when there are inconsistencies about the references
+ * @throws InvalidSpanOptionException when one of the options is invalid
+ */
+ public static function create(array $options): StartSpanOptions
+ {
+ $spanOptions = new self();
+
+ foreach ($options as $key => $value) {
+ switch ($key) {
+ case 'child_of':
+ if (!empty($spanOptions->references)) {
+ throw InvalidSpanOptionException::forIncludingBothChildOfAndReferences();
+ }
+
+ $spanOptions->references[] = self::buildChildOf($value);
+ break;
+
+ case 'references':
+ if (!empty($spanOptions->references)) {
+ throw InvalidSpanOptionException::forIncludingBothChildOfAndReferences();
+ }
+
+ if ($value instanceof Reference) {
+ $spanOptions->references = [$value];
+ } elseif (is_array($value)) {
+ $spanOptions->references = self::buildReferences($value);
+ } else {
+ throw InvalidSpanOptionException::forInvalidReferenceSet($value);
+ }
+
+ break;
+
+ case 'tags':
+ if (!is_array($value)) {
+ throw InvalidSpanOptionException::forInvalidTags($value);
+ }
+
+ foreach ($value as $tag => $tagValue) {
+ if ($tag !== (string)$tag) {
+ throw InvalidSpanOptionException::forInvalidTag($tag);
+ }
+
+ $spanOptions->tags[$tag] = $tagValue;
+ }
+ break;
+
+ case 'start_time':
+ if (is_scalar($value) && !is_numeric($value)) {
+ throw InvalidSpanOptionException::forInvalidStartTime();
+ }
+
+ $spanOptions->startTime = $value;
+ break;
+
+ case 'finish_span_on_close':
+ if (!is_bool($value)) {
+ throw InvalidSpanOptionException::forFinishSpanOnClose($value);
+ }
+
+ $spanOptions->finishSpanOnClose = $value;
+ break;
+
+ case 'ignore_active_span':
+ if (!is_bool($value)) {
+ throw InvalidSpanOptionException::forIgnoreActiveSpan($value);
+ }
+
+ $spanOptions->ignoreActiveSpan = $value;
+ break;
+
+ default:
+ throw InvalidSpanOptionException::forUnknownOption($key);
+ }
+ }
+
+ return $spanOptions;
+ }
+
+ /**
+ * @param Span|SpanContext $parent
+ * @return StartSpanOptions
+ */
+ public function withParent($parent): StartSpanOptions
+ {
+ $newSpanOptions = new StartSpanOptions();
+ $newSpanOptions->references[] = self::buildChildOf($parent);
+ $newSpanOptions->tags = $this->tags;
+ $newSpanOptions->startTime = $this->startTime;
+ $newSpanOptions->finishSpanOnClose = $this->finishSpanOnClose;
+ $newSpanOptions->ignoreActiveSpan = $this->ignoreActiveSpan;
+
+ return $newSpanOptions;
+ }
+
+ /**
+ * @return Reference[]
+ */
+ public function getReferences(): array
+ {
+ return $this->references;
+ }
+
+ /**
+ * @return array
+ */
+ public function getTags(): array
+ {
+ return $this->tags;
+ }
+
+ /**
+ * @return int|float|DateTime|null if returning float or int it should represent
+ * the timestamp (including as many decimal places as you need)
+ */
+ public function getStartTime()
+ {
+ return $this->startTime;
+ }
+
+ /**
+ * @return bool
+ */
+ public function shouldFinishSpanOnClose(): bool
+ {
+ return $this->finishSpanOnClose;
+ }
+
+ /**
+ * @return bool
+ */
+ public function shouldIgnoreActiveSpan(): bool
+ {
+ return $this->ignoreActiveSpan;
+ }
+
+ private static function buildChildOf($value): Reference
+ {
+ if ($value instanceof Span) {
+ return Reference::createForSpan(Reference::CHILD_OF, $value);
+ }
+
+ if ($value instanceof SpanContext) {
+ return new Reference(Reference::CHILD_OF, $value);
+ }
+
+ throw InvalidSpanOptionException::forInvalidChildOf($value);
+ }
+
+ private static function buildReferences(array $referencesArray): array
+ {
+ $references = [];
+
+ foreach ($referencesArray as $reference) {
+ if (!($reference instanceof Reference)) {
+ throw InvalidSpanOptionException::forInvalidReference($reference);
+ }
+
+ $references[] = $reference;
+ }
+
+ return $references;
+ }
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Tags.php b/vendor/opentracing/opentracing/src/OpenTracing/Tags.php
new file mode 100644
index 000000000..5d06627de
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Tags.php
@@ -0,0 +1,124 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Tags;
+
+/**
+ * SpanKind hints at relationship between spans, e.g. client/server
+ */
+const SPAN_KIND = 'span.kind';
+
+/**
+ * Marks a span representing the client-side of an RPC or other remote call
+ */
+const SPAN_KIND_RPC_CLIENT = 'client';
+
+/**
+ * Marks a span representing the server-side of an RPC or other remote call
+ */
+const SPAN_KIND_RPC_SERVER = 'server';
+
+/**
+ * Marks a span as representing the producer within a messaging context
+ */
+const SPAN_KIND_MESSAGE_BUS_PRODUCER = 'producer';
+
+/**
+ * Marks a span as representing the consumer within a messaging context
+ */
+const SPAN_KIND_MESSAGE_BUS_CONSUMER = 'consumer';
+
+/**
+ * Component is a low-cardinality identifier of the module, library,
+ * or package that is generating a span.
+ */
+const COMPONENT = 'component';
+
+/**
+ * SAMPLING_PRIORITY (uint16) determines the priority of sampling this Span.
+ */
+const SAMPLING_PRIORITY = 'sampling.priority';
+
+/**
+ * PeerService records the service name of the peer
+ */
+const PEER_SERVICE = 'peer.service';
+
+/**
+ * PeerHostname records the host name of the peer
+ */
+const PEER_HOSTNAME = 'peer.hostname';
+
+/**
+ * PEER_ADDRESS (string) suitable for use in a networking client library.
+ * This may be a "ip:port", a bare "hostname", a FQDN, or even a # JDBC
+ * substring like "mysql://prod-db:3306"
+ */
+const PEER_ADDRESS = 'peer.address';
+
+/**
+ * PEER_HOST_IPV4 (uint32) records IP v4 host address of the peer
+ */
+const PEER_HOST_IPV4 = 'peer.ipv4';
+
+/**
+ * PEER_HOST_IPV6 (string) records IP v6 host address of the peer
+ */
+const PEER_HOST_IPV6 = 'peer.ipv6';
+
+/** PEER_PORT (uint16) records port number of the peer */
+const PEER_PORT = 'peer.port';
+
+/**
+ * HTTPUrl should be the URL of the request being handled in this segment
+ * of the trace, in standard URI format. The protocol is optional.
+ */
+const HTTP_URL = 'http.url';
+
+/**
+ * HTTPMethod is the HTTP method of the request, and is case-insensitive.
+ */
+const HTTP_METHOD = 'http.method';
+
+/**
+ * HTTPStatusCode is the numeric HTTP status code (200, 404, etc) of the
+ * HTTP response.
+ */
+const HTTP_STATUS_CODE = 'http.status_code';
+
+/**
+ * DATABASE_INSTANCE (string) The database instance name.
+ */
+const DATABASE_INSTANCE = 'db.instance';
+
+/**
+ * DATABASE_STATEMENT (string) A database statement for the given database
+ * type. E.g., for db.type="SQL", "SELECT * FROM user_table"; # for
+ * db.type="redis", "SET mykey 'WuValue'". */
+const DATABASE_STATEMENT = 'db.statement';
+
+/**
+ * DATABASE_TYPE (string) For any SQL database, "sql". For others, the lower-case
+ * database category, e.g. "cassandra", "hbase", or "redis".
+ */
+const DATABASE_TYPE = 'db.type';
+
+/**
+ * DATABASE_USER (string) Username for accessing database. E.g., "readonly_user" or
+ * "reporting_user"
+ */
+const DATABASE_USER = 'db.user';
+
+/**
+ * MESSAGE_BUS_DESTINATION (string) An address at which messages can be #
+ * exchanged. E.g. A Kafka record has an associated "topic name" that can #
+ * be extracted by the instrumented producer or consumer and stored # using
+ * this tag.
+ */
+const MESSAGE_BUS_DESTINATION = 'message_bus.destination';
+
+/**
+ * Error indicates that operation represented by the span resulted in an error.
+ */
+const ERROR = 'error';
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/Tracer.php b/vendor/opentracing/opentracing/src/OpenTracing/Tracer.php
new file mode 100644
index 000000000..391a5159b
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/Tracer.php
@@ -0,0 +1,119 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use OpenTracing\UnsupportedFormatException;
+use OpenTracing\InvalidSpanOptionException;
+use OpenTracing\InvalidReferencesSetException;
+
+interface Tracer
+{
+ /**
+ * Returns the current {@link ScopeManager}, which may be a noop but may not be null.
+ *
+ * @return ScopeManager
+ */
+ public function getScopeManager(): ScopeManager;
+
+ /**
+ * Returns the active {@link Span}. This is a shorthand for
+ * Tracer::getScopeManager()->getActive()->getSpan(),
+ * and null will be returned if {@link Scope#active()} is null.
+ *
+ * @return Span|null
+ */
+ public function getActiveSpan(): ?Span;
+
+ /**
+ * Starts a new span that is activated on a scope manager.
+ *
+ * It's also possible to not finish the {@see \OpenTracing\Span} when
+ * {@see \OpenTracing\Scope} context expires:
+ *
+ * $scope = $tracer->startActiveSpan('...', [
+ * 'finish_span_on_close' => false,
+ * ]);
+ * $span = $scope->getSpan();
+ * try {
+ * $span->setTag(Tags\HTTP_METHOD, 'GET');
+ * // ...
+ * } finally {
+ * $scope->close();
+ * }
+ * // $span->finish() is not called as part of Scope deactivation as
+ * // finish_span_on_close is false
+ *
+ * @param string $operationName
+ * @param array|StartSpanOptions $options Same as for startSpan() with
+ * additional option of `finish_span_on_close` that enables finishing
+ * of span whenever a scope is closed. It is true by default.
+ *
+ * @return Scope A Scope that holds newly created Span and is activated on
+ * a ScopeManager.
+ */
+ public function startActiveSpan(string $operationName, $options = []): Scope;
+
+ /**
+ * Starts and returns a new span representing a unit of work.
+ *
+ * Whenever `child_of` reference is not passed then
+ * {@see \OpenTracing\ScopeManager::getActive()} span is used as `child_of`
+ * reference. In order to ignore implicit parent span pass in
+ * `ignore_active_span` option set to true.
+ *
+ * Starting a span with explicit parent:
+ *
+ * $tracer->startSpan('...', [
+ * 'child_of' => $parentSpan,
+ * ]);
+ *
+ * @param string $operationName
+ * @param array|StartSpanOptions $options See StartSpanOptions for
+ * available options.
+ *
+ * @return Span
+ *
+ * @throws InvalidSpanOptionException for invalid option
+ * @throws InvalidReferencesSetException for invalid references set
+ * @see \OpenTracing\StartSpanOptions
+ */
+ public function startSpan(string $operationName, $options = []): Span;
+
+ /**
+ * @param SpanContext $spanContext
+ * @param string $format
+ * @param mixed $carrier
+ * @return void
+ *
+ * @throws UnsupportedFormatException when the format is not recognized by the tracer
+ * implementation
+ * @see Formats
+ */
+ public function inject(SpanContext $spanContext, string $format, &$carrier): void;
+
+ /**
+ * @param string $format
+ * @param mixed $carrier
+ * @return SpanContext|null
+ *
+ * @throws UnsupportedFormatException when the format is not recognized by the tracer
+ * implementation
+ * @see Formats
+ */
+ public function extract(string $format, $carrier): ?SpanContext;
+
+ /**
+ * Allow tracer to send span data to be instrumented.
+ *
+ * This method might not be needed depending on the tracing implementation
+ * but one should make sure this method is called after the request is delivered
+ * to the client.
+ *
+ * As an implementor, a good idea would be to use {@see register_shutdown_function}
+ * or {@see fastcgi_finish_request} in order to not to delay the end of the request
+ * to the client.
+ */
+ public function flush(): void;
+}
diff --git a/vendor/opentracing/opentracing/src/OpenTracing/UnsupportedFormatException.php b/vendor/opentracing/opentracing/src/OpenTracing/UnsupportedFormatException.php
new file mode 100644
index 000000000..dd4ef56a3
--- /dev/null
+++ b/vendor/opentracing/opentracing/src/OpenTracing/UnsupportedFormatException.php
@@ -0,0 +1,22 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing;
+
+use UnexpectedValueException;
+
+/**
+ * Thrown when trying to inject or extract in an invalid format
+ */
+final class UnsupportedFormatException extends UnexpectedValueException
+{
+ /**
+ * @param string $format
+ * @return UnsupportedFormatException
+ */
+ public static function forFormat(string $format): UnsupportedFormatException
+ {
+ return new self(sprintf('The format "%s" is not supported.', $format));
+ }
+}
diff --git a/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockScopeManagerTest.php b/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockScopeManagerTest.php
new file mode 100644
index 000000000..eeca24497
--- /dev/null
+++ b/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockScopeManagerTest.php
@@ -0,0 +1,63 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Tests\Mock;
+
+use OpenTracing\Mock\MockScopeManager;
+use OpenTracing\Mock\MockTracer;
+use PHPUnit\Framework\TestCase;
+
+final class MockScopeManagerTest extends TestCase
+{
+ private const OPERATION_NAME = 'test_name';
+
+ public function testGetActiveFailsWithNoActiveSpans()
+ {
+ $scopeManager = new MockScopeManager();
+
+ $this->assertNull($scopeManager->getActive());
+ }
+
+ public function testActivateSuccess()
+ {
+ $tracer = new MockTracer();
+ $span = $tracer->startSpan(self::OPERATION_NAME);
+ $scopeManager = new MockScopeManager();
+ $scopeManager->activate($span);
+
+ $this->assertSame($span, $scopeManager->getActive()->getSpan());
+ }
+
+ public function testGetScopeReturnsNull()
+ {
+ $tracer = new MockTracer();
+ $tracer->startSpan(self::OPERATION_NAME);
+ $scopeManager = new MockScopeManager();
+
+ $this->assertNull($scopeManager->getActive());
+ }
+
+ public function testGetScopeSuccess()
+ {
+ $tracer = new MockTracer();
+ $span = $tracer->startSpan(self::OPERATION_NAME);
+ $scopeManager = new MockScopeManager();
+ $scopeManager->activate($span);
+ $scope = $scopeManager->getActive();
+
+ $this->assertSame($span, $scope->getSpan());
+ }
+
+ public function testDeactivateSuccess()
+ {
+ $tracer = new MockTracer();
+ $span = $tracer->startSpan(self::OPERATION_NAME);
+ $scopeManager = new MockScopeManager();
+ $scopeManager->activate($span);
+ $scope = $scopeManager->getActive();
+ $scopeManager->deactivate($scope);
+
+ $this->assertNull($scopeManager->getActive());
+ }
+}
diff --git a/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockSpanContextTest.php b/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockSpanContextTest.php
new file mode 100644
index 000000000..501450b24
--- /dev/null
+++ b/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockSpanContextTest.php
@@ -0,0 +1,54 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Tests\Mock;
+
+use OpenTracing\Mock\MockSpanContext;
+use PHPUnit\Framework\TestCase;
+
+final class MockSpanContextTest extends TestCase
+{
+ private const TRACE_ID = 123987;
+ private const SPAN_ID = 555632;
+ private const IS_SAMPLED = true;
+ private const BAGGAGE_ITEM_KEY = 'test_key';
+ private const BAGGAGE_ITEM_VALUE = 'test_value';
+
+ public function testCreateAsRootSuccess()
+ {
+ $parentContext = MockSpanContext::createAsRoot();
+ $childContext = MockSpanContext::createAsChildOf($parentContext);
+
+ $this->assertEquals($parentContext->getTraceId(), $childContext->getTraceId());
+ }
+
+ public function testCreateMockSpanContextSuccess()
+ {
+ $spanContext = MockSpanContext::create(
+ self::TRACE_ID,
+ self::SPAN_ID,
+ self::IS_SAMPLED,
+ [self::BAGGAGE_ITEM_KEY => self::BAGGAGE_ITEM_VALUE]
+ );
+
+ $this->assertEquals($spanContext->getTraceId(), self::TRACE_ID);
+ $this->assertEquals($spanContext->getSpanId(), self::SPAN_ID);
+ $this->assertEquals($spanContext->isSampled(), self::IS_SAMPLED);
+ $this->assertEquals([self::BAGGAGE_ITEM_KEY => self::BAGGAGE_ITEM_VALUE], iterator_to_array($spanContext));
+ $this->assertEquals(self::BAGGAGE_ITEM_VALUE, $spanContext->getBaggageItem(self::BAGGAGE_ITEM_KEY));
+ }
+
+ public function testAddBaggageItemSuccess()
+ {
+ $spanContext = MockSpanContext::create(
+ self::TRACE_ID,
+ self::SPAN_ID,
+ self::IS_SAMPLED
+ );
+ $this->assertEmpty(iterator_to_array($spanContext));
+
+ $spanContext = $spanContext->withBaggageItem(self::BAGGAGE_ITEM_KEY, self::BAGGAGE_ITEM_VALUE);
+ $this->assertEquals([self::BAGGAGE_ITEM_KEY => self::BAGGAGE_ITEM_VALUE], iterator_to_array($spanContext));
+ }
+}
diff --git a/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockSpanTest.php b/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockSpanTest.php
new file mode 100644
index 000000000..51e4b66f8
--- /dev/null
+++ b/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockSpanTest.php
@@ -0,0 +1,52 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Tests\Mock;
+
+use OpenTracing\Mock\MockSpan;
+use OpenTracing\Mock\MockSpanContext;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers MockSpan
+ */
+final class MockSpanTest extends TestCase
+{
+ private const OPERATION_NAME = 'test';
+ private const DURATION = 10;
+ private const TAG_KEY = 'test_key';
+ private const TAG_VALUE = 'test_value';
+ private const LOG_FIELD = 'test_log';
+
+ public function testCreateSpanSuccess()
+ {
+ $startTime = time();
+ $span = new MockSpan(self::OPERATION_NAME, MockSpanContext::createAsRoot(), $startTime);
+
+ $this->assertEquals($startTime, $span->getStartTime());
+ $this->assertEmpty($span->getTags());
+ $this->assertEmpty($span->getLogs());
+ }
+
+ public function testAddTagsAndLogsToSpanSuccess()
+ {
+ $span = new MockSpan(self::OPERATION_NAME, MockSpanContext::createAsRoot());
+
+ $span->setTag(self::TAG_KEY, self::TAG_VALUE);
+ $span->log([self::LOG_FIELD]);
+
+ $this->assertEquals([self::TAG_KEY => self::TAG_VALUE], $span->getTags());
+ $this->assertEquals(self::LOG_FIELD, $span->getLogs()[0]['fields'][0]);
+ }
+
+ public function testSpanIsFinished()
+ {
+ $startTime = time();
+ $span = new MockSpan(self::OPERATION_NAME, MockSpanContext::createAsRoot(), $startTime);
+ $span->finish($startTime + self::DURATION);
+
+ $this->assertTrue($span->isFinished());
+ $this->assertEquals(self::DURATION, $span->getDuration());
+ }
+}
diff --git a/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockTracerTest.php b/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockTracerTest.php
new file mode 100644
index 000000000..ab2faf159
--- /dev/null
+++ b/vendor/opentracing/opentracing/tests/OpenTracing/Mock/MockTracerTest.php
@@ -0,0 +1,139 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Tests\Mock;
+
+use OpenTracing\InvalidReferenceArgumentException;
+use OpenTracing\UnsupportedFormatException;
+use OpenTracing\Mock\MockTracer;
+use OpenTracing\NoopSpanContext;
+use OpenTracing\Reference;
+use OpenTracing\Span;
+use OpenTracing\SpanContext;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers MockTracer
+ */
+final class MockTracerTest extends TestCase
+{
+ private const OPERATION_NAME = 'test_name';
+ private const FORMAT = 'test_format';
+
+ public function testStartActiveSpanSuccess()
+ {
+ $tracer = new MockTracer();
+ $scope = $tracer->startActiveSpan(self::OPERATION_NAME);
+ $activeSpan = $tracer->getActiveSpan();
+
+ $this->assertEquals($scope->getSpan(), $activeSpan);
+ }
+
+ public function testStartSpanSuccess()
+ {
+ $tracer = new MockTracer();
+ $tracer->startSpan(self::OPERATION_NAME);
+ $activeSpan = $tracer->getActiveSpan();
+
+ $this->assertNull($activeSpan);
+ }
+
+ public function testStartSpanWithReference(): void
+ {
+ $tracer = new MockTracer();
+ $tracer->startSpan('parent_name');
+ /** @var Span $parentSpan */
+ $parentSpan = $tracer->getSpans()[0];
+ $tracer->startSpan(
+ self::OPERATION_NAME,
+ ['references' => [Reference::createForSpan(Reference::CHILD_OF, $parentSpan)]]
+ );
+ $activeSpan = $tracer->getActiveSpan();
+
+ self::assertNull($activeSpan);
+ }
+
+ public function testStartSpanWithReferenceWithoutExpectedContextType(): void
+ {
+ $tracer = new MockTracer();
+ $notAMockContext = new NoopSpanContext();
+
+ $this->expectException(InvalidReferenceArgumentException::class);
+
+ $tracer->startSpan(
+ self::OPERATION_NAME,
+ ['references' => [new Reference(Reference::CHILD_OF, $notAMockContext)]]
+ );
+ }
+
+ public function testInjectWithNoInjectorsFails()
+ {
+ $tracer = new MockTracer();
+ $span = $tracer->startSpan(self::OPERATION_NAME);
+ $carrier = [];
+
+ $this->expectException(UnsupportedFormatException::class);
+ $tracer->inject($span->getContext(), self::FORMAT, $carrier);
+ }
+
+ public function testInjectSuccess()
+ {
+ $actualSpanContext = null;
+ $actualCarrier = null;
+
+ $injector = function ($spanContext, &$carrier) use (&$actualSpanContext, &$actualCarrier) {
+ $actualSpanContext = $spanContext;
+ $actualCarrier = $carrier;
+ };
+
+ $tracer = new MockTracer([self::FORMAT => $injector]);
+ $span = $tracer->startSpan(self::OPERATION_NAME);
+ $carrier = [];
+ $tracer->inject($span->getContext(), self::FORMAT, $carrier);
+
+ $this->assertSame($span->getContext(), $actualSpanContext);
+ $this->assertSame($carrier, $actualCarrier);
+ }
+
+ public function testExtractWithNoExtractorsFails()
+ {
+ $tracer = new MockTracer();
+ $carrier = [];
+
+ $this->expectException(UnsupportedFormatException::class);
+ $tracer->extract(self::FORMAT, $carrier);
+ }
+
+ public function testExtractSuccess()
+ {
+ $actualSpanContext = null;
+ $actualCarrier = null;
+
+ $extractor = function ($carrier) use (&$actualCarrier) {
+ $actualCarrier = $carrier;
+ return new NoopSpanContext();
+ };
+
+ $tracer = new MockTracer([], [self::FORMAT => $extractor]);
+ $carrier = [
+ 'TRACE_ID' => 'trace_id'
+ ];
+
+ $spanContext = $tracer->extract(self::FORMAT, $carrier);
+
+ $this->assertInstanceOf(SpanContext::class, $spanContext);
+ }
+
+ public function testFlushSuccess()
+ {
+ $tracer = new MockTracer();
+ $tracer->startSpan(self::OPERATION_NAME);
+
+ $this->assertCount(1, $tracer->getSpans());
+
+ $tracer->flush();
+
+ $this->assertCount(0, $tracer->getSpans());
+ }
+}
diff --git a/vendor/opentracing/opentracing/tests/OpenTracing/ReferenceTest.php b/vendor/opentracing/opentracing/tests/OpenTracing/ReferenceTest.php
new file mode 100644
index 000000000..cb971a20c
--- /dev/null
+++ b/vendor/opentracing/opentracing/tests/OpenTracing/ReferenceTest.php
@@ -0,0 +1,45 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Tests;
+
+use TypeError;
+use PHPUnit\Framework\TestCase;
+use OpenTracing\Reference;
+use OpenTracing\NoopSpanContext;
+use OpenTracing\InvalidReferenceArgumentException;
+
+/**
+ * @covers Reference
+ */
+final class ReferenceTest extends TestCase
+{
+ const REFERENCE_TYPE = 'ref_type';
+
+ public function testCreateAReferenceFailsOnInvalidContext()
+ {
+ $context = 'invalid_context';
+
+ $this->expectException(TypeError::class);
+ new Reference('child_of', $context);
+ }
+
+ public function testCreateAReferenceFailsOnEmptyType()
+ {
+ $context = new NoopSpanContext();
+
+ $this->expectException(InvalidReferenceArgumentException::class);
+ $this->expectExceptionMessage('Reference type can not be an empty string');
+ new Reference('', $context);
+ }
+
+ public function testAReferenceCanBeCreatedAsACustomType()
+ {
+ $context = new NoopSpanContext();
+ $reference = new Reference(self::REFERENCE_TYPE, $context);
+
+ $this->assertSame($context, $reference->getSpanContext());
+ $this->assertTrue($reference->isType(self::REFERENCE_TYPE));
+ }
+}
diff --git a/vendor/opentracing/opentracing/tests/OpenTracing/StartSpanOptionsTest.php b/vendor/opentracing/opentracing/tests/OpenTracing/StartSpanOptionsTest.php
new file mode 100644
index 000000000..d7e1504a8
--- /dev/null
+++ b/vendor/opentracing/opentracing/tests/OpenTracing/StartSpanOptionsTest.php
@@ -0,0 +1,129 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTracing\Tests;
+
+use DateTime;
+use OpenTracing\InvalidSpanOptionException;
+use OpenTracing\NoopSpanContext;
+use OpenTracing\Reference;
+use OpenTracing\StartSpanOptions;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers StartSpanOptions
+ */
+final class StartSpanOptionsTest extends TestCase
+{
+ const REFERENCE_TYPE = 'a_reference_type';
+
+ public function testSpanOptionsCanNotBeCreatedDueToInvalidOption()
+ {
+ $this->expectException(InvalidSpanOptionException::class);
+
+ StartSpanOptions::create([
+ 'unknown_option' => 'value'
+ ]);
+ }
+
+ public function testSpanOptionsWithInvalidCloseOnFinishOption()
+ {
+ $this->expectException(InvalidSpanOptionException::class);
+
+ StartSpanOptions::create([
+ 'finish_span_on_close' => 'value'
+ ]);
+ }
+
+ public function testSpanOptionsCanNotBeCreatedBecauseInvalidStartTime()
+ {
+ $this->expectException(InvalidSpanOptionException::class);
+
+ StartSpanOptions::create([
+ 'start_time' => 'abc'
+ ]);
+ }
+
+ /** @dataProvider validStartTime */
+ public function testSpanOptionsCanBeCreatedBecauseWithValidStartTime($startTime)
+ {
+ $spanOptions = StartSpanOptions::create([
+ 'start_time' => $startTime
+ ]);
+
+ $this->assertEquals($spanOptions->getStartTime(), $startTime);
+ }
+
+ public function validStartTime()
+ {
+ return [
+ [new DateTime()],
+ ['1499355363'],
+ [1499355363],
+ [1499355363.123456]
+ ];
+ }
+
+ public function testSpanOptionsCanBeCreatedWithValidReference()
+ {
+ $context = new NoopSpanContext();
+
+ $options = [
+ 'references' => new Reference(self::REFERENCE_TYPE, $context),
+ ];
+
+ $spanOptions = StartSpanOptions::create($options);
+ $references = $spanOptions->getReferences()[0];
+
+ $this->assertTrue($references->isType(self::REFERENCE_TYPE));
+ $this->assertSame($context, $references->getSpanContext());
+ }
+
+ public function testSpanOptionsDefaultCloseOnFinishValue()
+ {
+ $options = StartSpanOptions::create([]);
+
+ $this->assertTrue($options->shouldFinishSpanOnClose());
+ }
+
+ public function testSpanOptionsWithValidFinishSpanOnClose()
+ {
+ $options = StartSpanOptions::create([
+ 'finish_span_on_close' => false,
+ ]);
+
+ $this->assertFalse($options->shouldFinishSpanOnClose());
+ }
+
+ public function testSpanOptionsAddsANewReference()
+ {
+ $context1 = new NoopSpanContext();
+ $spanOptions = StartSpanOptions::create([
+ 'child_of' => $context1,
+ ]);
+ $this->assertCount(1, $spanOptions->getReferences());
+
+ $context2 = new NoopSpanContext();
+ $spanOptions = $spanOptions->withParent($context2);
+
+ $this->assertCount(1, $spanOptions->getReferences());
+ $this->assertSame($context2, $spanOptions->getReferences()[0]->getSpanContext());
+ }
+
+ public function testDefaultIgnoreActiveSpan()
+ {
+ $options = StartSpanOptions::create([]);
+
+ $this->assertFalse($options->shouldIgnoreActiveSpan());
+ }
+
+ public function testSpanOptionsWithValidIgnoreActiveSpan()
+ {
+ $options = StartSpanOptions::create([
+ 'ignore_active_span' => true,
+ ]);
+
+ $this->assertTrue($options->shouldIgnoreActiveSpan());
+ }
+}
diff --git a/vendor/packaged/thrift/.gitignore b/vendor/packaged/thrift/.gitignore
new file mode 100644
index 000000000..ff72e2d08
--- /dev/null
+++ b/vendor/packaged/thrift/.gitignore
@@ -0,0 +1,2 @@
+/composer.lock
+/vendor
diff --git a/vendor/packaged/thrift/README.md b/vendor/packaged/thrift/README.md
new file mode 100644
index 000000000..c35ca057e
--- /dev/null
+++ b/vendor/packaged/thrift/README.md
@@ -0,0 +1,44 @@
+Apache Thrift
+=====
+
+The code provided by this library is from:
+https://github.com/apache/thrift/tree/master/lib/php/lib
+
+This repo has been created to provide the thrift protocol via composer
+
+
+Thrift PHP Software Library
+
+License
+=======
+
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+
+Dependencies
+============
+
+PHP_INT_SIZE
+
+ This built-in signals whether your architecture is 32 or 64 bit and is
+ used by the TBinaryProtocol to properly use pack() and unpack() to
+ serialize data.
+
+apc_fetch(), apc_store()
+
+ APC cache is used by the TSocketPool class. If you do not have APC installed,
+ Thrift will fill in null stub function definitions.
diff --git a/vendor/packaged/thrift/composer.json b/vendor/packaged/thrift/composer.json
new file mode 100644
index 000000000..8a8227dd3
--- /dev/null
+++ b/vendor/packaged/thrift/composer.json
@@ -0,0 +1,16 @@
+{
+ "name": "packaged/thrift",
+ "description": "Apache Thrift",
+ "keywords": ["thrift", "apache"],
+ "homepage": "http://thrift.apache.org/",
+ "minimum-stability": "stable",
+ "license": "Apache-2.0",
+ "require": {
+ "php": "^5.5 || ^7.0 || ^8.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Thrift\\": "src/"
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Base/TBase.php b/vendor/packaged/thrift/src/Base/TBase.php
new file mode 100644
index 000000000..c61b631af
--- /dev/null
+++ b/vendor/packaged/thrift/src/Base/TBase.php
@@ -0,0 +1,382 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift
+ */
+
+namespace Thrift\Base;
+
+use Thrift\Type\TType;
+
+/**
+ * Base class from which other Thrift structs extend. This is so that we can
+ * cut back on the size of the generated code which is turning out to have a
+ * nontrivial cost just to load thanks to the wondrously abysmal implementation
+ * of PHP. Note that code is intentionally duplicated in here to avoid making
+ * function calls for every field or member of a container..
+ */
+abstract class TBase
+{
+ public static $tmethod = array(
+ TType::BOOL => 'Bool',
+ TType::BYTE => 'Byte',
+ TType::I16 => 'I16',
+ TType::I32 => 'I32',
+ TType::I64 => 'I64',
+ TType::DOUBLE => 'Double',
+ TType::STRING => 'String'
+ );
+
+ abstract public function read($input);
+
+ abstract public function write($output);
+
+ public function __construct($spec = null, $vals = null)
+ {
+ if (is_array($spec) && is_array($vals)) {
+ foreach ($spec as $fid => $fspec) {
+ $var = $fspec['var'];
+ if (isset($vals[$var])) {
+ $this->$var = $vals[$var];
+ }
+ }
+ }
+ }
+
+ public function __wakeup()
+ {
+ $this->__construct(get_object_vars($this));
+ }
+
+ private function _readMap(&$var, $spec, $input)
+ {
+ $xfer = 0;
+ $ktype = $spec['ktype'];
+ $vtype = $spec['vtype'];
+ $kread = $vread = null;
+ if (isset(TBase::$tmethod[$ktype])) {
+ $kread = 'read' . TBase::$tmethod[$ktype];
+ } else {
+ $kspec = $spec['key'];
+ }
+ if (isset(TBase::$tmethod[$vtype])) {
+ $vread = 'read' . TBase::$tmethod[$vtype];
+ } else {
+ $vspec = $spec['val'];
+ }
+ $var = array();
+ $_ktype = $_vtype = $size = 0;
+ $xfer += $input->readMapBegin($_ktype, $_vtype, $size);
+ for ($i = 0; $i < $size; ++$i) {
+ $key = $val = null;
+ if ($kread !== null) {
+ $xfer += $input->$kread($key);
+ } else {
+ switch ($ktype) {
+ case TType::STRUCT:
+ $class = $kspec['class'];
+ $key = new $class();
+ $xfer += $key->read($input);
+ break;
+ case TType::MAP:
+ $xfer += $this->_readMap($key, $kspec, $input);
+ break;
+ case TType::LST:
+ $xfer += $this->_readList($key, $kspec, $input, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_readList($key, $kspec, $input, true);
+ break;
+ }
+ }
+ if ($vread !== null) {
+ $xfer += $input->$vread($val);
+ } else {
+ switch ($vtype) {
+ case TType::STRUCT:
+ $class = $vspec['class'];
+ $val = new $class();
+ $xfer += $val->read($input);
+ break;
+ case TType::MAP:
+ $xfer += $this->_readMap($val, $vspec, $input);
+ break;
+ case TType::LST:
+ $xfer += $this->_readList($val, $vspec, $input, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_readList($val, $vspec, $input, true);
+ break;
+ }
+ }
+ $var[$key] = $val;
+ }
+ $xfer += $input->readMapEnd();
+
+ return $xfer;
+ }
+
+ private function _readList(&$var, $spec, $input, $set = false)
+ {
+ $xfer = 0;
+ $etype = $spec['etype'];
+ $eread = $vread = null;
+ if (isset(TBase::$tmethod[$etype])) {
+ $eread = 'read' . TBase::$tmethod[$etype];
+ } else {
+ $espec = $spec['elem'];
+ }
+ $var = array();
+ $_etype = $size = 0;
+ if ($set) {
+ $xfer += $input->readSetBegin($_etype, $size);
+ } else {
+ $xfer += $input->readListBegin($_etype, $size);
+ }
+ for ($i = 0; $i < $size; ++$i) {
+ $elem = null;
+ if ($eread !== null) {
+ $xfer += $input->$eread($elem);
+ } else {
+ $espec = $spec['elem'];
+ switch ($etype) {
+ case TType::STRUCT:
+ $class = $espec['class'];
+ $elem = new $class();
+ $xfer += $elem->read($input);
+ break;
+ case TType::MAP:
+ $xfer += $this->_readMap($elem, $espec, $input);
+ break;
+ case TType::LST:
+ $xfer += $this->_readList($elem, $espec, $input, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_readList($elem, $espec, $input, true);
+ break;
+ }
+ }
+ if ($set) {
+ $var[$elem] = true;
+ } else {
+ $var [] = $elem;
+ }
+ }
+ if ($set) {
+ $xfer += $input->readSetEnd();
+ } else {
+ $xfer += $input->readListEnd();
+ }
+
+ return $xfer;
+ }
+
+ protected function _read($class, $spec, $input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true) {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ if (isset($spec[$fid])) {
+ $fspec = $spec[$fid];
+ $var = $fspec['var'];
+ if ($ftype == $fspec['type']) {
+ $xfer = 0;
+ if (isset(TBase::$tmethod[$ftype])) {
+ $func = 'read' . TBase::$tmethod[$ftype];
+ $xfer += $input->$func($this->$var);
+ } else {
+ switch ($ftype) {
+ case TType::STRUCT:
+ $class = $fspec['class'];
+ $this->$var = new $class();
+ $xfer += $this->$var->read($input);
+ break;
+ case TType::MAP:
+ $xfer += $this->_readMap($this->$var, $fspec, $input);
+ break;
+ case TType::LST:
+ $xfer += $this->_readList($this->$var, $fspec, $input, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_readList($this->$var, $fspec, $input, true);
+ break;
+ }
+ }
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+
+ return $xfer;
+ }
+
+ private function _writeMap($var, $spec, $output)
+ {
+ $xfer = 0;
+ $ktype = $spec['ktype'];
+ $vtype = $spec['vtype'];
+ $kwrite = $vwrite = null;
+ if (isset(TBase::$tmethod[$ktype])) {
+ $kwrite = 'write' . TBase::$tmethod[$ktype];
+ } else {
+ $kspec = $spec['key'];
+ }
+ if (isset(TBase::$tmethod[$vtype])) {
+ $vwrite = 'write' . TBase::$tmethod[$vtype];
+ } else {
+ $vspec = $spec['val'];
+ }
+ $xfer += $output->writeMapBegin($ktype, $vtype, count($var));
+ foreach ($var as $key => $val) {
+ if (isset($kwrite)) {
+ $xfer += $output->$kwrite($key);
+ } else {
+ switch ($ktype) {
+ case TType::STRUCT:
+ $xfer += $key->write($output);
+ break;
+ case TType::MAP:
+ $xfer += $this->_writeMap($key, $kspec, $output);
+ break;
+ case TType::LST:
+ $xfer += $this->_writeList($key, $kspec, $output, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_writeList($key, $kspec, $output, true);
+ break;
+ }
+ }
+ if (isset($vwrite)) {
+ $xfer += $output->$vwrite($val);
+ } else {
+ switch ($vtype) {
+ case TType::STRUCT:
+ $xfer += $val->write($output);
+ break;
+ case TType::MAP:
+ $xfer += $this->_writeMap($val, $vspec, $output);
+ break;
+ case TType::LST:
+ $xfer += $this->_writeList($val, $vspec, $output, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_writeList($val, $vspec, $output, true);
+ break;
+ }
+ }
+ }
+ $xfer += $output->writeMapEnd();
+
+ return $xfer;
+ }
+
+ private function _writeList($var, $spec, $output, $set = false)
+ {
+ $xfer = 0;
+ $etype = $spec['etype'];
+ $ewrite = null;
+ if (isset(TBase::$tmethod[$etype])) {
+ $ewrite = 'write' . TBase::$tmethod[$etype];
+ } else {
+ $espec = $spec['elem'];
+ }
+ if ($set) {
+ $xfer += $output->writeSetBegin($etype, count($var));
+ } else {
+ $xfer += $output->writeListBegin($etype, count($var));
+ }
+ foreach ($var as $key => $val) {
+ $elem = $set ? $key : $val;
+ if (isset($ewrite)) {
+ $xfer += $output->$ewrite($elem);
+ } else {
+ switch ($etype) {
+ case TType::STRUCT:
+ $xfer += $elem->write($output);
+ break;
+ case TType::MAP:
+ $xfer += $this->_writeMap($elem, $espec, $output);
+ break;
+ case TType::LST:
+ $xfer += $this->_writeList($elem, $espec, $output, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_writeList($elem, $espec, $output, true);
+ break;
+ }
+ }
+ }
+ if ($set) {
+ $xfer += $output->writeSetEnd();
+ } else {
+ $xfer += $output->writeListEnd();
+ }
+
+ return $xfer;
+ }
+
+ protected function _write($class, $spec, $output)
+ {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin($class);
+ foreach ($spec as $fid => $fspec) {
+ $var = $fspec['var'];
+ if ($this->$var !== null) {
+ $ftype = $fspec['type'];
+ $xfer += $output->writeFieldBegin($var, $ftype, $fid);
+ if (isset(TBase::$tmethod[$ftype])) {
+ $func = 'write' . TBase::$tmethod[$ftype];
+ $xfer += $output->$func($this->$var);
+ } else {
+ switch ($ftype) {
+ case TType::STRUCT:
+ $xfer += $this->$var->write($output);
+ break;
+ case TType::MAP:
+ $xfer += $this->_writeMap($this->$var, $fspec, $output);
+ break;
+ case TType::LST:
+ $xfer += $this->_writeList($this->$var, $fspec, $output, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_writeList($this->$var, $fspec, $output, true);
+ break;
+ }
+ }
+ $xfer += $output->writeFieldEnd();
+ }
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+
+ return $xfer;
+ }
+}
diff --git a/vendor/packaged/thrift/src/ClassLoader/ThriftClassLoader.php b/vendor/packaged/thrift/src/ClassLoader/ThriftClassLoader.php
new file mode 100644
index 000000000..4361bd84e
--- /dev/null
+++ b/vendor/packaged/thrift/src/ClassLoader/ThriftClassLoader.php
@@ -0,0 +1,206 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * ClassLoader to load Thrift library and definitions
+ * Inspired from UniversalClassLoader from Symfony 2
+ *
+ * @package thrift.classloader
+ */
+
+namespace Thrift\ClassLoader;
+
+class ThriftClassLoader
+{
+ /**
+ * Namespaces path
+ * @var array
+ */
+ protected $namespaces = array();
+
+ /**
+ * Thrift definition paths
+ * @var type
+ */
+ protected $definitions = array();
+
+ /**
+ * Do we use APC cache ?
+ * @var boolean
+ */
+ protected $apc = false;
+
+ /**
+ * APC Cache prefix
+ * @var string
+ */
+ protected $apc_prefix;
+
+ /**
+ * Set autoloader to use APC cache
+ * @param boolean $apc
+ * @param string $apc_prefix
+ */
+ public function __construct($apc = false, $apc_prefix = null)
+ {
+ $this->apc = $apc;
+ $this->apc_prefix = $apc_prefix;
+ }
+
+ /**
+ * Registers a namespace.
+ *
+ * @param string $namespace The namespace
+ * @param array|string $paths The location(s) of the namespace
+ */
+ public function registerNamespace($namespace, $paths)
+ {
+ $this->namespaces[$namespace] = (array)$paths;
+ }
+
+ /**
+ * Registers a Thrift definition namespace.
+ *
+ * @param string $namespace The definition namespace
+ * @param array|string $paths The location(s) of the definition namespace
+ */
+ public function registerDefinition($namespace, $paths)
+ {
+ $this->definitions[$namespace] = (array)$paths;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param Boolean $prepend Whether to prepend the autoloader or not
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+ }
+
+ /**
+ * Loads the given class, definition or interface.
+ *
+ * @param string $class The name of the class
+ */
+ public function loadClass($class)
+ {
+ if ((true === $this->apc && ($file = $this->findFileInApc($class))) or
+ ($file = $this->findFile($class))
+ ) {
+ require_once $file;
+ }
+ }
+
+ /**
+ * Loads the given class or interface in APC.
+ * @param string $class The name of the class
+ * @return string
+ */
+ protected function findFileInApc($class)
+ {
+ if (false === $file = apc_fetch($this->apc_prefix . $class)) {
+ apc_store($this->apc_prefix . $class, $file = $this->findFile($class));
+ }
+
+ return $file;
+ }
+
+ /**
+ * Find class in namespaces or definitions directories
+ * @param string $class
+ * @return string
+ */
+ public function findFile($class)
+ {
+ // Remove first backslash
+ if ('\\' == $class[0]) {
+ $class = substr($class, 1);
+ }
+
+ if (false !== $pos = strrpos($class, '\\')) {
+ // Namespaced class name
+ $namespace = substr($class, 0, $pos);
+
+ // Iterate in normal namespaces
+ foreach ($this->namespaces as $ns => $dirs) {
+ //Don't interfere with other autoloaders
+ if (0 !== strpos($namespace, $ns)) {
+ continue;
+ }
+
+ foreach ($dirs as $dir) {
+ $className = substr($class, $pos + 1);
+
+ $file = $dir . DIRECTORY_SEPARATOR .
+ str_replace('\\', DIRECTORY_SEPARATOR, $namespace) .
+ DIRECTORY_SEPARATOR .
+ $className . '.php';
+
+ if (file_exists($file)) {
+ return $file;
+ }
+ }
+ }
+
+ // Iterate in Thrift namespaces
+
+ // Remove first part of namespace
+ $m = explode('\\', $class);
+
+ // Ignore wrong call
+ if (count($m) <= 1) {
+ return;
+ }
+
+ $class = array_pop($m);
+ $namespace = implode('\\', $m);
+
+ foreach ($this->definitions as $ns => $dirs) {
+ //Don't interfere with other autoloaders
+ if (0 !== strpos($namespace, $ns)) {
+ continue;
+ }
+
+ foreach ($dirs as $dir) {
+ /**
+ * Available in service: Interface, Client, Processor, Rest
+ * And every service methods (_.+)
+ */
+ if (0 === preg_match('#(.+)(if|client|processor|rest)$#i', $class, $n) and
+ 0 === preg_match('#(.+)_[a-z0-9]+_(args|result)$#i', $class, $n)
+ ) {
+ $className = 'Types';
+ } else {
+ $className = $n[1];
+ }
+
+ $file = $dir . DIRECTORY_SEPARATOR .
+ str_replace('\\', DIRECTORY_SEPARATOR, $namespace) .
+ DIRECTORY_SEPARATOR .
+ $className . '.php';
+
+ if (file_exists($file)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Exception/TApplicationException.php b/vendor/packaged/thrift/src/Exception/TApplicationException.php
new file mode 100644
index 000000000..ebb6a6a89
--- /dev/null
+++ b/vendor/packaged/thrift/src/Exception/TApplicationException.php
@@ -0,0 +1,76 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift
+ */
+
+namespace Thrift\Exception;
+
+use Thrift\Type\TType;
+
+class TApplicationException extends TException
+{
+ public static $_TSPEC =
+ array(1 => array('var' => 'message',
+ 'type' => TType::STRING),
+ 2 => array('var' => 'code',
+ 'type' => TType::I32));
+
+ const UNKNOWN = 0;
+ const UNKNOWN_METHOD = 1;
+ const INVALID_MESSAGE_TYPE = 2;
+ const WRONG_METHOD_NAME = 3;
+ const BAD_SEQUENCE_ID = 4;
+ const MISSING_RESULT = 5;
+ const INTERNAL_ERROR = 6;
+ const PROTOCOL_ERROR = 7;
+ const INVALID_TRANSFORM = 8;
+ const INVALID_PROTOCOL = 9;
+ const UNSUPPORTED_CLIENT_TYPE = 10;
+
+ public function __construct($message = null, $code = 0)
+ {
+ parent::__construct($message, $code);
+ }
+
+ public function read($output)
+ {
+ return $this->_read('TApplicationException', self::$_TSPEC, $output);
+ }
+
+ public function write($output)
+ {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin('TApplicationException');
+ if ($message = $this->getMessage()) {
+ $xfer += $output->writeFieldBegin('message', TType::STRING, 1);
+ $xfer += $output->writeString($message);
+ $xfer += $output->writeFieldEnd();
+ }
+ if ($code = $this->getCode()) {
+ $xfer += $output->writeFieldBegin('type', TType::I32, 2);
+ $xfer += $output->writeI32($code);
+ $xfer += $output->writeFieldEnd();
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+
+ return $xfer;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Exception/TException.php b/vendor/packaged/thrift/src/Exception/TException.php
new file mode 100644
index 000000000..7dbf83293
--- /dev/null
+++ b/vendor/packaged/thrift/src/Exception/TException.php
@@ -0,0 +1,384 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift
+ */
+
+namespace Thrift\Exception;
+
+use Thrift\Type\TType;
+use Thrift\Base\TBase;
+
+/**
+ * NOTE(mcslee): This currently contains a ton of duplicated code from TBase
+ * because we need to save CPU cycles and this is not yet in an extension.
+ * Ideally we'd multiply-inherit TException from both Exception and Base, but
+ * that's not possible in PHP and there are no modules either, so for now we
+ * apologetically take a trip to HackTown.
+ *
+ * Can be called with standard Exception constructor (message, code) or with
+ * Thrift Base object constructor (spec, vals).
+ *
+ * @param mixed $p1 Message (string) or type-spec (array)
+ * @param mixed $p2 Code (integer) or values (array)
+ */
+class TException extends \Exception
+{
+ public function __construct($p1 = null, $p2 = 0)
+ {
+ if (is_array($p1) && is_array($p2)) {
+ $spec = $p1;
+ $vals = $p2;
+ foreach ($spec as $fid => $fspec) {
+ $var = $fspec['var'];
+ if (isset($vals[$var])) {
+ $this->$var = $vals[$var];
+ }
+ }
+ } else {
+ parent::__construct($p1, $p2);
+ }
+ }
+
+ public static $tmethod = array(
+ TType::BOOL => 'Bool',
+ TType::BYTE => 'Byte',
+ TType::I16 => 'I16',
+ TType::I32 => 'I32',
+ TType::I64 => 'I64',
+ TType::DOUBLE => 'Double',
+ TType::STRING => 'String'
+ );
+
+ private function _readMap(&$var, $spec, $input)
+ {
+ $xfer = 0;
+ $ktype = $spec['ktype'];
+ $vtype = $spec['vtype'];
+ $kread = $vread = null;
+ if (isset(TBase::$tmethod[$ktype])) {
+ $kread = 'read' . TBase::$tmethod[$ktype];
+ } else {
+ $kspec = $spec['key'];
+ }
+ if (isset(TBase::$tmethod[$vtype])) {
+ $vread = 'read' . TBase::$tmethod[$vtype];
+ } else {
+ $vspec = $spec['val'];
+ }
+ $var = array();
+ $_ktype = $_vtype = $size = 0;
+ $xfer += $input->readMapBegin($_ktype, $_vtype, $size);
+ for ($i = 0; $i < $size; ++$i) {
+ $key = $val = null;
+ if ($kread !== null) {
+ $xfer += $input->$kread($key);
+ } else {
+ switch ($ktype) {
+ case TType::STRUCT:
+ $class = $kspec['class'];
+ $key = new $class();
+ $xfer += $key->read($input);
+ break;
+ case TType::MAP:
+ $xfer += $this->_readMap($key, $kspec, $input);
+ break;
+ case TType::LST:
+ $xfer += $this->_readList($key, $kspec, $input, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_readList($key, $kspec, $input, true);
+ break;
+ }
+ }
+ if ($vread !== null) {
+ $xfer += $input->$vread($val);
+ } else {
+ switch ($vtype) {
+ case TType::STRUCT:
+ $class = $vspec['class'];
+ $val = new $class();
+ $xfer += $val->read($input);
+ break;
+ case TType::MAP:
+ $xfer += $this->_readMap($val, $vspec, $input);
+ break;
+ case TType::LST:
+ $xfer += $this->_readList($val, $vspec, $input, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_readList($val, $vspec, $input, true);
+ break;
+ }
+ }
+ $var[$key] = $val;
+ }
+ $xfer += $input->readMapEnd();
+
+ return $xfer;
+ }
+
+ private function _readList(&$var, $spec, $input, $set = false)
+ {
+ $xfer = 0;
+ $etype = $spec['etype'];
+ $eread = $vread = null;
+ if (isset(TBase::$tmethod[$etype])) {
+ $eread = 'read' . TBase::$tmethod[$etype];
+ } else {
+ $espec = $spec['elem'];
+ }
+ $var = array();
+ $_etype = $size = 0;
+ if ($set) {
+ $xfer += $input->readSetBegin($_etype, $size);
+ } else {
+ $xfer += $input->readListBegin($_etype, $size);
+ }
+ for ($i = 0; $i < $size; ++$i) {
+ $elem = null;
+ if ($eread !== null) {
+ $xfer += $input->$eread($elem);
+ } else {
+ $espec = $spec['elem'];
+ switch ($etype) {
+ case TType::STRUCT:
+ $class = $espec['class'];
+ $elem = new $class();
+ $xfer += $elem->read($input);
+ break;
+ case TType::MAP:
+ $xfer += $this->_readMap($elem, $espec, $input);
+ break;
+ case TType::LST:
+ $xfer += $this->_readList($elem, $espec, $input, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_readList($elem, $espec, $input, true);
+ break;
+ }
+ }
+ if ($set) {
+ $var[$elem] = true;
+ } else {
+ $var [] = $elem;
+ }
+ }
+ if ($set) {
+ $xfer += $input->readSetEnd();
+ } else {
+ $xfer += $input->readListEnd();
+ }
+
+ return $xfer;
+ }
+
+ protected function _read($class, $spec, $input)
+ {
+ $xfer = 0;
+ $fname = null;
+ $ftype = 0;
+ $fid = 0;
+ $xfer += $input->readStructBegin($fname);
+ while (true) {
+ $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ if (isset($spec[$fid])) {
+ $fspec = $spec[$fid];
+ $var = $fspec['var'];
+ if ($ftype == $fspec['type']) {
+ $xfer = 0;
+ if (isset(TBase::$tmethod[$ftype])) {
+ $func = 'read' . TBase::$tmethod[$ftype];
+ $xfer += $input->$func($this->$var);
+ } else {
+ switch ($ftype) {
+ case TType::STRUCT:
+ $class = $fspec['class'];
+ $this->$var = new $class();
+ $xfer += $this->$var->read($input);
+ break;
+ case TType::MAP:
+ $xfer += $this->_readMap($this->$var, $fspec, $input);
+ break;
+ case TType::LST:
+ $xfer += $this->_readList($this->$var, $fspec, $input, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_readList($this->$var, $fspec, $input, true);
+ break;
+ }
+ }
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ } else {
+ $xfer += $input->skip($ftype);
+ }
+ $xfer += $input->readFieldEnd();
+ }
+ $xfer += $input->readStructEnd();
+
+ return $xfer;
+ }
+
+ private function _writeMap($var, $spec, $output)
+ {
+ $xfer = 0;
+ $ktype = $spec['ktype'];
+ $vtype = $spec['vtype'];
+ $kwrite = $vwrite = null;
+ if (isset(TBase::$tmethod[$ktype])) {
+ $kwrite = 'write' . TBase::$tmethod[$ktype];
+ } else {
+ $kspec = $spec['key'];
+ }
+ if (isset(TBase::$tmethod[$vtype])) {
+ $vwrite = 'write' . TBase::$tmethod[$vtype];
+ } else {
+ $vspec = $spec['val'];
+ }
+ $xfer += $output->writeMapBegin($ktype, $vtype, count($var));
+ foreach ($var as $key => $val) {
+ if (isset($kwrite)) {
+ $xfer += $output->$kwrite($key);
+ } else {
+ switch ($ktype) {
+ case TType::STRUCT:
+ $xfer += $key->write($output);
+ break;
+ case TType::MAP:
+ $xfer += $this->_writeMap($key, $kspec, $output);
+ break;
+ case TType::LST:
+ $xfer += $this->_writeList($key, $kspec, $output, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_writeList($key, $kspec, $output, true);
+ break;
+ }
+ }
+ if (isset($vwrite)) {
+ $xfer += $output->$vwrite($val);
+ } else {
+ switch ($vtype) {
+ case TType::STRUCT:
+ $xfer += $val->write($output);
+ break;
+ case TType::MAP:
+ $xfer += $this->_writeMap($val, $vspec, $output);
+ break;
+ case TType::LST:
+ $xfer += $this->_writeList($val, $vspec, $output, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_writeList($val, $vspec, $output, true);
+ break;
+ }
+ }
+ }
+ $xfer += $output->writeMapEnd();
+
+ return $xfer;
+ }
+
+ private function _writeList($var, $spec, $output, $set = false)
+ {
+ $xfer = 0;
+ $etype = $spec['etype'];
+ $ewrite = null;
+ if (isset(TBase::$tmethod[$etype])) {
+ $ewrite = 'write' . TBase::$tmethod[$etype];
+ } else {
+ $espec = $spec['elem'];
+ }
+ if ($set) {
+ $xfer += $output->writeSetBegin($etype, count($var));
+ } else {
+ $xfer += $output->writeListBegin($etype, count($var));
+ }
+ foreach ($var as $key => $val) {
+ $elem = $set ? $key : $val;
+ if (isset($ewrite)) {
+ $xfer += $output->$ewrite($elem);
+ } else {
+ switch ($etype) {
+ case TType::STRUCT:
+ $xfer += $elem->write($output);
+ break;
+ case TType::MAP:
+ $xfer += $this->_writeMap($elem, $espec, $output);
+ break;
+ case TType::LST:
+ $xfer += $this->_writeList($elem, $espec, $output, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_writeList($elem, $espec, $output, true);
+ break;
+ }
+ }
+ }
+ if ($set) {
+ $xfer += $output->writeSetEnd();
+ } else {
+ $xfer += $output->writeListEnd();
+ }
+
+ return $xfer;
+ }
+
+ protected function _write($class, $spec, $output)
+ {
+ $xfer = 0;
+ $xfer += $output->writeStructBegin($class);
+ foreach ($spec as $fid => $fspec) {
+ $var = $fspec['var'];
+ if ($this->$var !== null) {
+ $ftype = $fspec['type'];
+ $xfer += $output->writeFieldBegin($var, $ftype, $fid);
+ if (isset(TBase::$tmethod[$ftype])) {
+ $func = 'write' . TBase::$tmethod[$ftype];
+ $xfer += $output->$func($this->$var);
+ } else {
+ switch ($ftype) {
+ case TType::STRUCT:
+ $xfer += $this->$var->write($output);
+ break;
+ case TType::MAP:
+ $xfer += $this->_writeMap($this->$var, $fspec, $output);
+ break;
+ case TType::LST:
+ $xfer += $this->_writeList($this->$var, $fspec, $output, false);
+ break;
+ case TType::SET:
+ $xfer += $this->_writeList($this->$var, $fspec, $output, true);
+ break;
+ }
+ }
+ $xfer += $output->writeFieldEnd();
+ }
+ }
+ $xfer += $output->writeFieldStop();
+ $xfer += $output->writeStructEnd();
+
+ return $xfer;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Exception/TProtocolException.php b/vendor/packaged/thrift/src/Exception/TProtocolException.php
new file mode 100644
index 000000000..3a55d45ff
--- /dev/null
+++ b/vendor/packaged/thrift/src/Exception/TProtocolException.php
@@ -0,0 +1,50 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ * @author: rmarin ([email protected])
+ */
+
+namespace Thrift\Exception;
+
+/**
+ * Protocol module. Contains all the types and definitions needed to implement
+ * a protocol encoder/decoder.
+ *
+ * @package thrift.protocol
+ */
+
+/**
+ * Protocol exceptions
+ */
+class TProtocolException extends TException
+{
+ const UNKNOWN = 0;
+ const INVALID_DATA = 1;
+ const NEGATIVE_SIZE = 2;
+ const SIZE_LIMIT = 3;
+ const BAD_VERSION = 4;
+ const NOT_IMPLEMENTED = 5;
+ const DEPTH_LIMIT = 6;
+
+ public function __construct($message = null, $code = 0)
+ {
+ parent::__construct($message, $code);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Exception/TTransportException.php b/vendor/packaged/thrift/src/Exception/TTransportException.php
new file mode 100644
index 000000000..7d8d56743
--- /dev/null
+++ b/vendor/packaged/thrift/src/Exception/TTransportException.php
@@ -0,0 +1,40 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Exception;
+
+/**
+ * Transport exceptions
+ */
+class TTransportException extends TException
+{
+ const UNKNOWN = 0;
+ const NOT_OPEN = 1;
+ const ALREADY_OPEN = 2;
+ const TIMED_OUT = 3;
+ const END_OF_FILE = 4;
+
+ public function __construct($message = null, $code = 0)
+ {
+ parent::__construct($message, $code);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Factory/TBinaryProtocolFactory.php b/vendor/packaged/thrift/src/Factory/TBinaryProtocolFactory.php
new file mode 100644
index 000000000..2519183df
--- /dev/null
+++ b/vendor/packaged/thrift/src/Factory/TBinaryProtocolFactory.php
@@ -0,0 +1,45 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Factory;
+
+use Thrift\Protocol\TBinaryProtocol;
+
+/**
+ * Binary Protocol Factory
+ */
+class TBinaryProtocolFactory implements TProtocolFactory
+{
+ private $strictRead_ = false;
+ private $strictWrite_ = false;
+
+ public function __construct($strictRead = false, $strictWrite = false)
+ {
+ $this->strictRead_ = $strictRead;
+ $this->strictWrite_ = $strictWrite;
+ }
+
+ public function getProtocol($trans)
+ {
+ return new TBinaryProtocol($trans, $this->strictRead_, $this->strictWrite_);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Factory/TCompactProtocolFactory.php b/vendor/packaged/thrift/src/Factory/TCompactProtocolFactory.php
new file mode 100644
index 000000000..11fb8ff33
--- /dev/null
+++ b/vendor/packaged/thrift/src/Factory/TCompactProtocolFactory.php
@@ -0,0 +1,40 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Factory;
+
+use Thrift\Protocol\TCompactProtocol;
+
+/**
+ * Compact Protocol Factory
+ */
+class TCompactProtocolFactory implements TProtocolFactory
+{
+ public function __construct()
+ {
+ }
+
+ public function getProtocol($trans)
+ {
+ return new TCompactProtocol($trans);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Factory/TJSONProtocolFactory.php b/vendor/packaged/thrift/src/Factory/TJSONProtocolFactory.php
new file mode 100644
index 000000000..fbfb1d731
--- /dev/null
+++ b/vendor/packaged/thrift/src/Factory/TJSONProtocolFactory.php
@@ -0,0 +1,40 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Factory;
+
+use Thrift\Protocol\TJSONProtocol;
+
+/**
+ * JSON Protocol Factory
+ */
+class TJSONProtocolFactory implements TProtocolFactory
+{
+ public function __construct()
+ {
+ }
+
+ public function getProtocol($trans)
+ {
+ return new TJSONProtocol($trans);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Factory/TProtocolFactory.php b/vendor/packaged/thrift/src/Factory/TProtocolFactory.php
new file mode 100644
index 000000000..d3066c8ec
--- /dev/null
+++ b/vendor/packaged/thrift/src/Factory/TProtocolFactory.php
@@ -0,0 +1,36 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Factory;
+
+/**
+ * Protocol factory creates protocol objects from transports
+ */
+interface TProtocolFactory
+{
+ /**
+ * Build a protocol from the base transport
+ *
+ * @return Thrift\Protocol\TProtocol protocol
+ */
+ public function getProtocol($trans);
+}
diff --git a/vendor/packaged/thrift/src/Factory/TStringFuncFactory.php b/vendor/packaged/thrift/src/Factory/TStringFuncFactory.php
new file mode 100644
index 000000000..30de4d780
--- /dev/null
+++ b/vendor/packaged/thrift/src/Factory/TStringFuncFactory.php
@@ -0,0 +1,66 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+namespace Thrift\Factory;
+
+use Thrift\StringFunc\Core;
+use Thrift\StringFunc\Mbstring;
+use Thrift\StringFunc\TStringFunc;
+
+class TStringFuncFactory
+{
+ private static $_instance;
+
+ /**
+ * Get the Singleton instance of TStringFunc implementation that is
+ * compatible with the current system's mbstring.func_overload settings.
+ *
+ * @return TStringFunc
+ */
+ public static function create()
+ {
+ if (!self::$_instance) {
+ self::_setInstance();
+ }
+
+ return self::$_instance;
+ }
+
+ private static function _setInstance()
+ {
+ /**
+ * Cannot use str* functions for byte counting because multibyte
+ * characters will be read a single bytes.
+ *
+ * See: http://php.net/manual/en/mbstring.overload.php
+ */
+ if (ini_get('mbstring.func_overload') & 2) {
+ self::$_instance = new Mbstring();
+ } else {
+ /**
+ * mbstring is not installed or does not have function overloading
+ * of the str* functions enabled so use PHP core str* functions for
+ * byte counting.
+ */
+ self::$_instance = new Core();
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Factory/TTransportFactory.php b/vendor/packaged/thrift/src/Factory/TTransportFactory.php
new file mode 100644
index 000000000..43f2eecde
--- /dev/null
+++ b/vendor/packaged/thrift/src/Factory/TTransportFactory.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Thrift\Factory;
+
+use Thrift\Transport\TTransport;
+
+class TTransportFactory
+{
+ /**
+ * @static
+ * @param TTransport $transport
+ * @return TTransport
+ */
+ public static function getTransport(TTransport $transport)
+ {
+ return $transport;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/JSON/BaseContext.php b/vendor/packaged/thrift/src/Protocol/JSON/BaseContext.php
new file mode 100644
index 000000000..31bcb48e4
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/JSON/BaseContext.php
@@ -0,0 +1,39 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol\JSON;
+
+class BaseContext
+{
+ public function escapeNum()
+ {
+ return false;
+ }
+
+ public function write()
+ {
+ }
+
+ public function read()
+ {
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/JSON/ListContext.php b/vendor/packaged/thrift/src/Protocol/JSON/ListContext.php
new file mode 100644
index 000000000..eef659442
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/JSON/ListContext.php
@@ -0,0 +1,54 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol\JSON;
+
+use Thrift\Protocol\TJSONProtocol;
+
+class ListContext extends BaseContext
+{
+ private $first_ = true;
+ private $p_;
+
+ public function __construct($p)
+ {
+ $this->p_ = $p;
+ }
+
+ public function write()
+ {
+ if ($this->first_) {
+ $this->first_ = false;
+ } else {
+ $this->p_->getTransport()->write(TJSONProtocol::COMMA);
+ }
+ }
+
+ public function read()
+ {
+ if ($this->first_) {
+ $this->first_ = false;
+ } else {
+ $this->p_->readJSONSyntaxChar(TJSONProtocol::COMMA);
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/JSON/LookaheadReader.php b/vendor/packaged/thrift/src/Protocol/JSON/LookaheadReader.php
new file mode 100644
index 000000000..0b18c40d0
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/JSON/LookaheadReader.php
@@ -0,0 +1,57 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol\JSON;
+
+class LookaheadReader
+{
+ private $hasData_ = false;
+ private $data_ = array();
+ private $p_;
+
+ public function __construct($p)
+ {
+ $this->p_ = $p;
+ }
+
+ public function read()
+ {
+ if ($this->hasData_) {
+ $this->hasData_ = false;
+ } else {
+ $this->data_ = $this->p_->getTransport()->readAll(1);
+ }
+
+ return substr($this->data_, 0, 1);
+ }
+
+ public function peek()
+ {
+ if (!$this->hasData_) {
+ $this->data_ = $this->p_->getTransport()->readAll(1);
+ }
+
+ $this->hasData_ = true;
+
+ return substr($this->data_, 0, 1);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/JSON/PairContext.php b/vendor/packaged/thrift/src/Protocol/JSON/PairContext.php
new file mode 100644
index 000000000..7b353c4ad
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/JSON/PairContext.php
@@ -0,0 +1,64 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol\JSON;
+
+use Thrift\Protocol\TJSONProtocol;
+
+class PairContext extends BaseContext
+{
+ private $first_ = true;
+ private $colon_ = true;
+ private $p_ = null;
+
+ public function __construct($p)
+ {
+ $this->p_ = $p;
+ }
+
+ public function write()
+ {
+ if ($this->first_) {
+ $this->first_ = false;
+ $this->colon_ = true;
+ } else {
+ $this->p_->getTransport()->write($this->colon_ ? TJSONProtocol::COLON : TJSONProtocol::COMMA);
+ $this->colon_ = !$this->colon_;
+ }
+ }
+
+ public function read()
+ {
+ if ($this->first_) {
+ $this->first_ = false;
+ $this->colon_ = true;
+ } else {
+ $this->p_->readJSONSyntaxChar($this->colon_ ? TJSONProtocol::COLON : TJSONProtocol::COMMA);
+ $this->colon_ = !$this->colon_;
+ }
+ }
+
+ public function escapeNum()
+ {
+ return $this->colon_;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/SimpleJSON/CollectionMapKeyException.php b/vendor/packaged/thrift/src/Protocol/SimpleJSON/CollectionMapKeyException.php
new file mode 100644
index 000000000..522b85a5b
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/SimpleJSON/CollectionMapKeyException.php
@@ -0,0 +1,33 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol\SimpleJSON;
+
+use Thrift\Exception\TException;
+
+class CollectionMapKeyException extends TException
+{
+ public function __construct($message)
+ {
+ parent::__construct($message);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/SimpleJSON/Context.php b/vendor/packaged/thrift/src/Protocol/SimpleJSON/Context.php
new file mode 100644
index 000000000..dbd16faa2
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/SimpleJSON/Context.php
@@ -0,0 +1,35 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol\SimpleJSON;
+
+class Context
+{
+ public function write()
+ {
+ }
+
+ public function isMapKey()
+ {
+ return false;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/SimpleJSON/ListContext.php b/vendor/packaged/thrift/src/Protocol/SimpleJSON/ListContext.php
new file mode 100644
index 000000000..6f346d8f8
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/SimpleJSON/ListContext.php
@@ -0,0 +1,45 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol\SimpleJSON;
+
+use Thrift\Protocol\TSimpleJSONProtocol;
+
+class ListContext extends Context
+{
+ protected $first_ = true;
+ private $p_;
+
+ public function __construct($p)
+ {
+ $this->p_ = $p;
+ }
+
+ public function write()
+ {
+ if ($this->first_) {
+ $this->first_ = false;
+ } else {
+ $this->p_->getTransport()->write(TSimpleJSONProtocol::COMMA);
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/SimpleJSON/MapContext.php b/vendor/packaged/thrift/src/Protocol/SimpleJSON/MapContext.php
new file mode 100644
index 000000000..61c060d09
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/SimpleJSON/MapContext.php
@@ -0,0 +1,47 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol\SimpleJSON;
+
+class MapContext extends StructContext
+{
+ protected $isKey = true;
+ private $p_;
+
+ public function __construct($p)
+ {
+ parent::__construct($p);
+ }
+
+ public function write()
+ {
+ parent::write();
+ $this->isKey = !$this->isKey;
+ }
+
+ public function isMapKey()
+ {
+ // we want to coerce map keys to json strings regardless
+ // of their type
+ return $this->isKey;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/SimpleJSON/StructContext.php b/vendor/packaged/thrift/src/Protocol/SimpleJSON/StructContext.php
new file mode 100644
index 000000000..38a62d1a2
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/SimpleJSON/StructContext.php
@@ -0,0 +1,52 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol\SimpleJSON;
+
+use Thrift\Protocol\TSimpleJSONProtocol;
+
+class StructContext extends Context
+{
+ protected $first_ = true;
+ protected $colon_ = true;
+ private $p_;
+
+ public function __construct($p)
+ {
+ $this->p_ = $p;
+ }
+
+ public function write()
+ {
+ if ($this->first_) {
+ $this->first_ = false;
+ $this->colon_ = true;
+ } else {
+ $this->p_->getTransport()->write(
+ $this->colon_ ?
+ TSimpleJSONProtocol::COLON :
+ TSimpleJSONProtocol::COMMA
+ );
+ $this->colon_ = !$this->colon_;
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/TBinaryProtocol.php b/vendor/packaged/thrift/src/Protocol/TBinaryProtocol.php
new file mode 100644
index 000000000..cda5c0d4c
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/TBinaryProtocol.php
@@ -0,0 +1,453 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol;
+
+use Thrift\Type\TType;
+use Thrift\Exception\TProtocolException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * Binary implementation of the Thrift protocol.
+ *
+ */
+class TBinaryProtocol extends TProtocol
+{
+ const VERSION_MASK = 0xffff0000;
+ const VERSION_1 = 0x80010000;
+
+ protected $strictRead_ = false;
+ protected $strictWrite_ = true;
+
+ public function __construct($trans, $strictRead = false, $strictWrite = true)
+ {
+ parent::__construct($trans);
+ $this->strictRead_ = $strictRead;
+ $this->strictWrite_ = $strictWrite;
+ }
+
+ public function writeMessageBegin($name, $type, $seqid)
+ {
+ if ($this->strictWrite_) {
+ $version = self::VERSION_1 | $type;
+
+ return
+ $this->writeI32($version) +
+ $this->writeString($name) +
+ $this->writeI32($seqid);
+ } else {
+ return
+ $this->writeString($name) +
+ $this->writeByte($type) +
+ $this->writeI32($seqid);
+ }
+ }
+
+ public function writeMessageEnd()
+ {
+ return 0;
+ }
+
+ public function writeStructBegin($name)
+ {
+ return 0;
+ }
+
+ public function writeStructEnd()
+ {
+ return 0;
+ }
+
+ public function writeFieldBegin($fieldName, $fieldType, $fieldId)
+ {
+ return
+ $this->writeByte($fieldType) +
+ $this->writeI16($fieldId);
+ }
+
+ public function writeFieldEnd()
+ {
+ return 0;
+ }
+
+ public function writeFieldStop()
+ {
+ return
+ $this->writeByte(TType::STOP);
+ }
+
+ public function writeMapBegin($keyType, $valType, $size)
+ {
+ return
+ $this->writeByte($keyType) +
+ $this->writeByte($valType) +
+ $this->writeI32($size);
+ }
+
+ public function writeMapEnd()
+ {
+ return 0;
+ }
+
+ public function writeListBegin($elemType, $size)
+ {
+ return
+ $this->writeByte($elemType) +
+ $this->writeI32($size);
+ }
+
+ public function writeListEnd()
+ {
+ return 0;
+ }
+
+ public function writeSetBegin($elemType, $size)
+ {
+ return
+ $this->writeByte($elemType) +
+ $this->writeI32($size);
+ }
+
+ public function writeSetEnd()
+ {
+ return 0;
+ }
+
+ public function writeBool($value)
+ {
+ $data = pack('c', $value ? 1 : 0);
+ $this->trans_->write($data, 1);
+
+ return 1;
+ }
+
+ public function writeByte($value)
+ {
+ $data = pack('c', $value);
+ $this->trans_->write($data, 1);
+
+ return 1;
+ }
+
+ public function writeI16($value)
+ {
+ $data = pack('n', $value);
+ $this->trans_->write($data, 2);
+
+ return 2;
+ }
+
+ public function writeI32($value)
+ {
+ $data = pack('N', $value);
+ $this->trans_->write($data, 4);
+
+ return 4;
+ }
+
+ public function writeI64($value)
+ {
+ // If we are on a 32bit architecture we have to explicitly deal with
+ // 64-bit twos-complement arithmetic since PHP wants to treat all ints
+ // as signed and any int over 2^31 - 1 as a float
+ if (PHP_INT_SIZE == 4) {
+ $neg = $value < 0;
+
+ if ($neg) {
+ $value *= -1;
+ }
+
+ $hi = (int)($value / 4294967296);
+ $lo = (int)$value;
+
+ if ($neg) {
+ $hi = ~$hi;
+ $lo = ~$lo;
+ if (($lo & (int)0xffffffff) == (int)0xffffffff) {
+ $lo = 0;
+ $hi++;
+ } else {
+ $lo++;
+ }
+ }
+ $data = pack('N2', $hi, $lo);
+ } else {
+ $hi = $value >> 32;
+ $lo = $value & 0xFFFFFFFF;
+ $data = pack('N2', $hi, $lo);
+ }
+
+ $this->trans_->write($data, 8);
+
+ return 8;
+ }
+
+ public function writeDouble($value)
+ {
+ $data = pack('d', $value);
+ $this->trans_->write(strrev($data), 8);
+
+ return 8;
+ }
+
+ public function writeString($value)
+ {
+ $len = TStringFuncFactory::create()->strlen($value);
+ $result = $this->writeI32($len);
+ if ($len) {
+ $this->trans_->write($value, $len);
+ }
+
+ return $result + $len;
+ }
+
+ public function readMessageBegin(&$name, &$type, &$seqid)
+ {
+ $result = $this->readI32($sz);
+ if ($sz < 0) {
+ $version = (int)($sz & self::VERSION_MASK);
+ if ($version != (int)self::VERSION_1) {
+ throw new TProtocolException('Bad version identifier: ' . $sz, TProtocolException::BAD_VERSION);
+ }
+ $type = $sz & 0x000000ff;
+ $result +=
+ $this->readString($name) +
+ $this->readI32($seqid);
+ } else {
+ if ($this->strictRead_) {
+ throw new TProtocolException(
+ 'No version identifier, old protocol client?',
+ TProtocolException::BAD_VERSION
+ );
+ } else {
+ // Handle pre-versioned input
+ $name = $this->trans_->readAll($sz);
+ $result +=
+ $sz +
+ $this->readByte($type) +
+ $this->readI32($seqid);
+ }
+ }
+
+ return $result;
+ }
+
+ public function readMessageEnd()
+ {
+ return 0;
+ }
+
+ public function readStructBegin(&$name)
+ {
+ $name = '';
+
+ return 0;
+ }
+
+ public function readStructEnd()
+ {
+ return 0;
+ }
+
+ public function readFieldBegin(&$name, &$fieldType, &$fieldId)
+ {
+ $result = $this->readByte($fieldType);
+ if ($fieldType == TType::STOP) {
+ $fieldId = 0;
+
+ return $result;
+ }
+ $result += $this->readI16($fieldId);
+
+ return $result;
+ }
+
+ public function readFieldEnd()
+ {
+ return 0;
+ }
+
+ public function readMapBegin(&$keyType, &$valType, &$size)
+ {
+ return
+ $this->readByte($keyType) +
+ $this->readByte($valType) +
+ $this->readI32($size);
+ }
+
+ public function readMapEnd()
+ {
+ return 0;
+ }
+
+ public function readListBegin(&$elemType, &$size)
+ {
+ return
+ $this->readByte($elemType) +
+ $this->readI32($size);
+ }
+
+ public function readListEnd()
+ {
+ return 0;
+ }
+
+ public function readSetBegin(&$elemType, &$size)
+ {
+ return
+ $this->readByte($elemType) +
+ $this->readI32($size);
+ }
+
+ public function readSetEnd()
+ {
+ return 0;
+ }
+
+ public function readBool(&$value)
+ {
+ $data = $this->trans_->readAll(1);
+ $arr = unpack('c', $data);
+ $value = $arr[1] == 1;
+
+ return 1;
+ }
+
+ public function readByte(&$value)
+ {
+ $data = $this->trans_->readAll(1);
+ $arr = unpack('c', $data);
+ $value = $arr[1];
+
+ return 1;
+ }
+
+ public function readI16(&$value)
+ {
+ $data = $this->trans_->readAll(2);
+ $arr = unpack('n', $data);
+ $value = $arr[1];
+ if ($value > 0x7fff) {
+ $value = 0 - (($value - 1) ^ 0xffff);
+ }
+
+ return 2;
+ }
+
+ public function readI32(&$value)
+ {
+ $data = $this->trans_->readAll(4);
+ $arr = unpack('N', $data);
+ $value = $arr[1];
+ if ($value > 0x7fffffff) {
+ $value = 0 - (($value - 1) ^ 0xffffffff);
+ }
+
+ return 4;
+ }
+
+ public function readI64(&$value)
+ {
+ $data = $this->trans_->readAll(8);
+
+ $arr = unpack('N2', $data);
+
+ // If we are on a 32bit architecture we have to explicitly deal with
+ // 64-bit twos-complement arithmetic since PHP wants to treat all ints
+ // as signed and any int over 2^31 - 1 as a float
+ if (PHP_INT_SIZE == 4) {
+ $hi = $arr[1];
+ $lo = $arr[2];
+ $isNeg = $hi < 0;
+
+ // Check for a negative
+ if ($isNeg) {
+ $hi = ~$hi & (int)0xffffffff;
+ $lo = ~$lo & (int)0xffffffff;
+
+ if ($lo == (int)0xffffffff) {
+ $hi++;
+ $lo = 0;
+ } else {
+ $lo++;
+ }
+ }
+
+ // Force 32bit words in excess of 2G to pe positive - we deal wigh sign
+ // explicitly below
+
+ if ($hi & (int)0x80000000) {
+ $hi &= (int)0x7fffffff;
+ $hi += 0x80000000;
+ }
+
+ if ($lo & (int)0x80000000) {
+ $lo &= (int)0x7fffffff;
+ $lo += 0x80000000;
+ }
+
+ $value = $hi * 4294967296 + $lo;
+
+ if ($isNeg) {
+ $value = 0 - $value;
+ }
+ } else {
+ // Upcast negatives in LSB bit
+ if ($arr[2] & 0x80000000) {
+ $arr[2] = $arr[2] & 0xffffffff;
+ }
+
+ // Check for a negative
+ if ($arr[1] & 0x80000000) {
+ $arr[1] = $arr[1] & 0xffffffff;
+ $arr[1] = $arr[1] ^ 0xffffffff;
+ $arr[2] = $arr[2] ^ 0xffffffff;
+ $value = 0 - $arr[1] * 4294967296 - $arr[2] - 1;
+ } else {
+ $value = $arr[1] * 4294967296 + $arr[2];
+ }
+ }
+
+ return 8;
+ }
+
+ public function readDouble(&$value)
+ {
+ $data = strrev($this->trans_->readAll(8));
+ $arr = unpack('d', $data);
+ $value = $arr[1];
+
+ return 8;
+ }
+
+ public function readString(&$value)
+ {
+ $result = $this->readI32($len);
+ if ($len) {
+ $value = $this->trans_->readAll($len);
+ } else {
+ $value = '';
+ }
+
+ return $result + $len;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/TBinaryProtocolAccelerated.php b/vendor/packaged/thrift/src/Protocol/TBinaryProtocolAccelerated.php
new file mode 100644
index 000000000..ff799a6ab
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/TBinaryProtocolAccelerated.php
@@ -0,0 +1,67 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol;
+
+use Thrift\Transport\TBufferedTransport;
+
+/**
+ * Accelerated binary protocol: used in conjunction with the thrift_protocol
+ * extension for faster deserialization
+ */
+class TBinaryProtocolAccelerated extends TBinaryProtocol
+{
+ public function __construct($trans, $strictRead = false, $strictWrite = true)
+ {
+ // If the transport doesn't implement putBack, wrap it in a
+ // TBufferedTransport (which does)
+
+ // NOTE (t.heintz): This is very evil to do, because the TBufferedTransport may swallow bytes, which
+ // are then never written to the underlying transport. This happens precisely when a number of bytes
+ // less than the max buffer size (512 by default) is written to the transport and then flush() is NOT
+ // called. In that case the data stays in the writeBuffer of the transport, from where it can never be
+ // accessed again (for example through read()).
+ //
+ // Since the caller of this method does not know about the wrapping transport, this creates bugs which
+ // are very difficult to find. Hence the wrapping of a transport in a buffer should be left to the
+ // calling code. An interface could used to mandate the presence of the putBack() method in the transport.
+ //
+ // I am leaving this code in nonetheless, because there may be applications depending on this behavior.
+ //
+ // @see THRIFT-1579
+
+ if (!method_exists($trans, 'putBack')) {
+ $trans = new TBufferedTransport($trans);
+ }
+ parent::__construct($trans, $strictRead, $strictWrite);
+ }
+
+ public function isStrictRead()
+ {
+ return $this->strictRead_;
+ }
+
+ public function isStrictWrite()
+ {
+ return $this->strictWrite_;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/TCompactProtocol.php b/vendor/packaged/thrift/src/Protocol/TCompactProtocol.php
new file mode 100644
index 000000000..1af2a274a
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/TCompactProtocol.php
@@ -0,0 +1,739 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol;
+
+use Thrift\Type\TType;
+use Thrift\Exception\TProtocolException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * Compact implementation of the Thrift protocol.
+ *
+ */
+class TCompactProtocol extends TProtocol
+{
+ const COMPACT_STOP = 0x00;
+ const COMPACT_TRUE = 0x01;
+ const COMPACT_FALSE = 0x02;
+ const COMPACT_BYTE = 0x03;
+ const COMPACT_I16 = 0x04;
+ const COMPACT_I32 = 0x05;
+ const COMPACT_I64 = 0x06;
+ const COMPACT_DOUBLE = 0x07;
+ const COMPACT_BINARY = 0x08;
+ const COMPACT_LIST = 0x09;
+ const COMPACT_SET = 0x0A;
+ const COMPACT_MAP = 0x0B;
+ const COMPACT_STRUCT = 0x0C;
+
+ const STATE_CLEAR = 0;
+ const STATE_FIELD_WRITE = 1;
+ const STATE_VALUE_WRITE = 2;
+ const STATE_CONTAINER_WRITE = 3;
+ const STATE_BOOL_WRITE = 4;
+ const STATE_FIELD_READ = 5;
+ const STATE_CONTAINER_READ = 6;
+ const STATE_VALUE_READ = 7;
+ const STATE_BOOL_READ = 8;
+
+ const VERSION_MASK = 0x1f;
+ const VERSION = 1;
+ const PROTOCOL_ID = 0x82;
+ const TYPE_MASK = 0xe0;
+ const TYPE_BITS = 0x07;
+ const TYPE_SHIFT_AMOUNT = 5;
+
+ protected static $ctypes = array(
+ TType::STOP => TCompactProtocol::COMPACT_STOP,
+ TType::BOOL => TCompactProtocol::COMPACT_TRUE, // used for collection
+ TType::BYTE => TCompactProtocol::COMPACT_BYTE,
+ TType::I16 => TCompactProtocol::COMPACT_I16,
+ TType::I32 => TCompactProtocol::COMPACT_I32,
+ TType::I64 => TCompactProtocol::COMPACT_I64,
+ TType::DOUBLE => TCompactProtocol::COMPACT_DOUBLE,
+ TType::STRING => TCompactProtocol::COMPACT_BINARY,
+ TType::STRUCT => TCompactProtocol::COMPACT_STRUCT,
+ TType::LST => TCompactProtocol::COMPACT_LIST,
+ TType::SET => TCompactProtocol::COMPACT_SET,
+ TType::MAP => TCompactProtocol::COMPACT_MAP,
+ );
+
+ protected static $ttypes = array(
+ TCompactProtocol::COMPACT_STOP => TType::STOP,
+ TCompactProtocol::COMPACT_TRUE => TType::BOOL, // used for collection
+ TCompactProtocol::COMPACT_FALSE => TType::BOOL,
+ TCompactProtocol::COMPACT_BYTE => TType::BYTE,
+ TCompactProtocol::COMPACT_I16 => TType::I16,
+ TCompactProtocol::COMPACT_I32 => TType::I32,
+ TCompactProtocol::COMPACT_I64 => TType::I64,
+ TCompactProtocol::COMPACT_DOUBLE => TType::DOUBLE,
+ TCompactProtocol::COMPACT_BINARY => TType::STRING,
+ TCompactProtocol::COMPACT_STRUCT => TType::STRUCT,
+ TCompactProtocol::COMPACT_LIST => TType::LST,
+ TCompactProtocol::COMPACT_SET => TType::SET,
+ TCompactProtocol::COMPACT_MAP => TType::MAP,
+ );
+
+ protected $state = TCompactProtocol::STATE_CLEAR;
+ protected $lastFid = 0;
+ protected $boolFid = null;
+ protected $boolValue = null;
+ protected $structs = array();
+ protected $containers = array();
+
+ // Some varint / zigzag helper methods
+ public function toZigZag($n, $bits)
+ {
+ return ($n << 1) ^ ($n >> ($bits - 1));
+ }
+
+ public function fromZigZag($n)
+ {
+ return ($n >> 1) ^ -($n & 1);
+ }
+
+ public function getVarint($data)
+ {
+ $out = "";
+ while (true) {
+ if (($data & ~0x7f) === 0) {
+ $out .= chr($data);
+ break;
+ } else {
+ $out .= chr(($data & 0xff) | 0x80);
+ $data = $data >> 7;
+ }
+ }
+
+ return $out;
+ }
+
+ public function writeVarint($data)
+ {
+ $out = $this->getVarint($data);
+ $result = TStringFuncFactory::create()->strlen($out);
+ $this->trans_->write($out, $result);
+
+ return $result;
+ }
+
+ public function readVarint(&$result)
+ {
+ $idx = 0;
+ $shift = 0;
+ $result = 0;
+ while (true) {
+ $x = $this->trans_->readAll(1);
+ $arr = unpack('C', $x);
+ $byte = $arr[1];
+ $idx += 1;
+ $result |= ($byte & 0x7f) << $shift;
+ if (($byte >> 7) === 0) {
+ return $idx;
+ }
+ $shift += 7;
+ }
+
+ return $idx;
+ }
+
+ public function __construct($trans)
+ {
+ parent::__construct($trans);
+ }
+
+ public function writeMessageBegin($name, $type, $seqid)
+ {
+ $written =
+ $this->writeUByte(TCompactProtocol::PROTOCOL_ID) +
+ $this->writeUByte(TCompactProtocol::VERSION |
+ ($type << TCompactProtocol::TYPE_SHIFT_AMOUNT)) +
+ $this->writeVarint($seqid) +
+ $this->writeString($name);
+ $this->state = TCompactProtocol::STATE_VALUE_WRITE;
+
+ return $written;
+ }
+
+ public function writeMessageEnd()
+ {
+ $this->state = TCompactProtocol::STATE_CLEAR;
+
+ return 0;
+ }
+
+ public function writeStructBegin($name)
+ {
+ $this->structs[] = array($this->state, $this->lastFid);
+ $this->state = TCompactProtocol::STATE_FIELD_WRITE;
+ $this->lastFid = 0;
+
+ return 0;
+ }
+
+ public function writeStructEnd()
+ {
+ $old_values = array_pop($this->structs);
+ $this->state = $old_values[0];
+ $this->lastFid = $old_values[1];
+
+ return 0;
+ }
+
+ public function writeFieldStop()
+ {
+ return $this->writeByte(0);
+ }
+
+ public function writeFieldHeader($type, $fid)
+ {
+ $written = 0;
+ $delta = $fid - $this->lastFid;
+ if (0 < $delta && $delta <= 15) {
+ $written = $this->writeUByte(($delta << 4) | $type);
+ } else {
+ $written = $this->writeByte($type) +
+ $this->writeI16($fid);
+ }
+ $this->lastFid = $fid;
+
+ return $written;
+ }
+
+ public function writeFieldBegin($field_name, $field_type, $field_id)
+ {
+ if ($field_type == TTYPE::BOOL) {
+ $this->state = TCompactProtocol::STATE_BOOL_WRITE;
+ $this->boolFid = $field_id;
+
+ return 0;
+ } else {
+ $this->state = TCompactProtocol::STATE_VALUE_WRITE;
+
+ return $this->writeFieldHeader(self::$ctypes[$field_type], $field_id);
+ }
+ }
+
+ public function writeFieldEnd()
+ {
+ $this->state = TCompactProtocol::STATE_FIELD_WRITE;
+
+ return 0;
+ }
+
+ public function writeCollectionBegin($etype, $size)
+ {
+ $written = 0;
+ if ($size <= 14) {
+ $written = $this->writeUByte($size << 4 |
+ self::$ctypes[$etype]);
+ } else {
+ $written = $this->writeUByte(0xf0 |
+ self::$ctypes[$etype]) +
+ $this->writeVarint($size);
+ }
+ $this->containers[] = $this->state;
+ $this->state = TCompactProtocol::STATE_CONTAINER_WRITE;
+
+ return $written;
+ }
+
+ public function writeMapBegin($key_type, $val_type, $size)
+ {
+ $written = 0;
+ if ($size == 0) {
+ $written = $this->writeByte(0);
+ } else {
+ $written = $this->writeVarint($size) +
+ $this->writeUByte(self::$ctypes[$key_type] << 4 |
+ self::$ctypes[$val_type]);
+ }
+ $this->containers[] = $this->state;
+
+ return $written;
+ }
+
+ public function writeCollectionEnd()
+ {
+ $this->state = array_pop($this->containers);
+
+ return 0;
+ }
+
+ public function writeMapEnd()
+ {
+ return $this->writeCollectionEnd();
+ }
+
+ public function writeListBegin($elem_type, $size)
+ {
+ return $this->writeCollectionBegin($elem_type, $size);
+ }
+
+ public function writeListEnd()
+ {
+ return $this->writeCollectionEnd();
+ }
+
+ public function writeSetBegin($elem_type, $size)
+ {
+ return $this->writeCollectionBegin($elem_type, $size);
+ }
+
+ public function writeSetEnd()
+ {
+ return $this->writeCollectionEnd();
+ }
+
+ public function writeBool($value)
+ {
+ if ($this->state == TCompactProtocol::STATE_BOOL_WRITE) {
+ $ctype = TCompactProtocol::COMPACT_FALSE;
+ if ($value) {
+ $ctype = TCompactProtocol::COMPACT_TRUE;
+ }
+
+ return $this->writeFieldHeader($ctype, $this->boolFid);
+ } elseif ($this->state == TCompactProtocol::STATE_CONTAINER_WRITE) {
+ return $this->writeByte($value ? 1 : 0);
+ } else {
+ throw new TProtocolException('Invalid state in compact protocol');
+ }
+ }
+
+ public function writeByte($value)
+ {
+ $data = pack('c', $value);
+ $this->trans_->write($data, 1);
+
+ return 1;
+ }
+
+ public function writeUByte($byte)
+ {
+ $this->trans_->write(pack('C', $byte), 1);
+
+ return 1;
+ }
+
+ public function writeI16($value)
+ {
+ $thing = $this->toZigZag($value, 16);
+
+ return $this->writeVarint($thing);
+ }
+
+ public function writeI32($value)
+ {
+ $thing = $this->toZigZag($value, 32);
+
+ return $this->writeVarint($thing);
+ }
+
+ public function writeDouble($value)
+ {
+ $data = pack('d', $value);
+ $this->trans_->write($data, 8);
+
+ return 8;
+ }
+
+ public function writeString($value)
+ {
+ $len = TStringFuncFactory::create()->strlen($value);
+ $result = $this->writeVarint($len);
+ if ($len) {
+ $this->trans_->write($value, $len);
+ }
+
+ return $result + $len;
+ }
+
+ public function readFieldBegin(&$name, &$field_type, &$field_id)
+ {
+ $result = $this->readUByte($compact_type_and_delta);
+
+ $compact_type = $compact_type_and_delta & 0x0f;
+
+ if ($compact_type == TType::STOP) {
+ $field_type = $compact_type;
+ $field_id = 0;
+
+ return $result;
+ }
+ $delta = $compact_type_and_delta >> 4;
+ if ($delta == 0) {
+ $result += $this->readI16($field_id);
+ } else {
+ $field_id = $this->lastFid + $delta;
+ }
+ $this->lastFid = $field_id;
+ $field_type = $this->getTType($compact_type);
+
+ if ($compact_type == TCompactProtocol::COMPACT_TRUE) {
+ $this->state = TCompactProtocol::STATE_BOOL_READ;
+ $this->boolValue = true;
+ } elseif ($compact_type == TCompactProtocol::COMPACT_FALSE) {
+ $this->state = TCompactProtocol::STATE_BOOL_READ;
+ $this->boolValue = false;
+ } else {
+ $this->state = TCompactProtocol::STATE_VALUE_READ;
+ }
+
+ return $result;
+ }
+
+ public function readFieldEnd()
+ {
+ $this->state = TCompactProtocol::STATE_FIELD_READ;
+
+ return 0;
+ }
+
+ public function readUByte(&$value)
+ {
+ $data = $this->trans_->readAll(1);
+ $arr = unpack('C', $data);
+ $value = $arr[1];
+
+ return 1;
+ }
+
+ public function readByte(&$value)
+ {
+ $data = $this->trans_->readAll(1);
+ $arr = unpack('c', $data);
+ $value = $arr[1];
+
+ return 1;
+ }
+
+ public function readZigZag(&$value)
+ {
+ $result = $this->readVarint($value);
+ $value = $this->fromZigZag($value);
+
+ return $result;
+ }
+
+ public function readMessageBegin(&$name, &$type, &$seqid)
+ {
+ $protoId = 0;
+ $result = $this->readUByte($protoId);
+ if ($protoId != TCompactProtocol::PROTOCOL_ID) {
+ throw new TProtocolException('Bad protocol id in TCompact message');
+ }
+ $verType = 0;
+ $result += $this->readUByte($verType);
+ $type = ($verType >> TCompactProtocol::TYPE_SHIFT_AMOUNT) & TCompactProtocol::TYPE_BITS;
+ $version = $verType & TCompactProtocol::VERSION_MASK;
+ if ($version != TCompactProtocol::VERSION) {
+ throw new TProtocolException('Bad version in TCompact message');
+ }
+ $result += $this->readVarint($seqid);
+ $result += $this->readString($name);
+
+ return $result;
+ }
+
+ public function readMessageEnd()
+ {
+ return 0;
+ }
+
+ public function readStructBegin(&$name)
+ {
+ $name = ''; // unused
+ $this->structs[] = array($this->state, $this->lastFid);
+ $this->state = TCompactProtocol::STATE_FIELD_READ;
+ $this->lastFid = 0;
+
+ return 0;
+ }
+
+ public function readStructEnd()
+ {
+ $last = array_pop($this->structs);
+ $this->state = $last[0];
+ $this->lastFid = $last[1];
+
+ return 0;
+ }
+
+ public function readCollectionBegin(&$type, &$size)
+ {
+ $sizeType = 0;
+ $result = $this->readUByte($sizeType);
+ $size = $sizeType >> 4;
+ $type = $this->getTType($sizeType);
+ if ($size == 15) {
+ $result += $this->readVarint($size);
+ }
+ $this->containers[] = $this->state;
+ $this->state = TCompactProtocol::STATE_CONTAINER_READ;
+
+ return $result;
+ }
+
+ public function readMapBegin(&$key_type, &$val_type, &$size)
+ {
+ $result = $this->readVarint($size);
+ $types = 0;
+ if ($size > 0) {
+ $result += $this->readUByte($types);
+ }
+ $val_type = $this->getTType($types);
+ $key_type = $this->getTType($types >> 4);
+ $this->containers[] = $this->state;
+ $this->state = TCompactProtocol::STATE_CONTAINER_READ;
+
+ return $result;
+ }
+
+ public function readCollectionEnd()
+ {
+ $this->state = array_pop($this->containers);
+
+ return 0;
+ }
+
+ public function readMapEnd()
+ {
+ return $this->readCollectionEnd();
+ }
+
+ public function readListBegin(&$elem_type, &$size)
+ {
+ return $this->readCollectionBegin($elem_type, $size);
+ }
+
+ public function readListEnd()
+ {
+ return $this->readCollectionEnd();
+ }
+
+ public function readSetBegin(&$elem_type, &$size)
+ {
+ return $this->readCollectionBegin($elem_type, $size);
+ }
+
+ public function readSetEnd()
+ {
+ return $this->readCollectionEnd();
+ }
+
+ public function readBool(&$value)
+ {
+ if ($this->state == TCompactProtocol::STATE_BOOL_READ) {
+ $value = $this->boolValue;
+
+ return 0;
+ } elseif ($this->state == TCompactProtocol::STATE_CONTAINER_READ) {
+ return $this->readByte($value);
+ } else {
+ throw new TProtocolException('Invalid state in compact protocol');
+ }
+ }
+
+ public function readI16(&$value)
+ {
+ return $this->readZigZag($value);
+ }
+
+ public function readI32(&$value)
+ {
+ return $this->readZigZag($value);
+ }
+
+ public function readDouble(&$value)
+ {
+ $data = $this->trans_->readAll(8);
+ $arr = unpack('d', $data);
+ $value = $arr[1];
+
+ return 8;
+ }
+
+ public function readString(&$value)
+ {
+ $result = $this->readVarint($len);
+ if ($len) {
+ $value = $this->trans_->readAll($len);
+ } else {
+ $value = '';
+ }
+
+ return $result + $len;
+ }
+
+ public function getTType($byte)
+ {
+ return self::$ttypes[$byte & 0x0f];
+ }
+
+ // If we are on a 32bit architecture we have to explicitly deal with
+ // 64-bit twos-complement arithmetic since PHP wants to treat all ints
+ // as signed and any int over 2^31 - 1 as a float
+
+ // Read and write I64 as two 32 bit numbers $hi and $lo
+
+ public function readI64(&$value)
+ {
+ // Read varint from wire
+ $hi = 0;
+ $lo = 0;
+
+ $idx = 0;
+ $shift = 0;
+
+ while (true) {
+ $x = $this->trans_->readAll(1);
+ $arr = unpack('C', $x);
+ $byte = $arr[1];
+ $idx += 1;
+ // Shift hi and lo together.
+ if ($shift < 28) {
+ $lo |= (($byte & 0x7f) << $shift);
+ } elseif ($shift == 28) {
+ $lo |= (($byte & 0x0f) << 28);
+ $hi |= (($byte & 0x70) >> 4);
+ } else {
+ $hi |= (($byte & 0x7f) << ($shift - 32));
+ }
+ if (($byte >> 7) === 0) {
+ break;
+ }
+ $shift += 7;
+ }
+
+ // Now, unzig it.
+ $xorer = 0;
+ if ($lo & 1) {
+ $xorer = 0xffffffff;
+ }
+ $lo = ($lo >> 1) & 0x7fffffff;
+ $lo = $lo | (($hi & 1) << 31);
+ $hi = ($hi >> 1) ^ $xorer;
+ $lo = $lo ^ $xorer;
+
+ // Now put $hi and $lo back together
+ $isNeg = $hi < 0 || $hi & 0x80000000;
+
+ // Check for a negative
+ if ($isNeg) {
+ $hi = ~$hi & (int)0xffffffff;
+ $lo = ~$lo & (int)0xffffffff;
+
+ if ($lo == (int)0xffffffff) {
+ $hi++;
+ $lo = 0;
+ } else {
+ $lo++;
+ }
+ }
+
+ // Force 32bit words in excess of 2G to be positive - we deal with sign
+ // explicitly below
+
+ if ($hi & (int)0x80000000) {
+ $hi &= (int)0x7fffffff;
+ $hi += 0x80000000;
+ }
+
+ if ($lo & (int)0x80000000) {
+ $lo &= (int)0x7fffffff;
+ $lo += 0x80000000;
+ }
+
+ // Create as negative value first, since we can store -2^63 but not 2^63
+ $value = -$hi * 4294967296 - $lo;
+
+ if (!$isNeg) {
+ $value = -$value;
+ }
+
+ return $idx;
+ }
+
+ public function writeI64($value)
+ {
+ // If we are in an I32 range, use the easy method below.
+ if (($value > 4294967296) || ($value < -4294967296)) {
+ // Convert $value to $hi and $lo
+ $neg = $value < 0;
+
+ if ($neg) {
+ $value *= -1;
+ }
+
+ $hi = (int)$value >> 32;
+ $lo = (int)$value & 0xffffffff;
+
+ if ($neg) {
+ $hi = ~$hi;
+ $lo = ~$lo;
+ if (($lo & (int)0xffffffff) == (int)0xffffffff) {
+ $lo = 0;
+ $hi++;
+ } else {
+ $lo++;
+ }
+ }
+
+ // Now do the zigging and zagging.
+ $xorer = 0;
+ if ($neg) {
+ $xorer = 0xffffffff;
+ }
+ $lowbit = ($lo >> 31) & 1;
+ $hi = ($hi << 1) | $lowbit;
+ $lo = ($lo << 1);
+ $lo = ($lo ^ $xorer) & 0xffffffff;
+ $hi = ($hi ^ $xorer) & 0xffffffff;
+
+ // now write out the varint, ensuring we shift both hi and lo
+ $out = "";
+ while (true) {
+ if (($lo & ~0x7f) === 0 &&
+ $hi === 0) {
+ $out .= chr($lo);
+ break;
+ } else {
+ $out .= chr(($lo & 0xff) | 0x80);
+ $lo = $lo >> 7;
+ $lo = $lo | ($hi << 25);
+ $hi = $hi >> 7;
+ // Right shift carries sign, but we don't want it to.
+ $hi = $hi & (127 << 25);
+ }
+ }
+
+ $ret = TStringFuncFactory::create()->strlen($out);
+ $this->trans_->write($out, $ret);
+
+ return $ret;
+ } else {
+ return $this->writeVarint($this->toZigZag($value, 64));
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/TJSONProtocol.php b/vendor/packaged/thrift/src/Protocol/TJSONProtocol.php
new file mode 100644
index 000000000..914488421
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/TJSONProtocol.php
@@ -0,0 +1,815 @@
+<?php
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol;
+
+use Thrift\Type\TType;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\JSON\BaseContext;
+use Thrift\Protocol\JSON\LookaheadReader;
+use Thrift\Protocol\JSON\PairContext;
+use Thrift\Protocol\JSON\ListContext;
+
+/**
+ * JSON implementation of thrift protocol, ported from Java.
+ */
+class TJSONProtocol extends TProtocol
+{
+ const COMMA = ',';
+ const COLON = ':';
+ const LBRACE = '{';
+ const RBRACE = '}';
+ const LBRACKET = '[';
+ const RBRACKET = ']';
+ const QUOTE = '"';
+ const BACKSLASH = '\\';
+ const ZERO = '0';
+ const ESCSEQ = '\\';
+ const DOUBLEESC = '__DOUBLE_ESCAPE_SEQUENCE__';
+
+ const VERSION = 1;
+
+ public static $JSON_CHAR_TABLE = array(
+ /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
+ 0, 0, 0, 0, 0, 0, 0, 0, 'b', 't', 'n', 0, 'f', 'r', 0, 0, // 0
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
+ 1, 1, '"', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
+ );
+
+ public static $ESCAPE_CHARS = array('"', '\\', '/', "b", "f", "n", "r", "t");
+
+ public static $ESCAPE_CHAR_VALS = array(
+ '"', '\\', '/', "\x08", "\f", "\n", "\r", "\t",
+ );
+
+ const NAME_BOOL = "tf";
+ const NAME_BYTE = "i8";
+ const NAME_I16 = "i16";
+ const NAME_I32 = "i32";
+ const NAME_I64 = "i64";
+ const NAME_DOUBLE = "dbl";
+ const NAME_STRUCT = "rec";
+ const NAME_STRING = "str";
+ const NAME_MAP = "map";
+ const NAME_LIST = "lst";
+ const NAME_SET = "set";
+
+ private function getTypeNameForTypeID($typeID)
+ {
+ switch ($typeID) {
+ case TType::BOOL:
+ return self::NAME_BOOL;
+ case TType::BYTE:
+ return self::NAME_BYTE;
+ case TType::I16:
+ return self::NAME_I16;
+ case TType::I32:
+ return self::NAME_I32;
+ case TType::I64:
+ return self::NAME_I64;
+ case TType::DOUBLE:
+ return self::NAME_DOUBLE;
+ case TType::STRING:
+ return self::NAME_STRING;
+ case TType::STRUCT:
+ return self::NAME_STRUCT;
+ case TType::MAP:
+ return self::NAME_MAP;
+ case TType::SET:
+ return self::NAME_SET;
+ case TType::LST:
+ return self::NAME_LIST;
+ default:
+ throw new TProtocolException("Unrecognized type", TProtocolException::UNKNOWN);
+ }
+ }
+
+ private function getTypeIDForTypeName($name)
+ {
+ $result = TType::STOP;
+
+ if (strlen($name) > 1) {
+ switch (substr($name, 0, 1)) {
+ case 'd':
+ $result = TType::DOUBLE;
+ break;
+ case 'i':
+ switch (substr($name, 1, 1)) {
+ case '8':
+ $result = TType::BYTE;
+ break;
+ case '1':
+ $result = TType::I16;
+ break;
+ case '3':
+ $result = TType::I32;
+ break;
+ case '6':
+ $result = TType::I64;
+ break;
+ }
+ break;
+ case 'l':
+ $result = TType::LST;
+ break;
+ case 'm':
+ $result = TType::MAP;
+ break;
+ case 'r':
+ $result = TType::STRUCT;
+ break;
+ case 's':
+ if (substr($name, 1, 1) == 't') {
+ $result = TType::STRING;
+ } elseif (substr($name, 1, 1) == 'e') {
+ $result = TType::SET;
+ }
+ break;
+ case 't':
+ $result = TType::BOOL;
+ break;
+ }
+ }
+ if ($result == TType::STOP) {
+ throw new TProtocolException("Unrecognized type", TProtocolException::INVALID_DATA);
+ }
+
+ return $result;
+ }
+
+ public $contextStack_ = array();
+ public $context_;
+ public $reader_;
+
+ private function pushContext($c)
+ {
+ array_push($this->contextStack_, $this->context_);
+ $this->context_ = $c;
+ }
+
+ private function popContext()
+ {
+ $this->context_ = array_pop($this->contextStack_);
+ }
+
+ public function __construct($trans)
+ {
+ parent::__construct($trans);
+ $this->context_ = new BaseContext();
+ $this->reader_ = new LookaheadReader($this);
+ }
+
+ public function reset()
+ {
+ $this->contextStack_ = array();
+ $this->context_ = new BaseContext();
+ $this->reader_ = new LookaheadReader($this);
+ }
+
+ private $tmpbuf_ = array(4);
+
+ public function readJSONSyntaxChar($b)
+ {
+ $ch = $this->reader_->read();
+
+ if (substr($ch, 0, 1) != $b) {
+ throw new TProtocolException("Unexpected character: " . $ch, TProtocolException::INVALID_DATA);
+ }
+ }
+
+ private function hexVal($s)
+ {
+ for ($i = 0; $i < strlen($s); $i++) {
+ $ch = substr($s, $i, 1);
+
+ if (!($ch >= "a" && $ch <= "f") && !($ch >= "0" && $ch <= "9")) {
+ throw new TProtocolException("Expected hex character " . $ch, TProtocolException::INVALID_DATA);
+ }
+ }
+
+ return hexdec($s);
+ }
+
+ private function hexChar($val)
+ {
+ return dechex($val);
+ }
+
+ private function hasJSONUnescapedUnicode()
+ {
+ if (PHP_MAJOR_VERSION > 5 || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 4)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ private function unescapedUnicode($str)
+ {
+ if ($this->hasJSONUnescapedUnicode()) {
+ return json_encode($str, JSON_UNESCAPED_UNICODE);
+ }
+
+ $json = json_encode($str);
+
+ /*
+ * Unescaped character outside the Basic Multilingual Plane
+ * High surrogate: 0xD800 - 0xDBFF
+ * Low surrogate: 0xDC00 - 0xDFFF
+ */
+ $json = preg_replace_callback(
+ '/\\\\u(d[89ab][0-9a-f]{2})\\\\u(d[cdef][0-9a-f]{2})/i',
+ function ($matches) {
+ return mb_convert_encoding(pack('H*', $matches[1] . $matches[2]), 'UTF-8', 'UTF-16BE');
+ },
+ $json
+ );
+
+ /*
+ * Unescaped characters within the Basic Multilingual Plane
+ */
+ $json = preg_replace_callback(
+ '/\\\\u([0-9a-f]{4})/i',
+ function ($matches) {
+ return mb_convert_encoding(pack('H*', $matches[1]), 'UTF-8', 'UTF-16BE');
+ },
+ $json
+ );
+
+ return $json;
+ }
+
+ private function writeJSONString($b)
+ {
+ $this->context_->write();
+
+ if (is_numeric($b) && $this->context_->escapeNum()) {
+ $this->trans_->write(self::QUOTE);
+ }
+
+ $this->trans_->write($this->unescapedUnicode($b));
+
+ if (is_numeric($b) && $this->context_->escapeNum()) {
+ $this->trans_->write(self::QUOTE);
+ }
+ }
+
+ private function writeJSONInteger($num)
+ {
+ $this->context_->write();
+
+ if ($this->context_->escapeNum()) {
+ $this->trans_->write(self::QUOTE);
+ }
+
+ $this->trans_->write($num);
+
+ if ($this->context_->escapeNum()) {
+ $this->trans_->write(self::QUOTE);
+ }
+ }
+
+ private function writeJSONDouble($num)
+ {
+ $this->context_->write();
+
+ if ($this->context_->escapeNum()) {
+ $this->trans_->write(self::QUOTE);
+ }
+
+ $this->trans_->write(json_encode($num));
+
+ if ($this->context_->escapeNum()) {
+ $this->trans_->write(self::QUOTE);
+ }
+ }
+
+ private function writeJSONBase64($data)
+ {
+ $this->context_->write();
+ $this->trans_->write(self::QUOTE);
+ $this->trans_->write(json_encode(base64_encode($data)));
+ $this->trans_->write(self::QUOTE);
+ }
+
+ private function writeJSONObjectStart()
+ {
+ $this->context_->write();
+ $this->trans_->write(self::LBRACE);
+ $this->pushContext(new PairContext($this));
+ }
+
+ private function writeJSONObjectEnd()
+ {
+ $this->popContext();
+ $this->trans_->write(self::RBRACE);
+ }
+
+ private function writeJSONArrayStart()
+ {
+ $this->context_->write();
+ $this->trans_->write(self::LBRACKET);
+ $this->pushContext(new ListContext($this));
+ }
+
+ private function writeJSONArrayEnd()
+ {
+ $this->popContext();
+ $this->trans_->write(self::RBRACKET);
+ }
+
+ private function readJSONString($skipContext)
+ {
+ if (!$skipContext) {
+ $this->context_->read();
+ }
+
+ $jsonString = '';
+ $lastChar = null;
+ while (true) {
+ $ch = $this->reader_->read();
+ $jsonString .= $ch;
+ if ($ch == self::QUOTE &&
+ $lastChar !== null &&
+ $lastChar !== self::ESCSEQ) {
+ break;
+ }
+ if ($ch == self::ESCSEQ && $lastChar == self::ESCSEQ) {
+ $lastChar = self::DOUBLEESC;
+ } else {
+ $lastChar = $ch;
+ }
+ }
+
+ return json_decode($jsonString);
+ }
+
+ private function isJSONNumeric($b)
+ {
+ switch ($b) {
+ case '+':
+ case '-':
+ case '.':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'E':
+ case 'e':
+ return true;
+ }
+
+ return false;
+ }
+
+ private function readJSONNumericChars()
+ {
+ $strbld = array();
+
+ while (true) {
+ $ch = $this->reader_->peek();
+
+ if (!$this->isJSONNumeric($ch)) {
+ break;
+ }
+
+ $strbld[] = $this->reader_->read();
+ }
+
+ return implode("", $strbld);
+ }
+
+ private function readJSONInteger()
+ {
+ $this->context_->read();
+
+ if ($this->context_->escapeNum()) {
+ $this->readJSONSyntaxChar(self::QUOTE);
+ }
+
+ $str = $this->readJSONNumericChars();
+
+ if ($this->context_->escapeNum()) {
+ $this->readJSONSyntaxChar(self::QUOTE);
+ }
+
+ if (!is_numeric($str)) {
+ throw new TProtocolException("Invalid data in numeric: " . $str, TProtocolException::INVALID_DATA);
+ }
+
+ return intval($str);
+ }
+
+ /**
+ * Identical to readJSONInteger but without the final cast.
+ * Needed for proper handling of i64 on 32 bit machines. Why a
+ * separate function? So we don't have to force the rest of the
+ * use cases through the extra conditional.
+ */
+ private function readJSONIntegerAsString()
+ {
+ $this->context_->read();
+
+ if ($this->context_->escapeNum()) {
+ $this->readJSONSyntaxChar(self::QUOTE);
+ }
+
+ $str = $this->readJSONNumericChars();
+
+ if ($this->context_->escapeNum()) {
+ $this->readJSONSyntaxChar(self::QUOTE);
+ }
+
+ if (!is_numeric($str)) {
+ throw new TProtocolException("Invalid data in numeric: " . $str, TProtocolException::INVALID_DATA);
+ }
+
+ return $str;
+ }
+
+ private function readJSONDouble()
+ {
+ $this->context_->read();
+
+ if (substr($this->reader_->peek(), 0, 1) == self::QUOTE) {
+ $arr = $this->readJSONString(true);
+
+ if ($arr == "NaN") {
+ return NAN;
+ } elseif ($arr == "Infinity") {
+ return INF;
+ } elseif (!$this->context_->escapeNum()) {
+ throw new TProtocolException(
+ "Numeric data unexpectedly quoted " . $arr,
+ TProtocolException::INVALID_DATA
+ );
+ }
+
+ return floatval($arr);
+ } else {
+ if ($this->context_->escapeNum()) {
+ $this->readJSONSyntaxChar(self::QUOTE);
+ }
+
+ return floatval($this->readJSONNumericChars());
+ }
+ }
+
+ private function readJSONBase64()
+ {
+ $arr = $this->readJSONString(false);
+ $data = base64_decode($arr, true);
+
+ if ($data === false) {
+ throw new TProtocolException("Invalid base64 data " . $arr, TProtocolException::INVALID_DATA);
+ }
+
+ return $data;
+ }
+
+ private function readJSONObjectStart()
+ {
+ $this->context_->read();
+ $this->readJSONSyntaxChar(self::LBRACE);
+ $this->pushContext(new PairContext($this));
+ }
+
+ private function readJSONObjectEnd()
+ {
+ $this->readJSONSyntaxChar(self::RBRACE);
+ $this->popContext();
+ }
+
+ private function readJSONArrayStart()
+ {
+ $this->context_->read();
+ $this->readJSONSyntaxChar(self::LBRACKET);
+ $this->pushContext(new ListContext($this));
+ }
+
+ private function readJSONArrayEnd()
+ {
+ $this->readJSONSyntaxChar(self::RBRACKET);
+ $this->popContext();
+ }
+
+ /**
+ * Writes the message header
+ *
+ * @param string $name Function name
+ * @param int $type message type TMessageType::CALL or TMessageType::REPLY
+ * @param int $seqid The sequence id of this message
+ */
+ public function writeMessageBegin($name, $type, $seqid)
+ {
+ $this->writeJSONArrayStart();
+ $this->writeJSONInteger(self::VERSION);
+ $this->writeJSONString($name);
+ $this->writeJSONInteger($type);
+ $this->writeJSONInteger($seqid);
+ }
+
+ /**
+ * Close the message
+ */
+ public function writeMessageEnd()
+ {
+ $this->writeJSONArrayEnd();
+ }
+
+ /**
+ * Writes a struct header.
+ *
+ * @param string $name Struct name
+ * @throws TException on write error
+ * @return int How many bytes written
+ */
+ public function writeStructBegin($name)
+ {
+ $this->writeJSONObjectStart();
+ }
+
+ /**
+ * Close a struct.
+ *
+ * @throws TException on write error
+ * @return int How many bytes written
+ */
+ public function writeStructEnd()
+ {
+ $this->writeJSONObjectEnd();
+ }
+
+ public function writeFieldBegin($fieldName, $fieldType, $fieldId)
+ {
+ $this->writeJSONInteger($fieldId);
+ $this->writeJSONObjectStart();
+ $this->writeJSONString($this->getTypeNameForTypeID($fieldType));
+ }
+
+ public function writeFieldEnd()
+ {
+ $this->writeJsonObjectEnd();
+ }
+
+ public function writeFieldStop()
+ {
+ }
+
+ public function writeMapBegin($keyType, $valType, $size)
+ {
+ $this->writeJSONArrayStart();
+ $this->writeJSONString($this->getTypeNameForTypeID($keyType));
+ $this->writeJSONString($this->getTypeNameForTypeID($valType));
+ $this->writeJSONInteger($size);
+ $this->writeJSONObjectStart();
+ }
+
+ public function writeMapEnd()
+ {
+ $this->writeJSONObjectEnd();
+ $this->writeJSONArrayEnd();
+ }
+
+ public function writeListBegin($elemType, $size)
+ {
+ $this->writeJSONArrayStart();
+ $this->writeJSONString($this->getTypeNameForTypeID($elemType));
+ $this->writeJSONInteger($size);
+ }
+
+ public function writeListEnd()
+ {
+ $this->writeJSONArrayEnd();
+ }
+
+ public function writeSetBegin($elemType, $size)
+ {
+ $this->writeJSONArrayStart();
+ $this->writeJSONString($this->getTypeNameForTypeID($elemType));
+ $this->writeJSONInteger($size);
+ }
+
+ public function writeSetEnd()
+ {
+ $this->writeJSONArrayEnd();
+ }
+
+ public function writeBool($bool)
+ {
+ $this->writeJSONInteger($bool ? 1 : 0);
+ }
+
+ public function writeByte($byte)
+ {
+ $this->writeJSONInteger($byte);
+ }
+
+ public function writeI16($i16)
+ {
+ $this->writeJSONInteger($i16);
+ }
+
+ public function writeI32($i32)
+ {
+ $this->writeJSONInteger($i32);
+ }
+
+ public function writeI64($i64)
+ {
+ $this->writeJSONInteger($i64);
+ }
+
+ public function writeDouble($dub)
+ {
+ $this->writeJSONDouble($dub);
+ }
+
+ public function writeString($str)
+ {
+ $this->writeJSONString($str);
+ }
+
+ /**
+ * Reads the message header
+ *
+ * @param string $name Function name
+ * @param int $type message type TMessageType::CALL or TMessageType::REPLY
+ * @parem int $seqid The sequence id of this message
+ */
+ public function readMessageBegin(&$name, &$type, &$seqid)
+ {
+ $this->readJSONArrayStart();
+
+ if ($this->readJSONInteger() != self::VERSION) {
+ throw new TProtocolException("Message contained bad version", TProtocolException::BAD_VERSION);
+ }
+
+ $name = $this->readJSONString(false);
+ $type = $this->readJSONInteger();
+ $seqid = $this->readJSONInteger();
+
+ return true;
+ }
+
+ /**
+ * Read the close of message
+ */
+ public function readMessageEnd()
+ {
+ $this->readJSONArrayEnd();
+ }
+
+ public function readStructBegin(&$name)
+ {
+ $this->readJSONObjectStart();
+
+ return 0;
+ }
+
+ public function readStructEnd()
+ {
+ $this->readJSONObjectEnd();
+ }
+
+ public function readFieldBegin(&$name, &$fieldType, &$fieldId)
+ {
+ $ch = $this->reader_->peek();
+ $name = "";
+
+ if (substr($ch, 0, 1) == self::RBRACE) {
+ $fieldType = TType::STOP;
+ } else {
+ $fieldId = $this->readJSONInteger();
+ $this->readJSONObjectStart();
+ $fieldType = $this->getTypeIDForTypeName($this->readJSONString(false));
+ }
+ }
+
+ public function readFieldEnd()
+ {
+ $this->readJSONObjectEnd();
+ }
+
+ public function readMapBegin(&$keyType, &$valType, &$size)
+ {
+ $this->readJSONArrayStart();
+ $keyType = $this->getTypeIDForTypeName($this->readJSONString(false));
+ $valType = $this->getTypeIDForTypeName($this->readJSONString(false));
+ $size = $this->readJSONInteger();
+ $this->readJSONObjectStart();
+ }
+
+ public function readMapEnd()
+ {
+ $this->readJSONObjectEnd();
+ $this->readJSONArrayEnd();
+ }
+
+ public function readListBegin(&$elemType, &$size)
+ {
+ $this->readJSONArrayStart();
+ $elemType = $this->getTypeIDForTypeName($this->readJSONString(false));
+ $size = $this->readJSONInteger();
+
+ return true;
+ }
+
+ public function readListEnd()
+ {
+ $this->readJSONArrayEnd();
+ }
+
+ public function readSetBegin(&$elemType, &$size)
+ {
+ $this->readJSONArrayStart();
+ $elemType = $this->getTypeIDForTypeName($this->readJSONString(false));
+ $size = $this->readJSONInteger();
+
+ return true;
+ }
+
+ public function readSetEnd()
+ {
+ $this->readJSONArrayEnd();
+ }
+
+ public function readBool(&$bool)
+ {
+ $bool = $this->readJSONInteger() == 0 ? false : true;
+
+ return true;
+ }
+
+ public function readByte(&$byte)
+ {
+ $byte = $this->readJSONInteger();
+
+ return true;
+ }
+
+ public function readI16(&$i16)
+ {
+ $i16 = $this->readJSONInteger();
+
+ return true;
+ }
+
+ public function readI32(&$i32)
+ {
+ $i32 = $this->readJSONInteger();
+
+ return true;
+ }
+
+ public function readI64(&$i64)
+ {
+ if (PHP_INT_SIZE === 4) {
+ $i64 = $this->readJSONIntegerAsString();
+ } else {
+ $i64 = $this->readJSONInteger();
+ }
+
+ return true;
+ }
+
+ public function readDouble(&$dub)
+ {
+ $dub = $this->readJSONDouble();
+
+ return true;
+ }
+
+ public function readString(&$str)
+ {
+ $str = $this->readJSONString(false);
+
+ return true;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/TMultiplexedProtocol.php b/vendor/packaged/thrift/src/Protocol/TMultiplexedProtocol.php
new file mode 100644
index 000000000..d579c099d
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/TMultiplexedProtocol.php
@@ -0,0 +1,85 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol;
+
+use Thrift\Type\TMessageType;
+
+/**
+ * <code>TMultiplexedProtocol</code> is a protocol-independent concrete decorator
+ * that allows a Thrift client to communicate with a multiplexing Thrift server,
+ * by prepending the service name to the function name during function calls.
+ *
+ * @package Thrift\Protocol
+ */
+class TMultiplexedProtocol extends TProtocolDecorator
+{
+ /**
+ * Separator between service name and function name.
+ * Should be the same as used at multiplexed Thrift server.
+ *
+ * @var string
+ */
+ const SEPARATOR = ":";
+
+ /**
+ * The name of service.
+ *
+ * @var string
+ */
+ private $serviceName_;
+
+ /**
+ * Constructor of <code>TMultiplexedProtocol</code> class.
+ *
+ * Wrap the specified protocol, allowing it to be used to communicate with a
+ * multiplexing server. The <code>$serviceName</code> is required as it is
+ * prepended to the message header so that the multiplexing server can broker
+ * the function call to the proper service.
+ *
+ * @param TProtocol $protocol
+ * @param string $serviceName The name of service.
+ */
+ public function __construct(TProtocol $protocol, $serviceName)
+ {
+ parent::__construct($protocol);
+ $this->serviceName_ = $serviceName;
+ }
+
+ /**
+ * Writes the message header.
+ * Prepends the service name to the function name, separated by <code>TMultiplexedProtocol::SEPARATOR</code>.
+ *
+ * @param string $name Function name.
+ * @param int $type Message type.
+ * @param int $seqid The sequence id of this message.
+ */
+ public function writeMessageBegin($name, $type, $seqid)
+ {
+ if ($type == TMessageType::CALL || $type == TMessageType::ONEWAY) {
+ $nameWithService = $this->serviceName_ . self::SEPARATOR . $name;
+ parent::writeMessageBegin($nameWithService, $type, $seqid);
+ } else {
+ parent::writeMessageBegin($name, $type, $seqid);
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/TProtocol.php b/vendor/packaged/thrift/src/Protocol/TProtocol.php
new file mode 100644
index 000000000..f7b581f7b
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/TProtocol.php
@@ -0,0 +1,352 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol;
+
+use Thrift\Exception\TException;
+use Thrift\Transport\TTransport;
+use Thrift\Type\TType;
+use Thrift\Exception\TProtocolException;
+
+/**
+ * Protocol base class module.
+ */
+abstract class TProtocol
+{
+ /**
+ * Underlying transport
+ *
+ * @var TTransport
+ */
+ protected $trans_;
+
+ /**
+ * @param TTransport $trans
+ */
+ protected function __construct($trans)
+ {
+ $this->trans_ = $trans;
+ }
+
+ /**
+ * Accessor for transport
+ *
+ * @return TTransport
+ */
+ public function getTransport()
+ {
+ return $this->trans_;
+ }
+
+ /**
+ * Writes the message header
+ *
+ * @param string $name Function name
+ * @param int $type message type TMessageType::CALL or TMessageType::REPLY
+ * @param int $seqid The sequence id of this message
+ */
+ abstract public function writeMessageBegin($name, $type, $seqid);
+
+ /**
+ * Close the message
+ */
+ abstract public function writeMessageEnd();
+
+ /**
+ * Writes a struct header.
+ *
+ * @param string $name Struct name
+ * @throws TException on write error
+ * @return int How many bytes written
+ */
+ abstract public function writeStructBegin($name);
+
+ /**
+ * Close a struct.
+ *
+ * @throws TException on write error
+ * @return int How many bytes written
+ */
+ abstract public function writeStructEnd();
+
+ /*
+ * Starts a field.
+ *
+ * @param string $name Field name
+ * @param int $type Field type
+ * @param int $fid Field id
+ * @throws TException on write error
+ * @return int How many bytes written
+ */
+ abstract public function writeFieldBegin($fieldName, $fieldType, $fieldId);
+
+ abstract public function writeFieldEnd();
+
+ abstract public function writeFieldStop();
+
+ abstract public function writeMapBegin($keyType, $valType, $size);
+
+ abstract public function writeMapEnd();
+
+ abstract public function writeListBegin($elemType, $size);
+
+ abstract public function writeListEnd();
+
+ abstract public function writeSetBegin($elemType, $size);
+
+ abstract public function writeSetEnd();
+
+ abstract public function writeBool($bool);
+
+ abstract public function writeByte($byte);
+
+ abstract public function writeI16($i16);
+
+ abstract public function writeI32($i32);
+
+ abstract public function writeI64($i64);
+
+ abstract public function writeDouble($dub);
+
+ abstract public function writeString($str);
+
+ /**
+ * Reads the message header
+ *
+ * @param string $name Function name
+ * @param int $type message type TMessageType::CALL or TMessageType::REPLY
+ * @parem int $seqid The sequence id of this message
+ */
+ abstract public function readMessageBegin(&$name, &$type, &$seqid);
+
+ /**
+ * Read the close of message
+ */
+ abstract public function readMessageEnd();
+
+ abstract public function readStructBegin(&$name);
+
+ abstract public function readStructEnd();
+
+ abstract public function readFieldBegin(&$name, &$fieldType, &$fieldId);
+
+ abstract public function readFieldEnd();
+
+ abstract public function readMapBegin(&$keyType, &$valType, &$size);
+
+ abstract public function readMapEnd();
+
+ abstract public function readListBegin(&$elemType, &$size);
+
+ abstract public function readListEnd();
+
+ abstract public function readSetBegin(&$elemType, &$size);
+
+ abstract public function readSetEnd();
+
+ abstract public function readBool(&$bool);
+
+ abstract public function readByte(&$byte);
+
+ abstract public function readI16(&$i16);
+
+ abstract public function readI32(&$i32);
+
+ abstract public function readI64(&$i64);
+
+ abstract public function readDouble(&$dub);
+
+ abstract public function readString(&$str);
+
+ /**
+ * The skip function is a utility to parse over unrecognized date without
+ * causing corruption.
+ *
+ * @param TType $type What type is it
+ */
+ public function skip($type)
+ {
+ switch ($type) {
+ case TType::BOOL:
+ return $this->readBool($bool);
+ case TType::BYTE:
+ return $this->readByte($byte);
+ case TType::I16:
+ return $this->readI16($i16);
+ case TType::I32:
+ return $this->readI32($i32);
+ case TType::I64:
+ return $this->readI64($i64);
+ case TType::DOUBLE:
+ return $this->readDouble($dub);
+ case TType::STRING:
+ return $this->readString($str);
+ case TType::STRUCT:
+ $result = $this->readStructBegin($name);
+ while (true) {
+ $result += $this->readFieldBegin($name, $ftype, $fid);
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ $result += $this->skip($ftype);
+ $result += $this->readFieldEnd();
+ }
+ $result += $this->readStructEnd();
+
+ return $result;
+
+ case TType::MAP:
+ $result = $this->readMapBegin($keyType, $valType, $size);
+ for ($i = 0; $i < $size; $i++) {
+ $result += $this->skip($keyType);
+ $result += $this->skip($valType);
+ }
+ $result += $this->readMapEnd();
+
+ return $result;
+
+ case TType::SET:
+ $result = $this->readSetBegin($elemType, $size);
+ for ($i = 0; $i < $size; $i++) {
+ $result += $this->skip($elemType);
+ }
+ $result += $this->readSetEnd();
+
+ return $result;
+
+ case TType::LST:
+ $result = $this->readListBegin($elemType, $size);
+ for ($i = 0; $i < $size; $i++) {
+ $result += $this->skip($elemType);
+ }
+ $result += $this->readListEnd();
+
+ return $result;
+
+ default:
+ throw new TProtocolException(
+ 'Unknown field type: ' . $type,
+ TProtocolException::INVALID_DATA
+ );
+ }
+ }
+
+ /**
+ * Utility for skipping binary data
+ *
+ * @param TTransport $itrans TTransport object
+ * @param int $type Field type
+ */
+ public static function skipBinary($itrans, $type)
+ {
+ switch ($type) {
+ case TType::BOOL:
+ return $itrans->readAll(1);
+ case TType::BYTE:
+ return $itrans->readAll(1);
+ case TType::I16:
+ return $itrans->readAll(2);
+ case TType::I32:
+ return $itrans->readAll(4);
+ case TType::I64:
+ return $itrans->readAll(8);
+ case TType::DOUBLE:
+ return $itrans->readAll(8);
+ case TType::STRING:
+ $len = unpack('N', $itrans->readAll(4));
+ $len = $len[1];
+ if ($len > 0x7fffffff) {
+ $len = 0 - (($len - 1) ^ 0xffffffff);
+ }
+
+ return 4 + $itrans->readAll($len);
+
+ case TType::STRUCT:
+ $result = 0;
+ while (true) {
+ $ftype = 0;
+ $fid = 0;
+ $data = $itrans->readAll(1);
+ $arr = unpack('c', $data);
+ $ftype = $arr[1];
+ if ($ftype == TType::STOP) {
+ break;
+ }
+ // I16 field id
+ $result += $itrans->readAll(2);
+ $result += self::skipBinary($itrans, $ftype);
+ }
+
+ return $result;
+
+ case TType::MAP:
+ // Ktype
+ $data = $itrans->readAll(1);
+ $arr = unpack('c', $data);
+ $ktype = $arr[1];
+ // Vtype
+ $data = $itrans->readAll(1);
+ $arr = unpack('c', $data);
+ $vtype = $arr[1];
+ // Size
+ $data = $itrans->readAll(4);
+ $arr = unpack('N', $data);
+ $size = $arr[1];
+ if ($size > 0x7fffffff) {
+ $size = 0 - (($size - 1) ^ 0xffffffff);
+ }
+ $result = 6;
+ for ($i = 0; $i < $size; $i++) {
+ $result += self::skipBinary($itrans, $ktype);
+ $result += self::skipBinary($itrans, $vtype);
+ }
+
+ return $result;
+
+ case TType::SET:
+ case TType::LST:
+ // Vtype
+ $data = $itrans->readAll(1);
+ $arr = unpack('c', $data);
+ $vtype = $arr[1];
+ // Size
+ $data = $itrans->readAll(4);
+ $arr = unpack('N', $data);
+ $size = $arr[1];
+ if ($size > 0x7fffffff) {
+ $size = 0 - (($size - 1) ^ 0xffffffff);
+ }
+ $result = 5;
+ for ($i = 0; $i < $size; $i++) {
+ $result += self::skipBinary($itrans, $vtype);
+ }
+
+ return $result;
+
+ default:
+ throw new TProtocolException(
+ 'Unknown field type: ' . $type,
+ TProtocolException::INVALID_DATA
+ );
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/TProtocolDecorator.php b/vendor/packaged/thrift/src/Protocol/TProtocolDecorator.php
new file mode 100644
index 000000000..a85e0b8e5
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/TProtocolDecorator.php
@@ -0,0 +1,285 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol;
+
+use Thrift\Exception\TException;
+
+/**
+ * <code>TProtocolDecorator</code> forwards all requests to an enclosed
+ * <code>TProtocol</code> instance, providing a way to author concise
+ * concrete decorator subclasses. While it has no abstract methods, it
+ * is marked abstract as a reminder that by itself, it does not modify
+ * the behaviour of the enclosed <code>TProtocol</code>.
+ *
+ * @package Thrift\Protocol
+ */
+abstract class TProtocolDecorator extends TProtocol
+{
+ /**
+ * Instance of protocol, to which all operations will be forwarded.
+ *
+ * @var TProtocol
+ */
+ private $concreteProtocol_;
+
+ /**
+ * Constructor of <code>TProtocolDecorator</code> class.
+ * Encloses the specified protocol.
+ *
+ * @param TProtocol $protocol All operations will be forward to this instance. Must be non-null.
+ */
+ protected function __construct(TProtocol $protocol)
+ {
+ parent::__construct($protocol->getTransport());
+ $this->concreteProtocol_ = $protocol;
+ }
+
+ /**
+ * Writes the message header.
+ *
+ * @param string $name Function name
+ * @param int $type message type TMessageType::CALL or TMessageType::REPLY
+ * @param int $seqid The sequence id of this message
+ */
+ public function writeMessageBegin($name, $type, $seqid)
+ {
+ return $this->concreteProtocol_->writeMessageBegin($name, $type, $seqid);
+ }
+
+ /**
+ * Closes the message.
+ */
+ public function writeMessageEnd()
+ {
+ return $this->concreteProtocol_->writeMessageEnd();
+ }
+
+ /**
+ * Writes a struct header.
+ *
+ * @param string $name Struct name
+ *
+ * @throws TException on write error
+ * @return int How many bytes written
+ */
+ public function writeStructBegin($name)
+ {
+ return $this->concreteProtocol_->writeStructBegin($name);
+ }
+
+ /**
+ * Close a struct.
+ *
+ * @throws TException on write error
+ * @return int How many bytes written
+ */
+ public function writeStructEnd()
+ {
+ return $this->concreteProtocol_->writeStructEnd();
+ }
+
+ public function writeFieldBegin($fieldName, $fieldType, $fieldId)
+ {
+ return $this->concreteProtocol_->writeFieldBegin($fieldName, $fieldType, $fieldId);
+ }
+
+ public function writeFieldEnd()
+ {
+ return $this->concreteProtocol_->writeFieldEnd();
+ }
+
+ public function writeFieldStop()
+ {
+ return $this->concreteProtocol_->writeFieldStop();
+ }
+
+ public function writeMapBegin($keyType, $valType, $size)
+ {
+ return $this->concreteProtocol_->writeMapBegin($keyType, $valType, $size);
+ }
+
+ public function writeMapEnd()
+ {
+ return $this->concreteProtocol_->writeMapEnd();
+ }
+
+ public function writeListBegin($elemType, $size)
+ {
+ return $this->concreteProtocol_->writeListBegin($elemType, $size);
+ }
+
+ public function writeListEnd()
+ {
+ return $this->concreteProtocol_->writeListEnd();
+ }
+
+ public function writeSetBegin($elemType, $size)
+ {
+ return $this->concreteProtocol_->writeSetBegin($elemType, $size);
+ }
+
+ public function writeSetEnd()
+ {
+ return $this->concreteProtocol_->writeSetEnd();
+ }
+
+ public function writeBool($bool)
+ {
+ return $this->concreteProtocol_->writeBool($bool);
+ }
+
+ public function writeByte($byte)
+ {
+ return $this->concreteProtocol_->writeByte($byte);
+ }
+
+ public function writeI16($i16)
+ {
+ return $this->concreteProtocol_->writeI16($i16);
+ }
+
+ public function writeI32($i32)
+ {
+ return $this->concreteProtocol_->writeI32($i32);
+ }
+
+ public function writeI64($i64)
+ {
+ return $this->concreteProtocol_->writeI64($i64);
+ }
+
+ public function writeDouble($dub)
+ {
+ return $this->concreteProtocol_->writeDouble($dub);
+ }
+
+ public function writeString($str)
+ {
+ return $this->concreteProtocol_->writeString($str);
+ }
+
+ /**
+ * Reads the message header
+ *
+ * @param string $name Function name
+ * @param int $type message type TMessageType::CALL or TMessageType::REPLY
+ * @param int $seqid The sequence id of this message
+ */
+ public function readMessageBegin(&$name, &$type, &$seqid)
+ {
+ return $this->concreteProtocol_->readMessageBegin($name, $type, $seqid);
+ }
+
+ /**
+ * Read the close of message
+ */
+ public function readMessageEnd()
+ {
+ return $this->concreteProtocol_->readMessageEnd();
+ }
+
+ public function readStructBegin(&$name)
+ {
+ return $this->concreteProtocol_->readStructBegin($name);
+ }
+
+ public function readStructEnd()
+ {
+ return $this->concreteProtocol_->readStructEnd();
+ }
+
+ public function readFieldBegin(&$name, &$fieldType, &$fieldId)
+ {
+ return $this->concreteProtocol_->readFieldBegin($name, $fieldType, $fieldId);
+ }
+
+ public function readFieldEnd()
+ {
+ return $this->concreteProtocol_->readFieldEnd();
+ }
+
+ public function readMapBegin(&$keyType, &$valType, &$size)
+ {
+ $this->concreteProtocol_->readMapBegin($keyType, $valType, $size);
+ }
+
+ public function readMapEnd()
+ {
+ return $this->concreteProtocol_->readMapEnd();
+ }
+
+ public function readListBegin(&$elemType, &$size)
+ {
+ $this->concreteProtocol_->readListBegin($elemType, $size);
+ }
+
+ public function readListEnd()
+ {
+ return $this->concreteProtocol_->readListEnd();
+ }
+
+ public function readSetBegin(&$elemType, &$size)
+ {
+ return $this->concreteProtocol_->readSetBegin($elemType, $size);
+ }
+
+ public function readSetEnd()
+ {
+ return $this->concreteProtocol_->readSetEnd();
+ }
+
+ public function readBool(&$bool)
+ {
+ return $this->concreteProtocol_->readBool($bool);
+ }
+
+ public function readByte(&$byte)
+ {
+ return $this->concreteProtocol_->readByte($byte);
+ }
+
+ public function readI16(&$i16)
+ {
+ return $this->concreteProtocol_->readI16($i16);
+ }
+
+ public function readI32(&$i32)
+ {
+ return $this->concreteProtocol_->readI32($i32);
+ }
+
+ public function readI64(&$i64)
+ {
+ return $this->concreteProtocol_->readI64($i64);
+ }
+
+ public function readDouble(&$dub)
+ {
+ return $this->concreteProtocol_->readDouble($dub);
+ }
+
+ public function readString(&$str)
+ {
+ return $this->concreteProtocol_->readString($str);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Protocol/TSimpleJSONProtocol.php b/vendor/packaged/thrift/src/Protocol/TSimpleJSONProtocol.php
new file mode 100644
index 000000000..1cf1f6407
--- /dev/null
+++ b/vendor/packaged/thrift/src/Protocol/TSimpleJSONProtocol.php
@@ -0,0 +1,374 @@
+<?php
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ */
+
+namespace Thrift\Protocol;
+
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\SimpleJSON\Context;
+use Thrift\Protocol\SimpleJSON\ListContext;
+use Thrift\Protocol\SimpleJSON\StructContext;
+use Thrift\Protocol\SimpleJSON\MapContext;
+use Thrift\Protocol\SimpleJSON\CollectionMapKeyException;
+
+/**
+ * SimpleJSON implementation of thrift protocol, ported from Java.
+ */
+class TSimpleJSONProtocol extends TProtocol
+{
+ const COMMA = ',';
+ const COLON = ':';
+ const LBRACE = '{';
+ const RBRACE = '}';
+ const LBRACKET = '[';
+ const RBRACKET = ']';
+ const QUOTE = '"';
+
+ const NAME_MAP = "map";
+ const NAME_LIST = "lst";
+ const NAME_SET = "set";
+
+ protected $writeContext_ = null;
+ protected $writeContextStack_ = [];
+
+ /**
+ * Push a new write context onto the stack.
+ */
+ protected function pushWriteContext(Context $c)
+ {
+ $this->writeContextStack_[] = $this->writeContext_;
+ $this->writeContext_ = $c;
+ }
+
+ /**
+ * Pop the last write context off the stack
+ */
+ protected function popWriteContext()
+ {
+ $this->writeContext_ = array_pop($this->writeContextStack_);
+ }
+
+ /**
+ * Used to make sure that we are not encountering a map whose keys are containers
+ */
+ protected function assertContextIsNotMapKey($invalidKeyType)
+ {
+ if ($this->writeContext_->isMapKey()) {
+ throw new CollectionMapKeyException(
+ "Cannot serialize a map with keys that are of type " .
+ $invalidKeyType
+ );
+ }
+ }
+
+ private function writeJSONString($b)
+ {
+ $this->writeContext_->write();
+
+ $this->trans_->write(json_encode((string)$b));
+ }
+
+ private function writeJSONInteger($num)
+ {
+ $isMapKey = $this->writeContext_->isMapKey();
+
+ $this->writeContext_->write();
+
+ if ($isMapKey) {
+ $this->trans_->write(self::QUOTE);
+ }
+
+ $this->trans_->write((int)$num);
+
+ if ($isMapKey) {
+ $this->trans_->write(self::QUOTE);
+ }
+ }
+
+ private function writeJSONDouble($num)
+ {
+ $isMapKey = $this->writeContext_->isMapKey();
+
+ $this->writeContext_->write();
+
+ if ($isMapKey) {
+ $this->trans_->write(self::QUOTE);
+ }
+
+ $this->trans_->write(json_encode((float)$num));
+
+ if ($isMapKey) {
+ $this->trans_->write(self::QUOTE);
+ }
+ }
+
+ /**
+ * Constructor
+ */
+ public function __construct($trans)
+ {
+ parent::__construct($trans);
+ $this->writeContext_ = new Context();
+ }
+
+ /**
+ * Writes the message header
+ *
+ * @param string $name Function name
+ * @param int $type message type TMessageType::CALL or TMessageType::REPLY
+ * @param int $seqid The sequence id of this message
+ */
+ public function writeMessageBegin($name, $type, $seqid)
+ {
+ $this->trans_->write(self::LBRACKET);
+ $this->pushWriteContext(new ListContext($this));
+ $this->writeJSONString($name);
+ $this->writeJSONInteger($type);
+ $this->writeJSONInteger($seqid);
+ }
+
+ /**
+ * Close the message
+ */
+ public function writeMessageEnd()
+ {
+ $this->popWriteContext();
+ $this->trans_->write(self::RBRACKET);
+ }
+
+ /**
+ * Writes a struct header.
+ *
+ * @param string $name Struct name
+ */
+ public function writeStructBegin($name)
+ {
+ $this->writeContext_->write();
+ $this->trans_->write(self::LBRACE);
+ $this->pushWriteContext(new StructContext($this));
+ }
+
+ /**
+ * Close a struct.
+ */
+ public function writeStructEnd()
+ {
+ $this->popWriteContext();
+ $this->trans_->write(self::RBRACE);
+ }
+
+ public function writeFieldBegin($fieldName, $fieldType, $fieldId)
+ {
+ $this->writeJSONString($fieldName);
+ }
+
+ public function writeFieldEnd()
+ {
+ }
+
+ public function writeFieldStop()
+ {
+ }
+
+ public function writeMapBegin($keyType, $valType, $size)
+ {
+ $this->assertContextIsNotMapKey(self::NAME_MAP);
+ $this->writeContext_->write();
+ $this->trans_->write(self::LBRACE);
+ $this->pushWriteContext(new MapContext($this));
+ }
+
+ public function writeMapEnd()
+ {
+ $this->popWriteContext();
+ $this->trans_->write(self::RBRACE);
+ }
+
+ public function writeListBegin($elemType, $size)
+ {
+ $this->assertContextIsNotMapKey(self::NAME_LIST);
+ $this->writeContext_->write();
+ $this->trans_->write(self::LBRACKET);
+ $this->pushWriteContext(new ListContext($this));
+ // No metadata!
+ }
+
+ public function writeListEnd()
+ {
+ $this->popWriteContext();
+ $this->trans_->write(self::RBRACKET);
+ }
+
+ public function writeSetBegin($elemType, $size)
+ {
+ $this->assertContextIsNotMapKey(self::NAME_SET);
+ $this->writeContext_->write();
+ $this->trans_->write(self::LBRACKET);
+ $this->pushWriteContext(new ListContext($this));
+ // No metadata!
+ }
+
+ public function writeSetEnd()
+ {
+ $this->popWriteContext();
+ $this->trans_->write(self::RBRACKET);
+ }
+
+ public function writeBool($bool)
+ {
+ $this->writeJSONInteger($bool ? 1 : 0);
+ }
+
+ public function writeByte($byte)
+ {
+ $this->writeJSONInteger($byte);
+ }
+
+ public function writeI16($i16)
+ {
+ $this->writeJSONInteger($i16);
+ }
+
+ public function writeI32($i32)
+ {
+ $this->writeJSONInteger($i32);
+ }
+
+ public function writeI64($i64)
+ {
+ $this->writeJSONInteger($i64);
+ }
+
+ public function writeDouble($dub)
+ {
+ $this->writeJSONDouble($dub);
+ }
+
+ public function writeString($str)
+ {
+ $this->writeJSONString($str);
+ }
+
+ /**
+ * Reading methods.
+ *
+ * simplejson is not meant to be read back into thrift
+ * - see http://wiki.apache.org/thrift/ThriftUsageJava
+ * - use JSON instead
+ */
+
+ public function readMessageBegin(&$name, &$type, &$seqid)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readMessageEnd()
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readStructBegin(&$name)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readStructEnd()
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readFieldBegin(&$name, &$fieldType, &$fieldId)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readFieldEnd()
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readMapBegin(&$keyType, &$valType, &$size)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readMapEnd()
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readListBegin(&$elemType, &$size)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readListEnd()
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readSetBegin(&$elemType, &$size)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readSetEnd()
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readBool(&$bool)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readByte(&$byte)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readI16(&$i16)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readI32(&$i32)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readI64(&$i64)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readDouble(&$dub)
+ {
+ throw new TException("Not implemented");
+ }
+
+ public function readString(&$str)
+ {
+ throw new TException("Not implemented");
+ }
+}
diff --git a/vendor/packaged/thrift/src/Serializer/TBinarySerializer.php b/vendor/packaged/thrift/src/Serializer/TBinarySerializer.php
new file mode 100644
index 000000000..9d2b14730
--- /dev/null
+++ b/vendor/packaged/thrift/src/Serializer/TBinarySerializer.php
@@ -0,0 +1,87 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.protocol
+ * @author: rmarin ([email protected])
+ */
+
+namespace Thrift\Serializer;
+
+use Thrift\Transport\TMemoryBuffer;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Type\TMessageType;
+
+/**
+ * Utility class for serializing and deserializing
+ * a thrift object using TBinaryProtocolAccelerated.
+ */
+class TBinarySerializer
+{
+ // NOTE(rmarin): Because thrift_protocol_write_binary
+ // adds a begin message prefix, you cannot specify
+ // a transport in which to serialize an object. It has to
+ // be a string. Otherwise we will break the compatibility with
+ // normal deserialization.
+ public static function serialize($object)
+ {
+ $transport = new TMemoryBuffer();
+ $protocol = new TBinaryProtocolAccelerated($transport);
+ if (function_exists('thrift_protocol_write_binary')) {
+ thrift_protocol_write_binary(
+ $protocol,
+ $object->getName(),
+ TMessageType::REPLY,
+ $object,
+ 0,
+ $protocol->isStrictWrite()
+ );
+
+ $protocol->readMessageBegin($unused_name, $unused_type, $unused_seqid);
+ } else {
+ $object->write($protocol);
+ }
+ $protocol->getTransport()->flush();
+
+ return $transport->getBuffer();
+ }
+
+ public static function deserialize($string_object, $class_name, $buffer_size = 8192)
+ {
+ $transport = new TMemoryBuffer();
+ $protocol = new TBinaryProtocolAccelerated($transport);
+ if (function_exists('thrift_protocol_read_binary')) {
+ // NOTE (t.heintz) TBinaryProtocolAccelerated internally wraps our TMemoryBuffer in a
+ // TBufferedTransport, so we have to retrieve it again or risk losing data when writing
+ // less than 512 bytes to the transport (see the comment there as well).
+ // @see THRIFT-1579
+ $protocol->writeMessageBegin('', TMessageType::REPLY, 0);
+ $protocolTransport = $protocol->getTransport();
+ $protocolTransport->write($string_object);
+ $protocolTransport->flush();
+
+ return thrift_protocol_read_binary($protocol, $class_name, $protocol->isStrictRead(), $buffer_size);
+ } else {
+ $transport->write($string_object);
+ $object = new $class_name();
+ $object->read($protocol);
+
+ return $object;
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Server/TForkingServer.php b/vendor/packaged/thrift/src/Server/TForkingServer.php
new file mode 100644
index 000000000..0bb6e9192
--- /dev/null
+++ b/vendor/packaged/thrift/src/Server/TForkingServer.php
@@ -0,0 +1,125 @@
+<?php
+
+namespace Thrift\Server;
+
+use Thrift\Transport\TTransport;
+use Thrift\Exception\TException;
+use Thrift\Exception\TTransportException;
+
+/**
+ * A forking implementation of a Thrift server.
+ *
+ * @package thrift.server
+ */
+class TForkingServer extends TServer
+{
+ /**
+ * Flag for the main serving loop
+ *
+ * @var bool
+ */
+ private $stop_ = false;
+
+ /**
+ * List of children.
+ *
+ * @var array
+ */
+ protected $children_ = array();
+
+ /**
+ * Listens for new client using the supplied
+ * transport. We fork when a new connection
+ * arrives.
+ *
+ * @return void
+ */
+ public function serve()
+ {
+ $this->transport_->listen();
+
+ while (!$this->stop_) {
+ try {
+ $transport = $this->transport_->accept();
+
+ if ($transport != null) {
+ $pid = pcntl_fork();
+
+ if ($pid > 0) {
+ $this->handleParent($transport, $pid);
+ } elseif ($pid === 0) {
+ $this->handleChild($transport);
+ } else {
+ throw new TException('Failed to fork');
+ }
+ }
+ } catch (TTransportException $e) {
+ }
+
+ $this->collectChildren();
+ }
+ }
+
+ /**
+ * Code run by the parent
+ *
+ * @param TTransport $transport
+ * @param int $pid
+ * @return void
+ */
+ private function handleParent(TTransport $transport, $pid)
+ {
+ $this->children_[$pid] = $transport;
+ }
+
+ /**
+ * Code run by the child.
+ *
+ * @param TTransport $transport
+ * @return void
+ */
+ private function handleChild(TTransport $transport)
+ {
+ try {
+ $inputTransport = $this->inputTransportFactory_->getTransport($transport);
+ $outputTransport = $this->outputTransportFactory_->getTransport($transport);
+ $inputProtocol = $this->inputProtocolFactory_->getProtocol($inputTransport);
+ $outputProtocol = $this->outputProtocolFactory_->getProtocol($outputTransport);
+ while ($this->processor_->process($inputProtocol, $outputProtocol)) {
+ }
+ @$transport->close();
+ } catch (TTransportException $e) {
+ }
+
+ exit(0);
+ }
+
+ /**
+ * Collects any children we may have
+ *
+ * @return void
+ */
+ private function collectChildren()
+ {
+ foreach ($this->children_ as $pid => $transport) {
+ if (pcntl_waitpid($pid, $status, WNOHANG) > 0) {
+ unset($this->children_[$pid]);
+ if ($transport) {
+ @$transport->close();
+ }
+ }
+ }
+ }
+
+ /**
+ * Stops the server running. Kills the transport
+ * and then stops the main serving loop
+ *
+ * @return void
+ */
+ public function stop()
+ {
+ $this->transport_->close();
+ $this->stop_ = true;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Server/TSSLServerSocket.php b/vendor/packaged/thrift/src/Server/TSSLServerSocket.php
new file mode 100644
index 000000000..ac589b76b
--- /dev/null
+++ b/vendor/packaged/thrift/src/Server/TSSLServerSocket.php
@@ -0,0 +1,97 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+namespace Thrift\Server;
+
+use Thrift\Transport\TSSLSocket;
+
+/**
+ * Socket implementation of a server agent.
+ *
+ * @package thrift.transport
+ */
+class TSSLServerSocket extends TServerSocket
+{
+ /**
+ * Remote port
+ *
+ * @var resource
+ */
+ protected $context_ = null;
+
+ /**
+ * ServerSocket constructor
+ *
+ * @param string $host Host to listen on
+ * @param int $port Port to listen on
+ * @param resource $context Stream context
+ * @return void
+ */
+ public function __construct($host = 'localhost', $port = 9090, $context = null)
+ {
+ $ssl_host = $this->getSSLHost($host);
+ parent::__construct($ssl_host, $port);
+ $this->context_ = $context;
+ }
+
+ public function getSSLHost($host)
+ {
+ $transport_protocol_loc = strpos($host, "://");
+ if ($transport_protocol_loc === false) {
+ $host = 'ssl://' . $host;
+ }
+ return $host;
+ }
+
+ /**
+ * Opens a new socket server handle
+ *
+ * @return void
+ */
+ public function listen()
+ {
+ $this->listener_ = @stream_socket_server(
+ $this->host_ . ':' . $this->port_,
+ $errno,
+ $errstr,
+ STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,
+ $this->context_
+ );
+ }
+
+ /**
+ * Implementation of accept. If not client is accepted in the given time
+ *
+ * @return TSocket
+ */
+ protected function acceptImpl()
+ {
+ $handle = @stream_socket_accept($this->listener_, $this->acceptTimeout_ / 1000.0);
+ if (!$handle) {
+ return null;
+ }
+
+ $socket = new TSSLSocket();
+ $socket->setHandle($handle);
+
+ return $socket;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Server/TServer.php b/vendor/packaged/thrift/src/Server/TServer.php
new file mode 100644
index 000000000..268c37820
--- /dev/null
+++ b/vendor/packaged/thrift/src/Server/TServer.php
@@ -0,0 +1,102 @@
+<?php
+
+namespace Thrift\Server;
+
+use Thrift\Factory\TTransportFactory;
+use Thrift\Factory\TProtocolFactory;
+
+/**
+ * Generic class for a Thrift server.
+ *
+ * @package thrift.server
+ */
+abstract class TServer
+{
+ /**
+ * Processor to handle new clients
+ *
+ * @var TProcessor
+ */
+ protected $processor_;
+
+ /**
+ * Server transport to be used for listening
+ * and accepting new clients
+ *
+ * @var TServerTransport
+ */
+ protected $transport_;
+
+ /**
+ * Input transport factory
+ *
+ * @var TTransportFactory
+ */
+ protected $inputTransportFactory_;
+
+ /**
+ * Output transport factory
+ *
+ * @var TTransportFactory
+ */
+ protected $outputTransportFactory_;
+
+ /**
+ * Input protocol factory
+ *
+ * @var TProtocolFactory
+ */
+ protected $inputProtocolFactory_;
+
+ /**
+ * Output protocol factory
+ *
+ * @var TProtocolFactory
+ */
+ protected $outputProtocolFactory_;
+
+ /**
+ * Sets up all the factories, etc
+ *
+ * @param object $processor
+ * @param TServerTransport $transport
+ * @param TTransportFactory $inputTransportFactory
+ * @param TTransportFactory $outputTransportFactory
+ * @param TProtocolFactory $inputProtocolFactory
+ * @param TProtocolFactory $outputProtocolFactory
+ * @return void
+ */
+ public function __construct(
+ $processor,
+ TServerTransport $transport,
+ TTransportFactory $inputTransportFactory,
+ TTransportFactory $outputTransportFactory,
+ TProtocolFactory $inputProtocolFactory,
+ TProtocolFactory $outputProtocolFactory
+ ) {
+ $this->processor_ = $processor;
+ $this->transport_ = $transport;
+ $this->inputTransportFactory_ = $inputTransportFactory;
+ $this->outputTransportFactory_ = $outputTransportFactory;
+ $this->inputProtocolFactory_ = $inputProtocolFactory;
+ $this->outputProtocolFactory_ = $outputProtocolFactory;
+ }
+
+ /**
+ * Serves the server. This should never return
+ * unless a problem permits it to do so or it
+ * is interrupted intentionally
+ *
+ * @abstract
+ * @return void
+ */
+ abstract public function serve();
+
+ /**
+ * Stops the server serving
+ *
+ * @abstract
+ * @return void
+ */
+ abstract public function stop();
+}
diff --git a/vendor/packaged/thrift/src/Server/TServerSocket.php b/vendor/packaged/thrift/src/Server/TServerSocket.php
new file mode 100644
index 000000000..8f38fb23f
--- /dev/null
+++ b/vendor/packaged/thrift/src/Server/TServerSocket.php
@@ -0,0 +1,124 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Server;
+
+use Thrift\Transport\TSocket;
+
+/**
+ * Socket implementation of a server agent.
+ *
+ * @package thrift.transport
+ */
+class TServerSocket extends TServerTransport
+{
+ /**
+ * Handle for the listener socket
+ *
+ * @var resource
+ */
+ protected $listener_;
+
+ /**
+ * Port for the listener to listen on
+ *
+ * @var int
+ */
+ protected $port_;
+
+ /**
+ * Timeout when listening for a new client
+ *
+ * @var int
+ */
+ protected $acceptTimeout_ = 30000;
+
+ /**
+ * Host to listen on
+ *
+ * @var string
+ */
+ protected $host_;
+
+ /**
+ * ServerSocket constructor
+ *
+ * @param string $host Host to listen on
+ * @param int $port Port to listen on
+ * @return void
+ */
+ public function __construct($host = 'localhost', $port = 9090)
+ {
+ $this->host_ = $host;
+ $this->port_ = $port;
+ }
+
+ /**
+ * Sets the accept timeout
+ *
+ * @param int $acceptTimeout
+ * @return void
+ */
+ public function setAcceptTimeout($acceptTimeout)
+ {
+ $this->acceptTimeout_ = $acceptTimeout;
+ }
+
+ /**
+ * Opens a new socket server handle
+ *
+ * @return void
+ */
+ public function listen()
+ {
+ $this->listener_ = stream_socket_server('tcp://' . $this->host_ . ':' . $this->port_);
+ }
+
+ /**
+ * Closes the socket server handle
+ *
+ * @return void
+ */
+ public function close()
+ {
+ @fclose($this->listener_);
+ $this->listener_ = null;
+ }
+
+ /**
+ * Implementation of accept. If not client is accepted in the given time
+ *
+ * @return TSocket
+ */
+ protected function acceptImpl()
+ {
+ $handle = @stream_socket_accept($this->listener_, $this->acceptTimeout_ / 1000.0);
+ if (!$handle) {
+ return null;
+ }
+
+ $socket = new TSocket();
+ $socket->setHandle($handle);
+
+ return $socket;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Server/TServerTransport.php b/vendor/packaged/thrift/src/Server/TServerTransport.php
new file mode 100644
index 000000000..15a27afa8
--- /dev/null
+++ b/vendor/packaged/thrift/src/Server/TServerTransport.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace Thrift\Server;
+
+use Thrift\Exception\TTransportException;
+
+/**
+ * Generic class for Server agent.
+ *
+ * @package thrift.transport
+ */
+abstract class TServerTransport
+{
+ /**
+ * List for new clients
+ *
+ * @abstract
+ * @return void
+ */
+ abstract public function listen();
+
+ /**
+ * Close the server
+ *
+ * @abstract
+ * @return void
+ */
+ abstract public function close();
+
+ /**
+ * Subclasses should use this to implement
+ * accept.
+ *
+ * @abstract
+ * @return TTransport
+ */
+ abstract protected function acceptImpl();
+
+ /**
+ * Uses the accept implemtation. If null is returned, an
+ * exception is thrown.
+ *
+ * @throws TTransportException
+ * @return TTransport
+ */
+ public function accept()
+ {
+ $transport = $this->acceptImpl();
+
+ if ($transport == null) {
+ throw new TTransportException("accept() may not return NULL");
+ }
+
+ return $transport;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Server/TSimpleServer.php b/vendor/packaged/thrift/src/Server/TSimpleServer.php
new file mode 100644
index 000000000..4c1dda5a5
--- /dev/null
+++ b/vendor/packaged/thrift/src/Server/TSimpleServer.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace Thrift\Server;
+
+use Thrift\Exception\TTransportException;
+
+/**
+ * Simple implemtation of a Thrift server.
+ *
+ * @package thrift.server
+ */
+class TSimpleServer extends TServer
+{
+ /**
+ * Flag for the main serving loop
+ *
+ * @var bool
+ */
+ private $stop_ = false;
+
+ /**
+ * Listens for new client using the supplied
+ * transport. It handles TTransportExceptions
+ * to avoid timeouts etc killing it
+ *
+ * @return void
+ */
+ public function serve()
+ {
+ $this->transport_->listen();
+
+ while (!$this->stop_) {
+ try {
+ $transport = $this->transport_->accept();
+
+ if ($transport != null) {
+ $inputTransport = $this->inputTransportFactory_->getTransport($transport);
+ $outputTransport = $this->outputTransportFactory_->getTransport($transport);
+ $inputProtocol = $this->inputProtocolFactory_->getProtocol($inputTransport);
+ $outputProtocol = $this->outputProtocolFactory_->getProtocol($outputTransport);
+ while ($this->processor_->process($inputProtocol, $outputProtocol)) {
+ }
+ }
+ } catch (TTransportException $e) {
+ }
+ }
+ }
+
+ /**
+ * Stops the server running. Kills the transport
+ * and then stops the main serving loop
+ *
+ * @return void
+ */
+ public function stop()
+ {
+ $this->transport_->close();
+ $this->stop_ = true;
+ }
+}
diff --git a/vendor/packaged/thrift/src/StoredMessageProtocol.php b/vendor/packaged/thrift/src/StoredMessageProtocol.php
new file mode 100644
index 000000000..c4aaaa9ec
--- /dev/null
+++ b/vendor/packaged/thrift/src/StoredMessageProtocol.php
@@ -0,0 +1,53 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.processor
+ */
+
+namespace Thrift;
+
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TProtocolDecorator;
+
+/**
+ * Our goal was to work with any protocol. In order to do that, we needed
+ * to allow them to call readMessageBegin() and get the Message in exactly
+ * the standard format, without the service name prepended to the Message name.
+ */
+class StoredMessageProtocol extends TProtocolDecorator
+{
+ private $fname_;
+ private $mtype_;
+ private $rseqid_;
+
+ public function __construct(TProtocol $protocol, $fname, $mtype, $rseqid)
+ {
+ parent::__construct($protocol);
+ $this->fname_ = $fname;
+ $this->mtype_ = $mtype;
+ $this->rseqid_ = $rseqid;
+ }
+
+ public function readMessageBegin(&$name, &$type, &$seqid)
+ {
+ $name = $this->fname_;
+ $type = $this->mtype_;
+ $seqid = $this->rseqid_;
+ }
+}
diff --git a/vendor/packaged/thrift/src/StringFunc/Core.php b/vendor/packaged/thrift/src/StringFunc/Core.php
new file mode 100644
index 000000000..39a75b3a2
--- /dev/null
+++ b/vendor/packaged/thrift/src/StringFunc/Core.php
@@ -0,0 +1,40 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+namespace Thrift\StringFunc;
+
+class Core implements TStringFunc
+{
+ public function substr($str, $start, $length = null)
+ {
+ // specifying a null $length would return an empty string
+ if ($length === null) {
+ return substr($str, $start);
+ }
+
+ return substr($str, $start, $length);
+ }
+
+ public function strlen($str)
+ {
+ return strlen($str);
+ }
+}
diff --git a/vendor/packaged/thrift/src/StringFunc/Mbstring.php b/vendor/packaged/thrift/src/StringFunc/Mbstring.php
new file mode 100644
index 000000000..968ff18f1
--- /dev/null
+++ b/vendor/packaged/thrift/src/StringFunc/Mbstring.php
@@ -0,0 +1,46 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+namespace Thrift\StringFunc;
+
+class Mbstring implements TStringFunc
+{
+ public function substr($str, $start, $length = null)
+ {
+ /**
+ * We need to set the charset parameter, which is the second
+ * optional parameter and the first optional parameter can't
+ * be null or false as a "magic" value because that would
+ * cause an empty string to be returned, so we need to
+ * actually calculate the proper length value.
+ */
+ if ($length === null) {
+ $length = $this->strlen($str) - $start;
+ }
+
+ return mb_substr($str, $start, $length, '8bit');
+ }
+
+ public function strlen($str)
+ {
+ return mb_strlen($str, '8bit');
+ }
+}
diff --git a/vendor/packaged/thrift/src/StringFunc/TStringFunc.php b/vendor/packaged/thrift/src/StringFunc/TStringFunc.php
new file mode 100644
index 000000000..dea497f2e
--- /dev/null
+++ b/vendor/packaged/thrift/src/StringFunc/TStringFunc.php
@@ -0,0 +1,28 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+namespace Thrift\StringFunc;
+
+interface TStringFunc
+{
+ public function substr($str, $start, $length = null);
+ public function strlen($str);
+}
diff --git a/vendor/packaged/thrift/src/TMultiplexedProcessor.php b/vendor/packaged/thrift/src/TMultiplexedProcessor.php
new file mode 100644
index 000000000..a64a9687c
--- /dev/null
+++ b/vendor/packaged/thrift/src/TMultiplexedProcessor.php
@@ -0,0 +1,118 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.processor
+ */
+
+namespace Thrift;
+
+use Thrift\Exception\TException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TMultiplexedProtocol;
+use Thrift\Type\TMessageType;
+
+/**
+ * <code>TMultiplexedProcessor</code> is a Processor allowing
+ * a single <code>TServer</code> to provide multiple services.
+ *
+ * <p>To do so, you instantiate the processor and then register additional
+ * processors with it, as shown in the following example:</p>
+ *
+ * <blockquote><code>
+ * $processor = new TMultiplexedProcessor();
+ *
+ * processor->registerProcessor(
+ * "Calculator",
+ * new \tutorial\CalculatorProcessor(new CalculatorHandler()));
+ *
+ * processor->registerProcessor(
+ * "WeatherReport",
+ * new \tutorial\WeatherReportProcessor(new WeatherReportHandler()));
+ *
+ * $processor->process($protocol, $protocol);
+ * </code></blockquote>
+ */
+
+class TMultiplexedProcessor
+{
+ private $serviceProcessorMap_;
+
+ /**
+ * 'Register' a service with this <code>TMultiplexedProcessor</code>. This
+ * allows us to broker requests to individual services by using the service
+ * name to select them at request time.
+ *
+ * @param serviceName Name of a service, has to be identical to the name
+ * declared in the Thrift IDL, e.g. "WeatherReport".
+ * @param processor Implementation of a service, usually referred to
+ * as "handlers", e.g. WeatherReportHandler implementing WeatherReport.Iface.
+ */
+ public function registerProcessor($serviceName, $processor)
+ {
+ $this->serviceProcessorMap_[$serviceName] = $processor;
+ }
+
+ /**
+ * This implementation of <code>process</code> performs the following steps:
+ *
+ * <ol>
+ * <li>Read the beginning of the message.</li>
+ * <li>Extract the service name from the message.</li>
+ * <li>Using the service name to locate the appropriate processor.</li>
+ * <li>Dispatch to the processor, with a decorated instance of TProtocol
+ * that allows readMessageBegin() to return the original Message.</li>
+ * </ol>
+ *
+ * @throws TException If the message type is not CALL or ONEWAY, if
+ * the service name was not found in the message, or if the service
+ * name was not found in the service map.
+ */
+ public function process(TProtocol $input, TProtocol $output)
+ {
+ /*
+ Use the actual underlying protocol (e.g. TBinaryProtocol) to read the
+ message header. This pulls the message "off the wire", which we'll
+ deal with at the end of this method.
+ */
+ $input->readMessageBegin($fname, $mtype, $rseqid);
+
+ if ($mtype !== TMessageType::CALL && $mtype != TMessageType::ONEWAY) {
+ throw new TException("This should not have happened!?");
+ }
+
+ // Extract the service name and the new Message name.
+ if (strpos($fname, TMultiplexedProtocol::SEPARATOR) === false) {
+ throw new TException("Service name not found in message name: {$fname}. Did you " .
+ "forget to use a TMultiplexProtocol in your client?");
+ }
+ list($serviceName, $messageName) = explode(':', $fname, 2);
+ if (!array_key_exists($serviceName, $this->serviceProcessorMap_)) {
+ throw new TException("Service name not found: {$serviceName}. Did you forget " .
+ "to call registerProcessor()?");
+ }
+
+ // Dispatch processing to the stored processor
+ $processor = $this->serviceProcessorMap_[$serviceName];
+
+ return $processor->process(
+ new StoredMessageProtocol($input, $messageName, $mtype, $rseqid),
+ $output
+ );
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TBufferedTransport.php b/vendor/packaged/thrift/src/Transport/TBufferedTransport.php
new file mode 100644
index 000000000..253c5acfb
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TBufferedTransport.php
@@ -0,0 +1,206 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TTransportException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * Buffered transport. Stores data to an internal buffer that it doesn't
+ * actually write out until flush is called. For reading, we do a greedy
+ * read and then serve data out of the internal buffer.
+ *
+ * @package thrift.transport
+ */
+class TBufferedTransport extends TTransport
+{
+ /**
+ * The underlying transport
+ *
+ * @var TTransport
+ */
+ protected $transport_;
+
+ /**
+ * The receive buffer size
+ *
+ * @var int
+ */
+ protected $rBufSize_ = 512;
+
+ /**
+ * The write buffer size
+ *
+ * @var int
+ */
+ protected $wBufSize_ = 512;
+
+ /**
+ * The write buffer.
+ *
+ * @var string
+ */
+ protected $wBuf_ = '';
+
+ /**
+ * The read buffer.
+ *
+ * @var string
+ */
+ protected $rBuf_ = '';
+
+ /**
+ * Constructor. Creates a buffered transport around an underlying transport
+ */
+ public function __construct($transport, $rBufSize = 512, $wBufSize = 512)
+ {
+ $this->transport_ = $transport;
+ $this->rBufSize_ = $rBufSize;
+ $this->wBufSize_ = $wBufSize;
+ }
+
+ public function isOpen()
+ {
+ return $this->transport_->isOpen();
+ }
+
+ /**
+ * @inheritdoc
+ *
+ * @throws TTransportException
+ */
+ public function open()
+ {
+ $this->transport_->open();
+ }
+
+ public function close()
+ {
+ $this->transport_->close();
+ }
+
+ public function putBack($data)
+ {
+ if (TStringFuncFactory::create()->strlen($this->rBuf_) === 0) {
+ $this->rBuf_ = $data;
+ } else {
+ $this->rBuf_ = ($data . $this->rBuf_);
+ }
+ }
+
+ /**
+ * The reason that we customize readAll here is that the majority of PHP
+ * streams are already internally buffered by PHP. The socket stream, for
+ * example, buffers internally and blocks if you call read with $len greater
+ * than the amount of data available, unlike recv() in C.
+ *
+ * Therefore, use the readAll method of the wrapped transport inside
+ * the buffered readAll.
+ *
+ * @throws TTransportException
+ */
+ public function readAll($len)
+ {
+ $have = TStringFuncFactory::create()->strlen($this->rBuf_);
+ if ($have == 0) {
+ $data = $this->transport_->readAll($len);
+ } elseif ($have < $len) {
+ $data = $this->rBuf_;
+ $this->rBuf_ = '';
+ $data .= $this->transport_->readAll($len - $have);
+ } elseif ($have == $len) {
+ $data = $this->rBuf_;
+ $this->rBuf_ = '';
+ } elseif ($have > $len) {
+ $data = TStringFuncFactory::create()->substr($this->rBuf_, 0, $len);
+ $this->rBuf_ = TStringFuncFactory::create()->substr($this->rBuf_, $len);
+ }
+
+ return $data;
+ }
+
+ /**
+ * @inheritdoc
+ *
+ * @param int $len
+ * @return string
+ * @throws TTransportException
+ */
+ public function read($len)
+ {
+ if (TStringFuncFactory::create()->strlen($this->rBuf_) === 0) {
+ $this->rBuf_ = $this->transport_->read($this->rBufSize_);
+ }
+
+ if (TStringFuncFactory::create()->strlen($this->rBuf_) <= $len) {
+ $ret = $this->rBuf_;
+ $this->rBuf_ = '';
+
+ return $ret;
+ }
+
+ $ret = TStringFuncFactory::create()->substr($this->rBuf_, 0, $len);
+ $this->rBuf_ = TStringFuncFactory::create()->substr($this->rBuf_, $len);
+
+ return $ret;
+ }
+
+ /**
+ * @inheritdoc
+ *
+ * @param string $buf
+ * @throws TTransportException
+ */
+ public function write($buf)
+ {
+ $this->wBuf_ .= $buf;
+ if (TStringFuncFactory::create()->strlen($this->wBuf_) >= $this->wBufSize_) {
+ $out = $this->wBuf_;
+
+ // Note that we clear the internal wBuf_ prior to the underlying write
+ // to ensure we're in a sane state (i.e. internal buffer cleaned)
+ // if the underlying write throws up an exception
+ $this->wBuf_ = '';
+ $this->transport_->write($out);
+ }
+ }
+
+ /**
+ * @inheritdoc
+ *
+ * @throws TTransportException
+ */
+ public function flush()
+ {
+ if (TStringFuncFactory::create()->strlen($this->wBuf_) > 0) {
+ $out = $this->wBuf_;
+
+ // Note that we clear the internal wBuf_ prior to the underlying write
+ // to ensure we're in a sane state (i.e. internal buffer cleaned)
+ // if the underlying write throws up an exception
+ $this->wBuf_ = '';
+ $this->transport_->write($out);
+ }
+ $this->transport_->flush();
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TCurlClient.php b/vendor/packaged/thrift/src/Transport/TCurlClient.php
new file mode 100644
index 000000000..f781da969
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TCurlClient.php
@@ -0,0 +1,281 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TTransportException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * HTTP client for Thrift
+ *
+ * @package thrift.transport
+ */
+class TCurlClient extends TTransport
+{
+ private static $curlHandle;
+
+ /**
+ * The host to connect to
+ *
+ * @var string
+ */
+ protected $host_;
+
+ /**
+ * The port to connect on
+ *
+ * @var int
+ */
+ protected $port_;
+
+ /**
+ * The URI to request
+ *
+ * @var string
+ */
+ protected $uri_;
+
+ /**
+ * The scheme to use for the request, i.e. http, https
+ *
+ * @var string
+ */
+ protected $scheme_;
+
+ /**
+ * Buffer for the HTTP request data
+ *
+ * @var string
+ */
+ protected $request_;
+
+ /**
+ * Buffer for the HTTP response data.
+ *
+ * @var binary string
+ */
+ protected $response_;
+
+ /**
+ * Read timeout
+ *
+ * @var float
+ */
+ protected $timeout_;
+
+ /**
+ * http headers
+ *
+ * @var array
+ */
+ protected $headers_;
+
+ /**
+ * Make a new HTTP client.
+ *
+ * @param string $host
+ * @param int $port
+ * @param string $uri
+ */
+ public function __construct($host, $port = 80, $uri = '', $scheme = 'http')
+ {
+ if ((TStringFuncFactory::create()->strlen($uri) > 0) && ($uri[0] != '/')) {
+ $uri = '/' . $uri;
+ }
+ $this->scheme_ = $scheme;
+ $this->host_ = $host;
+ $this->port_ = $port;
+ $this->uri_ = $uri;
+ $this->request_ = '';
+ $this->response_ = null;
+ $this->timeout_ = null;
+ $this->headers_ = array();
+ }
+
+ /**
+ * Set read timeout
+ *
+ * @param float $timeout
+ */
+ public function setTimeoutSecs($timeout)
+ {
+ $this->timeout_ = $timeout;
+ }
+
+ /**
+ * Whether this transport is open.
+ *
+ * @return boolean true if open
+ */
+ public function isOpen()
+ {
+ return true;
+ }
+
+ /**
+ * Open the transport for reading/writing
+ *
+ * @throws TTransportException if cannot open
+ */
+ public function open()
+ {
+ }
+
+ /**
+ * Close the transport.
+ */
+ public function close()
+ {
+ $this->request_ = '';
+ $this->response_ = null;
+ }
+
+ /**
+ * Read some data into the array.
+ *
+ * @param int $len How much to read
+ * @return string The data that has been read
+ * @throws TTransportException if cannot read any more data
+ */
+ public function read($len)
+ {
+ if ($len >= strlen($this->response_)) {
+ return $this->response_;
+ } else {
+ $ret = substr($this->response_, 0, $len);
+ $this->response_ = substr($this->response_, $len);
+
+ return $ret;
+ }
+ }
+
+ /**
+ * Guarantees that the full amount of data is read. Since TCurlClient gets entire payload at
+ * once, parent readAll cannot be used.
+ *
+ * @return string The data, of exact length
+ * @throws TTransportException if cannot read data
+ */
+ public function readAll($len)
+ {
+ $data = $this->read($len);
+
+ if (TStringFuncFactory::create()->strlen($data) !== $len) {
+ throw new TTransportException('TCurlClient could not read '.$len.' bytes');
+ }
+
+ return $data;
+ }
+
+ /**
+ * Writes some data into the pending buffer
+ *
+ * @param string $buf The data to write
+ * @throws TTransportException if writing fails
+ */
+ public function write($buf)
+ {
+ $this->request_ .= $buf;
+ }
+
+ /**
+ * Opens and sends the actual request over the HTTP connection
+ *
+ * @throws TTransportException if a writing error occurs
+ */
+ public function flush()
+ {
+ if (!self::$curlHandle) {
+ register_shutdown_function(array('Thrift\\Transport\\TCurlClient', 'closeCurlHandle'));
+ self::$curlHandle = curl_init();
+ curl_setopt(self::$curlHandle, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt(self::$curlHandle, CURLOPT_BINARYTRANSFER, true);
+ curl_setopt(self::$curlHandle, CURLOPT_USERAGENT, 'PHP/TCurlClient');
+ curl_setopt(self::$curlHandle, CURLOPT_CUSTOMREQUEST, 'POST');
+ curl_setopt(self::$curlHandle, CURLOPT_FOLLOWLOCATION, true);
+ curl_setopt(self::$curlHandle, CURLOPT_MAXREDIRS, 1);
+ }
+ // God, PHP really has some esoteric ways of doing simple things.
+ $host = $this->host_ . ($this->port_ != 80 ? ':' . $this->port_ : '');
+ $fullUrl = $this->scheme_ . "://" . $host . $this->uri_;
+
+ $headers = array();
+ $defaultHeaders = array('Accept' => 'application/x-thrift',
+ 'Content-Type' => 'application/x-thrift',
+ 'Content-Length' => TStringFuncFactory::create()->strlen($this->request_));
+ foreach (array_merge($defaultHeaders, $this->headers_) as $key => $value) {
+ $headers[] = "$key: $value";
+ }
+
+ curl_setopt(self::$curlHandle, CURLOPT_HTTPHEADER, $headers);
+
+ if ($this->timeout_ > 0) {
+ if ($this->timeout_ < 1.0) {
+ // Timestamps smaller than 1 second are ignored when CURLOPT_TIMEOUT is used
+ curl_setopt(self::$curlHandle, CURLOPT_TIMEOUT_MS, 1000 * $this->timeout_);
+ } else {
+ curl_setopt(self::$curlHandle, CURLOPT_TIMEOUT, $this->timeout_);
+ }
+ }
+ curl_setopt(self::$curlHandle, CURLOPT_POSTFIELDS, $this->request_);
+ $this->request_ = '';
+
+ curl_setopt(self::$curlHandle, CURLOPT_URL, $fullUrl);
+ $this->response_ = curl_exec(self::$curlHandle);
+ $responseError = curl_error(self::$curlHandle);
+
+ $code = curl_getinfo(self::$curlHandle, CURLINFO_HTTP_CODE);
+
+ // Handle non 200 status code / connect failure
+ if ($this->response_ === false || $code !== 200) {
+ curl_close(self::$curlHandle);
+ self::$curlHandle = null;
+ $this->response_ = null;
+ $error = 'TCurlClient: Could not connect to ' . $fullUrl;
+ if ($responseError) {
+ $error .= ', ' . $responseError;
+ }
+ if ($code) {
+ $error .= ', HTTP status code: ' . $code;
+ }
+ throw new TTransportException($error, TTransportException::UNKNOWN);
+ }
+ }
+
+ public static function closeCurlHandle()
+ {
+ try {
+ if (self::$curlHandle) {
+ curl_close(self::$curlHandle);
+ self::$curlHandle = null;
+ }
+ } catch (\Exception $x) {
+ error_log('There was an error closing the curl handle: ' . $x->getMessage());
+ }
+ }
+
+ public function addHeaders($headers)
+ {
+ $this->headers_ = array_merge($this->headers_, $headers);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TFramedTransport.php b/vendor/packaged/thrift/src/Transport/TFramedTransport.php
new file mode 100644
index 000000000..39d186987
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TFramedTransport.php
@@ -0,0 +1,192 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * Framed transport. Writes and reads data in chunks that are stamped with
+ * their length.
+ *
+ * @package thrift.transport
+ */
+class TFramedTransport extends TTransport
+{
+ /**
+ * Underlying transport object.
+ *
+ * @var TTransport
+ */
+ private $transport_;
+
+ /**
+ * Buffer for read data.
+ *
+ * @var string
+ */
+ private $rBuf_;
+
+ /**
+ * Buffer for queued output data
+ *
+ * @var string
+ */
+ private $wBuf_;
+
+ /**
+ * Whether to frame reads
+ *
+ * @var bool
+ */
+ private $read_;
+
+ /**
+ * Whether to frame writes
+ *
+ * @var bool
+ */
+ private $write_;
+
+ /**
+ * Constructor.
+ *
+ * @param TTransport $transport Underlying transport
+ */
+ public function __construct($transport = null, $read = true, $write = true)
+ {
+ $this->transport_ = $transport;
+ $this->read_ = $read;
+ $this->write_ = $write;
+ }
+
+ public function isOpen()
+ {
+ return $this->transport_->isOpen();
+ }
+
+ public function open()
+ {
+ $this->transport_->open();
+ }
+
+ public function close()
+ {
+ $this->transport_->close();
+ }
+
+ /**
+ * Reads from the buffer. When more data is required reads another entire
+ * chunk and serves future reads out of that.
+ *
+ * @param int $len How much data
+ */
+ public function read($len)
+ {
+ if (!$this->read_) {
+ return $this->transport_->read($len);
+ }
+
+ if (TStringFuncFactory::create()->strlen($this->rBuf_) === 0) {
+ $this->readFrame();
+ }
+
+ // Just return full buff
+ if ($len >= TStringFuncFactory::create()->strlen($this->rBuf_)) {
+ $out = $this->rBuf_;
+ $this->rBuf_ = null;
+
+ return $out;
+ }
+
+ // Return TStringFuncFactory::create()->substr
+ $out = TStringFuncFactory::create()->substr($this->rBuf_, 0, $len);
+ $this->rBuf_ = TStringFuncFactory::create()->substr($this->rBuf_, $len);
+
+ return $out;
+ }
+
+ /**
+ * Put previously read data back into the buffer
+ *
+ * @param string $data data to return
+ */
+ public function putBack($data)
+ {
+ if (TStringFuncFactory::create()->strlen($this->rBuf_) === 0) {
+ $this->rBuf_ = $data;
+ } else {
+ $this->rBuf_ = ($data . $this->rBuf_);
+ }
+ }
+
+ /**
+ * Reads a chunk of data into the internal read buffer.
+ */
+ private function readFrame()
+ {
+ $buf = $this->transport_->readAll(4);
+ $val = unpack('N', $buf);
+ $sz = $val[1];
+
+ $this->rBuf_ = $this->transport_->readAll($sz);
+ }
+
+ /**
+ * Writes some data to the pending output buffer.
+ *
+ * @param string $buf The data
+ * @param int $len Limit of bytes to write
+ */
+ public function write($buf, $len = null)
+ {
+ if (!$this->write_) {
+ return $this->transport_->write($buf, $len);
+ }
+
+ if ($len !== null && $len < TStringFuncFactory::create()->strlen($buf)) {
+ $buf = TStringFuncFactory::create()->substr($buf, 0, $len);
+ }
+ $this->wBuf_ .= $buf;
+ }
+
+ /**
+ * Writes the output buffer to the stream in the format of a 4-byte length
+ * followed by the actual data.
+ */
+ public function flush()
+ {
+ if (!$this->write_ || TStringFuncFactory::create()->strlen($this->wBuf_) == 0) {
+ return $this->transport_->flush();
+ }
+
+ $out = pack('N', TStringFuncFactory::create()->strlen($this->wBuf_));
+ $out .= $this->wBuf_;
+
+ // Note that we clear the internal wBuf_ prior to the underlying write
+ // to ensure we're in a sane state (i.e. internal buffer cleaned)
+ // if the underlying write throws up an exception
+ $this->wBuf_ = '';
+ $this->transport_->write($out);
+ $this->transport_->flush();
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/THttpClient.php b/vendor/packaged/thrift/src/Transport/THttpClient.php
new file mode 100644
index 000000000..4d6be32fe
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/THttpClient.php
@@ -0,0 +1,258 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TTransportException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * HTTP client for Thrift
+ *
+ * @package thrift.transport
+ */
+class THttpClient extends TTransport
+{
+ /**
+ * The host to connect to
+ *
+ * @var string
+ */
+ protected $host_;
+
+ /**
+ * The port to connect on
+ *
+ * @var int
+ */
+ protected $port_;
+
+ /**
+ * The URI to request
+ *
+ * @var string
+ */
+ protected $uri_;
+
+ /**
+ * The scheme to use for the request, i.e. http, https
+ *
+ * @var string
+ */
+ protected $scheme_;
+
+ /**
+ * Buffer for the HTTP request data
+ *
+ * @var string
+ */
+ protected $buf_;
+
+ /**
+ * Input socket stream.
+ *
+ * @var resource
+ */
+ protected $handle_;
+
+ /**
+ * Read timeout
+ *
+ * @var float
+ */
+ protected $timeout_;
+
+ /**
+ * http headers
+ *
+ * @var array
+ */
+ protected $headers_;
+
+ /**
+ * Context additional options
+ *
+ * @var array
+ */
+ protected $context_;
+
+ /**
+ * Make a new HTTP client.
+ *
+ * @param string $host
+ * @param int $port
+ * @param string $uri
+ * @param string $scheme
+ * @param array $context
+ */
+ public function __construct($host, $port = 80, $uri = '', $scheme = 'http', array $context = array())
+ {
+ if ((TStringFuncFactory::create()->strlen($uri) > 0) && ($uri[0] != '/')) {
+ $uri = '/' . $uri;
+ }
+ $this->scheme_ = $scheme;
+ $this->host_ = $host;
+ $this->port_ = $port;
+ $this->uri_ = $uri;
+ $this->buf_ = '';
+ $this->handle_ = null;
+ $this->timeout_ = null;
+ $this->headers_ = array();
+ $this->context_ = $context;
+ }
+
+ /**
+ * Set read timeout
+ *
+ * @param float $timeout
+ */
+ public function setTimeoutSecs($timeout)
+ {
+ $this->timeout_ = $timeout;
+ }
+
+ /**
+ * Whether this transport is open.
+ *
+ * @return boolean true if open
+ */
+ public function isOpen()
+ {
+ return true;
+ }
+
+ /**
+ * Open the transport for reading/writing
+ *
+ * @throws TTransportException if cannot open
+ */
+ public function open()
+ {
+ }
+
+ /**
+ * Close the transport.
+ */
+ public function close()
+ {
+ if ($this->handle_) {
+ @fclose($this->handle_);
+ $this->handle_ = null;
+ }
+ }
+
+ /**
+ * Read some data into the array.
+ *
+ * @param int $len How much to read
+ * @return string The data that has been read
+ * @throws TTransportException if cannot read any more data
+ */
+ public function read($len)
+ {
+ $data = @fread($this->handle_, $len);
+ if ($data === false || $data === '') {
+ $md = stream_get_meta_data($this->handle_);
+ if ($md['timed_out']) {
+ throw new TTransportException(
+ 'THttpClient: timed out reading ' . $len . ' bytes from ' .
+ $this->host_ . ':' . $this->port_ . $this->uri_,
+ TTransportException::TIMED_OUT
+ );
+ } else {
+ throw new TTransportException(
+ 'THttpClient: Could not read ' . $len . ' bytes from ' .
+ $this->host_ . ':' . $this->port_ . $this->uri_,
+ TTransportException::UNKNOWN
+ );
+ }
+ }
+
+ return $data;
+ }
+
+ /**
+ * Writes some data into the pending buffer
+ *
+ * @param string $buf The data to write
+ * @throws TTransportException if writing fails
+ */
+ public function write($buf)
+ {
+ $this->buf_ .= $buf;
+ }
+
+ /**
+ * Opens and sends the actual request over the HTTP connection
+ *
+ * @throws TTransportException if a writing error occurs
+ */
+ public function flush()
+ {
+ // God, PHP really has some esoteric ways of doing simple things.
+ $host = $this->host_ . ($this->port_ != 80 ? ':' . $this->port_ : '');
+
+ $headers = array();
+ $defaultHeaders = array('Host' => $host,
+ 'Accept' => 'application/x-thrift',
+ 'User-Agent' => 'PHP/THttpClient',
+ 'Content-Type' => 'application/x-thrift',
+ 'Content-Length' => TStringFuncFactory::create()->strlen($this->buf_));
+ foreach (array_merge($defaultHeaders, $this->headers_) as $key => $value) {
+ $headers[] = "$key: $value";
+ }
+
+ $options = $this->context_;
+
+ $baseHttpOptions = isset($options["http"]) ? $options["http"] : array();
+
+ $httpOptions = $baseHttpOptions + array('method' => 'POST',
+ 'header' => implode("\r\n", $headers),
+ 'max_redirects' => 1,
+ 'content' => $this->buf_);
+ if ($this->timeout_ > 0) {
+ $httpOptions['timeout'] = $this->timeout_;
+ }
+ $this->buf_ = '';
+
+ $options["http"] = $httpOptions;
+ $contextid = stream_context_create($options);
+ $this->handle_ = @fopen(
+ $this->scheme_ . '://' . $host . $this->uri_,
+ 'r',
+ false,
+ $contextid
+ );
+
+ // Connect failed?
+ if ($this->handle_ === false) {
+ $this->handle_ = null;
+ $error = 'THttpClient: Could not connect to ' . $host . $this->uri_;
+ throw new TTransportException($error, TTransportException::NOT_OPEN);
+ }
+ }
+
+ public function addHeaders($headers)
+ {
+ $this->headers_ = array_merge($this->headers_, $headers);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TMemoryBuffer.php b/vendor/packaged/thrift/src/Transport/TMemoryBuffer.php
new file mode 100644
index 000000000..fee03a2a4
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TMemoryBuffer.php
@@ -0,0 +1,106 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TTransportException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * A memory buffer is a tranpsort that simply reads from and writes to an
+ * in-memory string buffer. Anytime you call write on it, the data is simply
+ * placed into a buffer, and anytime you call read, data is read from that
+ * buffer.
+ *
+ * @package thrift.transport
+ */
+class TMemoryBuffer extends TTransport
+{
+ /**
+ * Constructor. Optionally pass an initial value
+ * for the buffer.
+ */
+ public function __construct($buf = '')
+ {
+ $this->buf_ = $buf;
+ }
+
+ protected $buf_ = '';
+
+ public function isOpen()
+ {
+ return true;
+ }
+
+ public function open()
+ {
+ }
+
+ public function close()
+ {
+ }
+
+ public function write($buf)
+ {
+ $this->buf_ .= $buf;
+ }
+
+ public function read($len)
+ {
+ $bufLength = TStringFuncFactory::create()->strlen($this->buf_);
+
+ if ($bufLength === 0) {
+ throw new TTransportException(
+ 'TMemoryBuffer: Could not read ' .
+ $len . ' bytes from buffer.',
+ TTransportException::UNKNOWN
+ );
+ }
+
+ if ($bufLength <= $len) {
+ $ret = $this->buf_;
+ $this->buf_ = '';
+
+ return $ret;
+ }
+
+ $ret = TStringFuncFactory::create()->substr($this->buf_, 0, $len);
+ $this->buf_ = TStringFuncFactory::create()->substr($this->buf_, $len);
+
+ return $ret;
+ }
+
+ public function getBuffer()
+ {
+ return $this->buf_;
+ }
+
+ public function available()
+ {
+ return TStringFuncFactory::create()->strlen($this->buf_);
+ }
+
+ public function putBack($data)
+ {
+ $this->buf_ = $data . $this->buf_;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TNullTransport.php b/vendor/packaged/thrift/src/Transport/TNullTransport.php
new file mode 100644
index 000000000..7e086b67c
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TNullTransport.php
@@ -0,0 +1,56 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TTransportException;
+
+/**
+ * Transport that only accepts writes and ignores them.
+ * This is useful for measuring the serialized size of structures.
+ *
+ * @package thrift.transport
+ */
+class TNullTransport extends TTransport
+{
+ public function isOpen()
+ {
+ return true;
+ }
+
+ public function open()
+ {
+ }
+
+ public function close()
+ {
+ }
+
+ public function read($len)
+ {
+ throw new TTransportException("Can't read from TNullTransport.");
+ }
+
+ public function write($buf)
+ {
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TPhpStream.php b/vendor/packaged/thrift/src/Transport/TPhpStream.php
new file mode 100644
index 000000000..42823ff33
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TPhpStream.php
@@ -0,0 +1,124 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * Php stream transport. Reads to and writes from the php standard streams
+ * php://input and php://output
+ *
+ * @package thrift.transport
+ */
+class TPhpStream extends TTransport
+{
+ const MODE_R = 1;
+ const MODE_W = 2;
+
+ private $inStream_ = null;
+
+ private $outStream_ = null;
+
+ private $read_ = false;
+
+ private $write_ = false;
+
+ public function __construct($mode)
+ {
+ $this->read_ = $mode & self::MODE_R;
+ $this->write_ = $mode & self::MODE_W;
+ }
+
+ public function open()
+ {
+ if ($this->read_) {
+ $this->inStream_ = @fopen(self::inStreamName(), 'r');
+ if (!is_resource($this->inStream_)) {
+ throw new TException('TPhpStream: Could not open php://input');
+ }
+ }
+ if ($this->write_) {
+ $this->outStream_ = @fopen('php://output', 'w');
+ if (!is_resource($this->outStream_)) {
+ throw new TException('TPhpStream: Could not open php://output');
+ }
+ }
+ }
+
+ public function close()
+ {
+ if ($this->read_) {
+ @fclose($this->inStream_);
+ $this->inStream_ = null;
+ }
+ if ($this->write_) {
+ @fclose($this->outStream_);
+ $this->outStream_ = null;
+ }
+ }
+
+ public function isOpen()
+ {
+ return
+ (!$this->read_ || is_resource($this->inStream_)) &&
+ (!$this->write_ || is_resource($this->outStream_));
+ }
+
+ public function read($len)
+ {
+ $data = @fread($this->inStream_, $len);
+ if ($data === false || $data === '') {
+ throw new TException('TPhpStream: Could not read ' . $len . ' bytes');
+ }
+
+ return $data;
+ }
+
+ public function write($buf)
+ {
+ while (TStringFuncFactory::create()->strlen($buf) > 0) {
+ $got = @fwrite($this->outStream_, $buf);
+ if ($got === 0 || $got === false) {
+ throw new TException(
+ 'TPhpStream: Could not write ' . TStringFuncFactory::create()->strlen($buf) . ' bytes'
+ );
+ }
+ $buf = TStringFuncFactory::create()->substr($buf, $got);
+ }
+ }
+
+ public function flush()
+ {
+ @fflush($this->outStream_);
+ }
+
+ private static function inStreamName()
+ {
+ if (php_sapi_name() == 'cli') {
+ return 'php://stdin';
+ }
+
+ return 'php://input';
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TSSLSocket.php b/vendor/packaged/thrift/src/Transport/TSSLSocket.php
new file mode 100644
index 000000000..b4a0adb54
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TSSLSocket.php
@@ -0,0 +1,117 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TException;
+use Thrift\Exception\TTransportException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * Sockets implementation of the TTransport interface.
+ *
+ * @package thrift.transport
+ */
+class TSSLSocket extends TSocket
+{
+ /**
+ * Remote port
+ *
+ * @var resource
+ */
+ protected $context_ = null;
+
+ /**
+ * Socket constructor
+ *
+ * @param string $host Remote hostname
+ * @param int $port Remote port
+ * @param resource $context Stream context
+ * @param bool $persist Whether to use a persistent socket
+ * @param string $debugHandler Function to call for error logging
+ */
+ public function __construct(
+ $host = 'localhost',
+ $port = 9090,
+ $context = null,
+ $debugHandler = null
+ ) {
+ $this->host_ = $this->getSSLHost($host);
+ $this->port_ = $port;
+ $this->context_ = $context;
+ $this->debugHandler_ = $debugHandler ? $debugHandler : 'error_log';
+ }
+
+ /**
+ * Creates a host name with SSL transport protocol
+ * if no transport protocol already specified in
+ * the host name.
+ *
+ * @param string $host Host to listen on
+ * @return string $host Host name with transport protocol
+ */
+ private function getSSLHost($host)
+ {
+ $transport_protocol_loc = strpos($host, "://");
+ if ($transport_protocol_loc === false) {
+ $host = 'ssl://' . $host;
+ }
+ return $host;
+ }
+
+ /**
+ * Connects the socket.
+ */
+ public function open()
+ {
+ if ($this->isOpen()) {
+ throw new TTransportException('Socket already connected', TTransportException::ALREADY_OPEN);
+ }
+
+ if (empty($this->host_)) {
+ throw new TTransportException('Cannot open null host', TTransportException::NOT_OPEN);
+ }
+
+ if ($this->port_ <= 0) {
+ throw new TTransportException('Cannot open without port', TTransportException::NOT_OPEN);
+ }
+
+ $this->handle_ = @stream_socket_client(
+ $this->host_ . ':' . $this->port_,
+ $errno,
+ $errstr,
+ $this->sendTimeoutSec_ + ($this->sendTimeoutUsec_ / 1000000),
+ STREAM_CLIENT_CONNECT,
+ $this->context_
+ );
+
+ // Connect failed?
+ if ($this->handle_ === false) {
+ $error = 'TSocket: Could not connect to ' .
+ $this->host_ . ':' . $this->port_ . ' (' . $errstr . ' [' . $errno . '])';
+ if ($this->debug_) {
+ call_user_func($this->debugHandler_, $error);
+ }
+ throw new TException($error);
+ }
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TSocket.php b/vendor/packaged/thrift/src/Transport/TSocket.php
new file mode 100644
index 000000000..5147efa63
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TSocket.php
@@ -0,0 +1,366 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TException;
+use Thrift\Exception\TTransportException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * Sockets implementation of the TTransport interface.
+ *
+ * @package thrift.transport
+ */
+class TSocket extends TTransport
+{
+ /**
+ * Handle to PHP socket
+ *
+ * @var resource
+ */
+ protected $handle_ = null;
+
+ /**
+ * Remote hostname
+ *
+ * @var string
+ */
+ protected $host_ = 'localhost';
+
+ /**
+ * Remote port
+ *
+ * @var int
+ */
+ protected $port_ = '9090';
+
+ /**
+ * Send timeout in seconds.
+ *
+ * Combined with sendTimeoutUsec this is used for send timeouts.
+ *
+ * @var int
+ */
+ protected $sendTimeoutSec_ = 0;
+
+ /**
+ * Send timeout in microseconds.
+ *
+ * Combined with sendTimeoutSec this is used for send timeouts.
+ *
+ * @var int
+ */
+ protected $sendTimeoutUsec_ = 100000;
+
+ /**
+ * Recv timeout in seconds
+ *
+ * Combined with recvTimeoutUsec this is used for recv timeouts.
+ *
+ * @var int
+ */
+ protected $recvTimeoutSec_ = 0;
+
+ /**
+ * Recv timeout in microseconds
+ *
+ * Combined with recvTimeoutSec this is used for recv timeouts.
+ *
+ * @var int
+ */
+ protected $recvTimeoutUsec_ = 750000;
+
+ /**
+ * Persistent socket or plain?
+ *
+ * @var bool
+ */
+ protected $persist_ = false;
+
+ /**
+ * Debugging on?
+ *
+ * @var bool
+ */
+ protected $debug_ = false;
+
+ /**
+ * Debug handler
+ *
+ * @var mixed
+ */
+ protected $debugHandler_ = null;
+
+ /**
+ * Socket constructor
+ *
+ * @param string $host Remote hostname
+ * @param int $port Remote port
+ * @param bool $persist Whether to use a persistent socket
+ * @param string $debugHandler Function to call for error logging
+ */
+ public function __construct(
+ $host = 'localhost',
+ $port = 9090,
+ $persist = false,
+ $debugHandler = null
+ ) {
+ $this->host_ = $host;
+ $this->port_ = $port;
+ $this->persist_ = $persist;
+ $this->debugHandler_ = $debugHandler ? $debugHandler : 'error_log';
+ }
+
+ /**
+ * @param resource $handle
+ * @return void
+ */
+ public function setHandle($handle)
+ {
+ $this->handle_ = $handle;
+ stream_set_blocking($this->handle_, false);
+ }
+
+ /**
+ * Sets the send timeout.
+ *
+ * @param int $timeout Timeout in milliseconds.
+ */
+ public function setSendTimeout($timeout)
+ {
+ $this->sendTimeoutSec_ = floor($timeout / 1000);
+ $this->sendTimeoutUsec_ =
+ ($timeout - ($this->sendTimeoutSec_ * 1000)) * 1000;
+ }
+
+ /**
+ * Sets the receive timeout.
+ *
+ * @param int $timeout Timeout in milliseconds.
+ */
+ public function setRecvTimeout($timeout)
+ {
+ $this->recvTimeoutSec_ = floor($timeout / 1000);
+ $this->recvTimeoutUsec_ =
+ ($timeout - ($this->recvTimeoutSec_ * 1000)) * 1000;
+ }
+
+ /**
+ * Sets debugging output on or off
+ *
+ * @param bool $debug
+ */
+ public function setDebug($debug)
+ {
+ $this->debug_ = $debug;
+ }
+
+ /**
+ * Get the host that this socket is connected to
+ *
+ * @return string host
+ */
+ public function getHost()
+ {
+ return $this->host_;
+ }
+
+ /**
+ * Get the remote port that this socket is connected to
+ *
+ * @return int port
+ */
+ public function getPort()
+ {
+ return $this->port_;
+ }
+
+ /**
+ * Tests whether this is open
+ *
+ * @return bool true if the socket is open
+ */
+ public function isOpen()
+ {
+ return is_resource($this->handle_);
+ }
+
+ /**
+ * Connects the socket.
+ */
+ public function open()
+ {
+ if ($this->isOpen()) {
+ throw new TTransportException('Socket already connected', TTransportException::ALREADY_OPEN);
+ }
+
+ if (empty($this->host_)) {
+ throw new TTransportException('Cannot open null host', TTransportException::NOT_OPEN);
+ }
+
+ if ($this->port_ <= 0) {
+ throw new TTransportException('Cannot open without port', TTransportException::NOT_OPEN);
+ }
+
+ if ($this->persist_) {
+ $this->handle_ = @pfsockopen(
+ $this->host_,
+ $this->port_,
+ $errno,
+ $errstr,
+ $this->sendTimeoutSec_ + ($this->sendTimeoutUsec_ / 1000000)
+ );
+ } else {
+ $this->handle_ = @fsockopen(
+ $this->host_,
+ $this->port_,
+ $errno,
+ $errstr,
+ $this->sendTimeoutSec_ + ($this->sendTimeoutUsec_ / 1000000)
+ );
+ }
+
+ // Connect failed?
+ if ($this->handle_ === false) {
+ $error = 'TSocket: Could not connect to ' .
+ $this->host_ . ':' . $this->port_ . ' (' . $errstr . ' [' . $errno . '])';
+ if ($this->debug_) {
+ call_user_func($this->debugHandler_, $error);
+ }
+ throw new TException($error);
+ }
+
+ if (function_exists('socket_import_stream') && function_exists('socket_set_option')) {
+ $socket = socket_import_stream($this->handle_);
+ socket_set_option($socket, SOL_TCP, TCP_NODELAY, 1);
+ }
+ }
+
+ /**
+ * Closes the socket.
+ */
+ public function close()
+ {
+ @fclose($this->handle_);
+ $this->handle_ = null;
+ }
+
+ /**
+ * Read from the socket at most $len bytes.
+ *
+ * This method will not wait for all the requested data, it will return as
+ * soon as any data is received.
+ *
+ * @param int $len Maximum number of bytes to read.
+ * @return string Binary data
+ */
+ public function read($len)
+ {
+ $null = null;
+ $read = array($this->handle_);
+ $readable = @stream_select(
+ $read,
+ $null,
+ $null,
+ $this->recvTimeoutSec_,
+ $this->recvTimeoutUsec_
+ );
+
+ if ($readable > 0) {
+ $data = fread($this->handle_, $len);
+ if ($data === false) {
+ throw new TTransportException('TSocket: Could not read ' . $len . ' bytes from ' .
+ $this->host_ . ':' . $this->port_);
+ } elseif ($data == '' && feof($this->handle_)) {
+ throw new TTransportException('TSocket read 0 bytes');
+ }
+
+ return $data;
+ } elseif ($readable === 0) {
+ throw new TTransportException('TSocket: timed out reading ' . $len . ' bytes from ' .
+ $this->host_ . ':' . $this->port_);
+ } else {
+ throw new TTransportException('TSocket: Could not read ' . $len . ' bytes from ' .
+ $this->host_ . ':' . $this->port_);
+ }
+ }
+
+ /**
+ * Write to the socket.
+ *
+ * @param string $buf The data to write
+ */
+ public function write($buf)
+ {
+ $null = null;
+ $write = array($this->handle_);
+
+ // keep writing until all the data has been written
+ while (TStringFuncFactory::create()->strlen($buf) > 0) {
+ // wait for stream to become available for writing
+ $writable = @stream_select(
+ $null,
+ $write,
+ $null,
+ $this->sendTimeoutSec_,
+ $this->sendTimeoutUsec_
+ );
+ if ($writable > 0) {
+ // write buffer to stream
+ $written = fwrite($this->handle_, $buf);
+ if ($written === -1 || $written === false) {
+ throw new TTransportException(
+ 'TSocket: Could not write ' . TStringFuncFactory::create()->strlen($buf) . ' bytes ' .
+ $this->host_ . ':' . $this->port_
+ );
+ }
+ // determine how much of the buffer is left to write
+ $buf = TStringFuncFactory::create()->substr($buf, $written);
+ } elseif ($writable === 0) {
+ throw new TTransportException(
+ 'TSocket: timed out writing ' . TStringFuncFactory::create()->strlen($buf) . ' bytes from ' .
+ $this->host_ . ':' . $this->port_
+ );
+ } else {
+ throw new TTransportException(
+ 'TSocket: Could not write ' . TStringFuncFactory::create()->strlen($buf) . ' bytes ' .
+ $this->host_ . ':' . $this->port_
+ );
+ }
+ }
+ }
+
+ /**
+ * Flush output to the socket.
+ *
+ * Since read(), readAll() and write() operate on the sockets directly,
+ * this is a no-op
+ *
+ * If you wish to have flushable buffering behaviour, wrap this TSocket
+ * in a TBufferedTransport.
+ */
+ public function flush()
+ {
+ // no-op
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TSocketPool.php b/vendor/packaged/thrift/src/Transport/TSocketPool.php
new file mode 100644
index 000000000..cb9e8ddfa
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TSocketPool.php
@@ -0,0 +1,310 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TException;
+
+/**
+ * This library makes use of APC cache to make hosts as down in a web
+ * environment. If you are running from the CLI or on a system without APC
+ * installed, then these null functions will step in and act like cache
+ * misses.
+ */
+if (!function_exists('apc_fetch')) {
+ function apc_fetch($key)
+ {
+ return false;
+ }
+
+ function apc_store($key, $var, $ttl = 0)
+ {
+ return false;
+ }
+}
+
+/**
+ * Sockets implementation of the TTransport interface that allows connection
+ * to a pool of servers.
+ *
+ * @package thrift.transport
+ */
+class TSocketPool extends TSocket
+{
+ /**
+ * Remote servers. Array of associative arrays with 'host' and 'port' keys
+ */
+ private $servers_ = array();
+
+ /**
+ * How many times to retry each host in connect
+ *
+ * @var int
+ */
+ private $numRetries_ = 1;
+
+ /**
+ * Retry interval in seconds, how long to not try a host if it has been
+ * marked as down.
+ *
+ * @var int
+ */
+ private $retryInterval_ = 60;
+
+ /**
+ * Max consecutive failures before marking a host down.
+ *
+ * @var int
+ */
+ private $maxConsecutiveFailures_ = 1;
+
+ /**
+ * Try hosts in order? or Randomized?
+ *
+ * @var bool
+ */
+ private $randomize_ = true;
+
+ /**
+ * Always try last host, even if marked down?
+ *
+ * @var bool
+ */
+ private $alwaysTryLast_ = true;
+
+ /**
+ * Socket pool constructor
+ *
+ * @param array $hosts List of remote hostnames
+ * @param mixed $ports Array of remote ports, or a single common port
+ * @param bool $persist Whether to use a persistent socket
+ * @param mixed $debugHandler Function for error logging
+ */
+ public function __construct(
+ $hosts = array('localhost'),
+ $ports = array(9090),
+ $persist = false,
+ $debugHandler = null
+ ) {
+ parent::__construct(null, 0, $persist, $debugHandler);
+
+ if (!is_array($ports)) {
+ $port = $ports;
+ $ports = array();
+ foreach ($hosts as $key => $val) {
+ $ports[$key] = $port;
+ }
+ }
+
+ foreach ($hosts as $key => $host) {
+ $this->servers_ [] = array('host' => $host,
+ 'port' => $ports[$key]);
+ }
+ }
+
+ /**
+ * Add a server to the pool
+ *
+ * This function does not prevent you from adding a duplicate server entry.
+ *
+ * @param string $host hostname or IP
+ * @param int $port port
+ */
+ public function addServer($host, $port)
+ {
+ $this->servers_[] = array('host' => $host, 'port' => $port);
+ }
+
+ /**
+ * Sets how many time to keep retrying a host in the connect function.
+ *
+ * @param int $numRetries
+ */
+ public function setNumRetries($numRetries)
+ {
+ $this->numRetries_ = $numRetries;
+ }
+
+ /**
+ * Sets how long to wait until retrying a host if it was marked down
+ *
+ * @param int $numRetries
+ */
+ public function setRetryInterval($retryInterval)
+ {
+ $this->retryInterval_ = $retryInterval;
+ }
+
+ /**
+ * Sets how many time to keep retrying a host before marking it as down.
+ *
+ * @param int $numRetries
+ */
+ public function setMaxConsecutiveFailures($maxConsecutiveFailures)
+ {
+ $this->maxConsecutiveFailures_ = $maxConsecutiveFailures;
+ }
+
+ /**
+ * Turns randomization in connect order on or off.
+ *
+ * @param bool $randomize
+ */
+ public function setRandomize($randomize)
+ {
+ $this->randomize_ = $randomize;
+ }
+
+ /**
+ * Whether to always try the last server.
+ *
+ * @param bool $alwaysTryLast
+ */
+ public function setAlwaysTryLast($alwaysTryLast)
+ {
+ $this->alwaysTryLast_ = $alwaysTryLast;
+ }
+
+ /**
+ * Connects the socket by iterating through all the servers in the pool
+ * and trying to find one that works.
+ */
+ public function open()
+ {
+ // Check if we want order randomization
+ if ($this->randomize_) {
+ shuffle($this->servers_);
+ }
+
+ // Count servers to identify the "last" one
+ $numServers = count($this->servers_);
+
+ for ($i = 0; $i < $numServers; ++$i) {
+ // This extracts the $host and $port variables
+ extract($this->servers_[$i]);
+
+ // Check APC cache for a record of this server being down
+ $failtimeKey = 'thrift_failtime:' . $host . ':' . $port . '~';
+
+ // Cache miss? Assume it's OK
+ $lastFailtime = apc_fetch($failtimeKey);
+ if ($lastFailtime === false) {
+ $lastFailtime = 0;
+ }
+
+ $retryIntervalPassed = false;
+
+ // Cache hit...make sure enough the retry interval has elapsed
+ if ($lastFailtime > 0) {
+ $elapsed = time() - $lastFailtime;
+ if ($elapsed > $this->retryInterval_) {
+ $retryIntervalPassed = true;
+ if ($this->debug_) {
+ call_user_func(
+ $this->debugHandler_,
+ 'TSocketPool: retryInterval ' .
+ '(' . $this->retryInterval_ . ') ' .
+ 'has passed for host ' . $host . ':' . $port
+ );
+ }
+ }
+ }
+
+ // Only connect if not in the middle of a fail interval, OR if this
+ // is the LAST server we are trying, just hammer away on it
+ $isLastServer = false;
+ if ($this->alwaysTryLast_) {
+ $isLastServer = ($i == ($numServers - 1));
+ }
+
+ if (($lastFailtime === 0) ||
+ ($isLastServer) ||
+ ($lastFailtime > 0 && $retryIntervalPassed)) {
+ // Set underlying TSocket params to this one
+ $this->host_ = $host;
+ $this->port_ = $port;
+
+ // Try up to numRetries_ connections per server
+ for ($attempt = 0; $attempt < $this->numRetries_; $attempt++) {
+ try {
+ // Use the underlying TSocket open function
+ parent::open();
+
+ // Only clear the failure counts if required to do so
+ if ($lastFailtime > 0) {
+ apc_store($failtimeKey, 0);
+ }
+
+ // Successful connection, return now
+ return;
+ } catch (TException $tx) {
+ // Connection failed
+ }
+ }
+
+ // Mark failure of this host in the cache
+ $consecfailsKey = 'thrift_consecfails:' . $host . ':' . $port . '~';
+
+ // Ignore cache misses
+ $consecfails = apc_fetch($consecfailsKey);
+ if ($consecfails === false) {
+ $consecfails = 0;
+ }
+
+ // Increment by one
+ $consecfails++;
+
+ // Log and cache this failure
+ if ($consecfails >= $this->maxConsecutiveFailures_) {
+ if ($this->debug_) {
+ call_user_func(
+ $this->debugHandler_,
+ 'TSocketPool: marking ' . $host . ':' . $port .
+ ' as down for ' . $this->retryInterval_ . ' secs ' .
+ 'after ' . $consecfails . ' failed attempts.'
+ );
+ }
+ // Store the failure time
+ apc_store($failtimeKey, time());
+
+ // Clear the count of consecutive failures
+ apc_store($consecfailsKey, 0);
+ } else {
+ apc_store($consecfailsKey, $consecfails);
+ }
+ }
+ }
+
+ // Oh no; we failed them all. The system is totally ill!
+ $error = 'TSocketPool: All hosts in pool are down. ';
+ $hosts = array();
+ foreach ($this->servers_ as $server) {
+ $hosts [] = $server['host'] . ':' . $server['port'];
+ }
+ $hostlist = implode(',', $hosts);
+ $error .= '(' . $hostlist . ')';
+ if ($this->debug_) {
+ call_user_func($this->debugHandler_, $error);
+ }
+ throw new TException($error);
+ }
+}
diff --git a/vendor/packaged/thrift/src/Transport/TTransport.php b/vendor/packaged/thrift/src/Transport/TTransport.php
new file mode 100644
index 000000000..35921c666
--- /dev/null
+++ b/vendor/packaged/thrift/src/Transport/TTransport.php
@@ -0,0 +1,98 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift.transport
+ */
+
+namespace Thrift\Transport;
+
+use Thrift\Exception\TTransportException;
+use Thrift\Factory\TStringFuncFactory;
+
+/**
+ * Base interface for a transport agent.
+ *
+ * @package thrift.transport
+ */
+abstract class TTransport
+{
+ /**
+ * Whether this transport is open.
+ *
+ * @return boolean true if open
+ */
+ abstract public function isOpen();
+
+ /**
+ * Open the transport for reading/writing
+ *
+ * @throws TTransportException if cannot open
+ */
+ abstract public function open();
+
+ /**
+ * Close the transport.
+ */
+ abstract public function close();
+
+ /**
+ * Read some data into the array.
+ *
+ * @param int $len How much to read
+ * @return string The data that has been read
+ * @throws TTransportException if cannot read any more data
+ */
+ abstract public function read($len);
+
+ /**
+ * Guarantees that the full amount of data is read.
+ *
+ * @return string The data, of exact length
+ * @throws TTransportException if cannot read data
+ */
+ public function readAll($len)
+ {
+ // return $this->read($len);
+
+ $data = '';
+ $got = 0;
+ while (($got = TStringFuncFactory::create()->strlen($data)) < $len) {
+ $data .= $this->read($len - $got);
+ }
+
+ return $data;
+ }
+
+ /**
+ * Writes the given data out.
+ *
+ * @param string $buf The data to write
+ * @throws TTransportException if writing fails
+ */
+ abstract public function write($buf);
+
+ /**
+ * Flushes any pending data out of a buffer
+ *
+ * @throws TTransportException if a writing error occurs
+ */
+ public function flush()
+ {
+ }
+}
diff --git a/vendor/packaged/thrift/src/Type/TConstant.php b/vendor/packaged/thrift/src/Type/TConstant.php
new file mode 100644
index 000000000..215da4a3d
--- /dev/null
+++ b/vendor/packaged/thrift/src/Type/TConstant.php
@@ -0,0 +1,52 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift
+ */
+
+namespace Thrift\Type;
+
+/**
+ * Base class for constant Management
+ */
+abstract class TConstant
+{
+ /**
+ * Don't instanciate this class
+ */
+ protected function __construct()
+ {
+ }
+
+ /**
+ * Get a constant value
+ * @param string $constant
+ * @return mixed
+ */
+ public static function get($constant)
+ {
+ if (is_null(static::$$constant)) {
+ static::$$constant = call_user_func(
+ sprintf('static::init_%s', $constant)
+ );
+ }
+
+ return static::$$constant;
+ }
+}
diff --git a/vendor/packaged/thrift/src/Type/TMessageType.php b/vendor/packaged/thrift/src/Type/TMessageType.php
new file mode 100644
index 000000000..dc9ae6284
--- /dev/null
+++ b/vendor/packaged/thrift/src/Type/TMessageType.php
@@ -0,0 +1,34 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift
+ */
+
+namespace Thrift\Type;
+
+/**
+ * Message types for RPC
+ */
+class TMessageType
+{
+ const CALL = 1;
+ const REPLY = 2;
+ const EXCEPTION = 3;
+ const ONEWAY = 4;
+}
diff --git a/vendor/packaged/thrift/src/Type/TType.php b/vendor/packaged/thrift/src/Type/TType.php
new file mode 100644
index 000000000..3fdb15f53
--- /dev/null
+++ b/vendor/packaged/thrift/src/Type/TType.php
@@ -0,0 +1,47 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @package thrift
+ */
+
+namespace Thrift\Type;
+
+/**
+ * Data types that can be sent via Thrift
+ */
+class TType
+{
+ const STOP = 0;
+ const VOID = 1;
+ const BOOL = 2;
+ const BYTE = 3;
+ const I08 = 3;
+ const DOUBLE = 4;
+ const I16 = 6;
+ const I32 = 8;
+ const I64 = 10;
+ const STRING = 11;
+ const UTF7 = 11;
+ const STRUCT = 12;
+ const MAP = 13;
+ const SET = 14;
+ const LST = 15; // N.B. cannot use LIST keyword in PHP!
+ const UTF8 = 16;
+ const UTF16 = 17;
+}
diff --git a/vendor/packaged/thrift/update.sh b/vendor/packaged/thrift/update.sh
new file mode 100644
index 000000000..20cf145a7
--- /dev/null
+++ b/vendor/packaged/thrift/update.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+TAG=$1
+
+if [[ "$TAG" == "" ]]; then
+ echo "no branch or tag specified"
+ exit 1
+fi
+
+cd "$(dirname $0)"
+git clone --depth=1 --branch=$TAG [email protected]:apache/thrift tmp
+
+# Move old file to an upper level to fit the new requirements of psr-4
+if [ -d "src/Thrift" ]
+then
+ mv src/Thrift/* src/ && rm -Rf src/Thrift
+fi
+
+rm -Rf src/Thrift
+cp -R tmp/lib/php/lib/* src/
+rm -Rf tmp
+cd -
diff --git a/vendor/psr/cache/CHANGELOG.md b/vendor/psr/cache/CHANGELOG.md
new file mode 100644
index 000000000..58ddab05a
--- /dev/null
+++ b/vendor/psr/cache/CHANGELOG.md
@@ -0,0 +1,16 @@
+# Changelog
+
+All notable changes to this project will be documented in this file, in reverse chronological order by release.
+
+## 1.0.1 - 2016-08-06
+
+### Fixed
+
+- Make spacing consistent in phpdoc annotations php-fig/cache#9 - chalasr
+- Fix grammar in phpdoc annotations php-fig/cache#10 - chalasr
+- Be more specific in docblocks that `getItems()` and `deleteItems()` take an array of strings (`string[]`) compared to just `array` php-fig/cache#8 - GrahamCampbell
+- For `expiresAt()` and `expiresAfter()` in CacheItemInterface fix docblock to specify null as a valid parameters as well as an implementation of DateTimeInterface php-fig/cache#7 - GrahamCampbell
+
+## 1.0.0 - 2015-12-11
+
+Initial stable release; reflects accepted PSR-6 specification
diff --git a/vendor/psr/cache/LICENSE.txt b/vendor/psr/cache/LICENSE.txt
new file mode 100644
index 000000000..b1c2c97b9
--- /dev/null
+++ b/vendor/psr/cache/LICENSE.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2015 PHP Framework Interoperability Group
+
+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/psr/cache/README.md b/vendor/psr/cache/README.md
new file mode 100644
index 000000000..9855a318b
--- /dev/null
+++ b/vendor/psr/cache/README.md
@@ -0,0 +1,12 @@
+Caching Interface
+==============
+
+This repository holds all interfaces related to [PSR-6 (Caching Interface)][psr-url].
+
+Note that this is not a Caching implementation of its own. It is merely interfaces that describe the components of a Caching mechanism.
+
+The installable [package][package-url] and [implementations][implementation-url] are listed on Packagist.
+
+[psr-url]: https://www.php-fig.org/psr/psr-6/
+[package-url]: https://packagist.org/packages/psr/cache
+[implementation-url]: https://packagist.org/providers/psr/cache-implementation
diff --git a/vendor/psr/cache/composer.json b/vendor/psr/cache/composer.json
new file mode 100644
index 000000000..4b687971e
--- /dev/null
+++ b/vendor/psr/cache/composer.json
@@ -0,0 +1,25 @@
+{
+ "name": "psr/cache",
+ "description": "Common interface for caching libraries",
+ "keywords": ["psr", "psr-6", "cache"],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/vendor/psr/cache/src/CacheException.php b/vendor/psr/cache/src/CacheException.php
new file mode 100644
index 000000000..bb785f46c
--- /dev/null
+++ b/vendor/psr/cache/src/CacheException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Psr\Cache;
+
+/**
+ * Exception interface for all exceptions thrown by an Implementing Library.
+ */
+interface CacheException extends \Throwable
+{
+}
diff --git a/vendor/psr/cache/src/CacheItemInterface.php b/vendor/psr/cache/src/CacheItemInterface.php
new file mode 100644
index 000000000..2b2e4bb88
--- /dev/null
+++ b/vendor/psr/cache/src/CacheItemInterface.php
@@ -0,0 +1,105 @@
+<?php
+
+namespace Psr\Cache;
+
+/**
+ * CacheItemInterface defines an interface for interacting with objects inside a cache.
+ *
+ * Each Item object MUST be associated with a specific key, which can be set
+ * according to the implementing system and is typically passed by the
+ * Cache\CacheItemPoolInterface object.
+ *
+ * The Cache\CacheItemInterface object encapsulates the storage and retrieval of
+ * cache items. Each Cache\CacheItemInterface is generated by a
+ * Cache\CacheItemPoolInterface object, which is responsible for any required
+ * setup as well as associating the object with a unique Key.
+ * Cache\CacheItemInterface objects MUST be able to store and retrieve any type
+ * of PHP value defined in the Data section of the specification.
+ *
+ * Calling Libraries MUST NOT instantiate Item objects themselves. They may only
+ * be requested from a Pool object via the getItem() method. Calling Libraries
+ * SHOULD NOT assume that an Item created by one Implementing Library is
+ * compatible with a Pool from another Implementing Library.
+ */
+interface CacheItemInterface
+{
+ /**
+ * Returns the key for the current cache item.
+ *
+ * The key is loaded by the Implementing Library, but should be available to
+ * the higher level callers when needed.
+ *
+ * @return string
+ * The key string for this cache item.
+ */
+ public function getKey(): string;
+
+ /**
+ * Retrieves the value of the item from the cache associated with this object's key.
+ *
+ * The value returned must be identical to the value originally stored by set().
+ *
+ * If isHit() returns false, this method MUST return null. Note that null
+ * is a legitimate cached value, so the isHit() method SHOULD be used to
+ * differentiate between "null value was found" and "no value was found."
+ *
+ * @return mixed
+ * The value corresponding to this cache item's key, or null if not found.
+ */
+ public function get(): mixed;
+
+ /**
+ * Confirms if the cache item lookup resulted in a cache hit.
+ *
+ * Note: This method MUST NOT have a race condition between calling isHit()
+ * and calling get().
+ *
+ * @return bool
+ * True if the request resulted in a cache hit. False otherwise.
+ */
+ public function isHit(): bool;
+
+ /**
+ * Sets the value represented by this cache item.
+ *
+ * The $value argument may be any item that can be serialized by PHP,
+ * although the method of serialization is left up to the Implementing
+ * Library.
+ *
+ * @param mixed $value
+ * The serializable value to be stored.
+ *
+ * @return static
+ * The invoked object.
+ */
+ public function set(mixed $value): static;
+
+ /**
+ * Sets the expiration time for this cache item.
+ *
+ * @param ?\DateTimeInterface $expiration
+ * The point in time after which the item MUST be considered expired.
+ * If null is passed explicitly, a default value MAY be used. If none is set,
+ * the value should be stored permanently or for as long as the
+ * implementation allows.
+ *
+ * @return static
+ * The called object.
+ */
+ public function expiresAt(?\DateTimeInterface $expiration): static;
+
+ /**
+ * Sets the expiration time for this cache item.
+ *
+ * @param int|\DateInterval|null $time
+ * The period of time from the present after which the item MUST be considered
+ * expired. An integer parameter is understood to be the time in seconds until
+ * expiration. If null is passed explicitly, a default value MAY be used.
+ * If none is set, the value should be stored permanently or for as long as the
+ * implementation allows.
+ *
+ * @return static
+ * The called object.
+ */
+ public function expiresAfter(int|\DateInterval|null $time): static;
+}
diff --git a/vendor/psr/cache/src/CacheItemPoolInterface.php b/vendor/psr/cache/src/CacheItemPoolInterface.php
new file mode 100644
index 000000000..4b3017c75
--- /dev/null
+++ b/vendor/psr/cache/src/CacheItemPoolInterface.php
@@ -0,0 +1,138 @@
+<?php
+
+namespace Psr\Cache;
+
+/**
+ * CacheItemPoolInterface generates CacheItemInterface objects.
+ *
+ * The primary purpose of Cache\CacheItemPoolInterface is to accept a key from
+ * the Calling Library and return the associated Cache\CacheItemInterface object.
+ * It is also the primary point of interaction with the entire cache collection.
+ * All configuration and initialization of the Pool is left up to an
+ * Implementing Library.
+ */
+interface CacheItemPoolInterface
+{
+ /**
+ * Returns a Cache Item representing the specified key.
+ *
+ * This method must always return a CacheItemInterface object, even in case of
+ * a cache miss. It MUST NOT return null.
+ *
+ * @param string $key
+ * The key for which to return the corresponding Cache Item.
+ *
+ * @throws InvalidArgumentException
+ * If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException
+ * MUST be thrown.
+ *
+ * @return CacheItemInterface
+ * The corresponding Cache Item.
+ */
+ public function getItem(string $key): CacheItemInterface;
+
+ /**
+ * Returns a traversable set of cache items.
+ *
+ * @param string[] $keys
+ * An indexed array of keys of items to retrieve.
+ *
+ * @throws InvalidArgumentException
+ * If any of the keys in $keys are not a legal value a \Psr\Cache\InvalidArgumentException
+ * MUST be thrown.
+ *
+ * @return iterable
+ * An iterable collection of Cache Items keyed by the cache keys of
+ * each item. A Cache item will be returned for each key, even if that
+ * key is not found. However, if no keys are specified then an empty
+ * traversable MUST be returned instead.
+ */
+ public function getItems(array $keys = []): iterable;
+
+ /**
+ * Confirms if the cache contains specified cache item.
+ *
+ * Note: This method MAY avoid retrieving the cached value for performance reasons.
+ * This could result in a race condition with CacheItemInterface::get(). To avoid
+ * such situation use CacheItemInterface::isHit() instead.
+ *
+ * @param string $key
+ * The key for which to check existence.
+ *
+ * @throws InvalidArgumentException
+ * If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException
+ * MUST be thrown.
+ *
+ * @return bool
+ * True if item exists in the cache, false otherwise.
+ */
+ public function hasItem(string $key): bool;
+
+ /**
+ * Deletes all items in the pool.
+ *
+ * @return bool
+ * True if the pool was successfully cleared. False if there was an error.
+ */
+ public function clear(): bool;
+
+ /**
+ * Removes the item from the pool.
+ *
+ * @param string $key
+ * The key to delete.
+ *
+ * @throws InvalidArgumentException
+ * If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException
+ * MUST be thrown.
+ *
+ * @return bool
+ * True if the item was successfully removed. False if there was an error.
+ */
+ public function deleteItem(string $key): bool;
+
+ /**
+ * Removes multiple items from the pool.
+ *
+ * @param string[] $keys
+ * An array of keys that should be removed from the pool.
+ *
+ * @throws InvalidArgumentException
+ * If any of the keys in $keys are not a legal value a \Psr\Cache\InvalidArgumentException
+ * MUST be thrown.
+ *
+ * @return bool
+ * True if the items were successfully removed. False if there was an error.
+ */
+ public function deleteItems(array $keys): bool;
+
+ /**
+ * Persists a cache item immediately.
+ *
+ * @param CacheItemInterface $item
+ * The cache item to save.
+ *
+ * @return bool
+ * True if the item was successfully persisted. False if there was an error.
+ */
+ public function save(CacheItemInterface $item): bool;
+
+ /**
+ * Sets a cache item to be persisted later.
+ *
+ * @param CacheItemInterface $item
+ * The cache item to save.
+ *
+ * @return bool
+ * False if the item could not be queued or if a commit was attempted and failed. True otherwise.
+ */
+ public function saveDeferred(CacheItemInterface $item): bool;
+
+ /**
+ * Persists any deferred cache items.
+ *
+ * @return bool
+ * True if all not-yet-saved items were successfully saved or there were none. False otherwise.
+ */
+ public function commit(): bool;
+}
diff --git a/vendor/psr/cache/src/InvalidArgumentException.php b/vendor/psr/cache/src/InvalidArgumentException.php
new file mode 100644
index 000000000..be7c6fa0e
--- /dev/null
+++ b/vendor/psr/cache/src/InvalidArgumentException.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Psr\Cache;
+
+/**
+ * Exception interface for invalid cache arguments.
+ *
+ * Any time an invalid argument is passed into a method it must throw an
+ * exception class which implements Psr\Cache\InvalidArgumentException.
+ */
+interface InvalidArgumentException extends CacheException
+{
+}
diff --git a/vendor/psr/log/LICENSE b/vendor/psr/log/LICENSE
new file mode 100644
index 000000000..474c952b4
--- /dev/null
+++ b/vendor/psr/log/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2012 PHP Framework Interoperability Group
+
+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/psr/log/README.md b/vendor/psr/log/README.md
new file mode 100644
index 000000000..a9f20c437
--- /dev/null
+++ b/vendor/psr/log/README.md
@@ -0,0 +1,58 @@
+PSR Log
+=======
+
+This repository holds all interfaces/classes/traits related to
+[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md).
+
+Note that this is not a logger of its own. It is merely an interface that
+describes a logger. See the specification for more details.
+
+Installation
+------------
+
+```bash
+composer require psr/log
+```
+
+Usage
+-----
+
+If you need a logger, you can use the interface like this:
+
+```php
+<?php
+
+use Psr\Log\LoggerInterface;
+
+class Foo
+{
+ private $logger;
+
+ public function __construct(LoggerInterface $logger = null)
+ {
+ $this->logger = $logger;
+ }
+
+ public function doSomething()
+ {
+ if ($this->logger) {
+ $this->logger->info('Doing work');
+ }
+
+ try {
+ $this->doSomethingElse();
+ } catch (Exception $exception) {
+ $this->logger->error('Oh no!', array('exception' => $exception));
+ }
+
+ // do something useful
+ }
+}
+```
+
+You can then pick one of the implementations of the interface to get a logger.
+
+If you want to implement the interface, you can require this package and
+implement `Psr\Log\LoggerInterface` in your code. Please read the
+[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
+for details.
diff --git a/vendor/psr/log/composer.json b/vendor/psr/log/composer.json
new file mode 100644
index 000000000..879fc6f53
--- /dev/null
+++ b/vendor/psr/log/composer.json
@@ -0,0 +1,26 @@
+{
+ "name": "psr/log",
+ "description": "Common interface for logging libraries",
+ "keywords": ["psr", "psr-3", "log"],
+ "homepage": "https://github.com/php-fig/log",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ }
+}
diff --git a/vendor/psr/log/src/AbstractLogger.php b/vendor/psr/log/src/AbstractLogger.php
new file mode 100644
index 000000000..d60a091af
--- /dev/null
+++ b/vendor/psr/log/src/AbstractLogger.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * This is a simple Logger implementation that other Loggers can inherit from.
+ *
+ * It simply delegates all log-level-specific methods to the `log` method to
+ * reduce boilerplate code that a simple Logger that does the same thing with
+ * messages regardless of the error level has to implement.
+ */
+abstract class AbstractLogger implements LoggerInterface
+{
+ use LoggerTrait;
+}
diff --git a/vendor/psr/log/src/InvalidArgumentException.php b/vendor/psr/log/src/InvalidArgumentException.php
new file mode 100644
index 000000000..67f852d1d
--- /dev/null
+++ b/vendor/psr/log/src/InvalidArgumentException.php
@@ -0,0 +1,7 @@
+<?php
+
+namespace Psr\Log;
+
+class InvalidArgumentException extends \InvalidArgumentException
+{
+}
diff --git a/vendor/psr/log/src/LogLevel.php b/vendor/psr/log/src/LogLevel.php
new file mode 100644
index 000000000..9cebcace6
--- /dev/null
+++ b/vendor/psr/log/src/LogLevel.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * Describes log levels.
+ */
+class LogLevel
+{
+ const EMERGENCY = 'emergency';
+ const ALERT = 'alert';
+ const CRITICAL = 'critical';
+ const ERROR = 'error';
+ const WARNING = 'warning';
+ const NOTICE = 'notice';
+ const INFO = 'info';
+ const DEBUG = 'debug';
+}
diff --git a/vendor/psr/log/src/LoggerAwareInterface.php b/vendor/psr/log/src/LoggerAwareInterface.php
new file mode 100644
index 000000000..cc46a9514
--- /dev/null
+++ b/vendor/psr/log/src/LoggerAwareInterface.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * Describes a logger-aware instance.
+ */
+interface LoggerAwareInterface
+{
+ /**
+ * Sets a logger instance on the object.
+ *
+ * @param LoggerInterface $logger
+ *
+ * @return void
+ */
+ public function setLogger(LoggerInterface $logger): void;
+}
diff --git a/vendor/psr/log/src/LoggerAwareTrait.php b/vendor/psr/log/src/LoggerAwareTrait.php
new file mode 100644
index 000000000..4fb57a292
--- /dev/null
+++ b/vendor/psr/log/src/LoggerAwareTrait.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * Basic Implementation of LoggerAwareInterface.
+ */
+trait LoggerAwareTrait
+{
+ /**
+ * The logger instance.
+ *
+ * @var LoggerInterface|null
+ */
+ protected ?LoggerInterface $logger = null;
+
+ /**
+ * Sets a logger.
+ *
+ * @param LoggerInterface $logger
+ */
+ public function setLogger(LoggerInterface $logger): void
+ {
+ $this->logger = $logger;
+ }
+}
diff --git a/vendor/psr/log/src/LoggerInterface.php b/vendor/psr/log/src/LoggerInterface.php
new file mode 100644
index 000000000..b3a24b5f7
--- /dev/null
+++ b/vendor/psr/log/src/LoggerInterface.php
@@ -0,0 +1,125 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * Describes a logger instance.
+ *
+ * The message MUST be a string or object implementing __toString().
+ *
+ * The message MAY contain placeholders in the form: {foo} where foo
+ * will be replaced by the context data in key "foo".
+ *
+ * The context array can contain arbitrary data. The only assumption that
+ * can be made by implementors is that if an Exception instance is given
+ * to produce a stack trace, it MUST be in a key named "exception".
+ *
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
+ * for the full interface specification.
+ */
+interface LoggerInterface
+{
+ /**
+ * System is unusable.
+ *
+ * @param string|\Stringable $message
+ * @param mixed[] $context
+ *
+ * @return void
+ */
+ public function emergency(string|\Stringable $message, array $context = []): void;
+
+ /**
+ * Action must be taken immediately.
+ *
+ * Example: Entire website down, database unavailable, etc. This should
+ * trigger the SMS alerts and wake you up.
+ *
+ * @param string|\Stringable $message
+ * @param mixed[] $context
+ *
+ * @return void
+ */
+ public function alert(string|\Stringable $message, array $context = []): void;
+
+ /**
+ * Critical conditions.
+ *
+ * Example: Application component unavailable, unexpected exception.
+ *
+ * @param string|\Stringable $message
+ * @param mixed[] $context
+ *
+ * @return void
+ */
+ public function critical(string|\Stringable $message, array $context = []): void;
+
+ /**
+ * Runtime errors that do not require immediate action but should typically
+ * be logged and monitored.
+ *
+ * @param string|\Stringable $message
+ * @param mixed[] $context
+ *
+ * @return void
+ */
+ public function error(string|\Stringable $message, array $context = []): void;
+
+ /**
+ * Exceptional occurrences that are not errors.
+ *
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
+ * that are not necessarily wrong.
+ *
+ * @param string|\Stringable $message
+ * @param mixed[] $context
+ *
+ * @return void
+ */
+ public function warning(string|\Stringable $message, array $context = []): void;
+
+ /**
+ * Normal but significant events.
+ *
+ * @param string|\Stringable $message
+ * @param mixed[] $context
+ *
+ * @return void
+ */
+ public function notice(string|\Stringable $message, array $context = []): void;
+
+ /**
+ * Interesting events.
+ *
+ * Example: User logs in, SQL logs.
+ *
+ * @param string|\Stringable $message
+ * @param mixed[] $context
+ *
+ * @return void
+ */
+ public function info(string|\Stringable $message, array $context = []): void;
+
+ /**
+ * Detailed debug information.
+ *
+ * @param string|\Stringable $message
+ * @param mixed[] $context
+ *
+ * @return void
+ */
+ public function debug(string|\Stringable $message, array $context = []): void;
+
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string|\Stringable $message
+ * @param mixed[] $context
+ *
+ * @return void
+ *
+ * @throws \Psr\Log\InvalidArgumentException
+ */
+ public function log($level, string|\Stringable $message, array $context = []): void;
+}
diff --git a/vendor/psr/log/src/LoggerTrait.php b/vendor/psr/log/src/LoggerTrait.php
new file mode 100644
index 000000000..9c8733f95
--- /dev/null
+++ b/vendor/psr/log/src/LoggerTrait.php
@@ -0,0 +1,142 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * This is a simple Logger trait that classes unable to extend AbstractLogger
+ * (because they extend another class, etc) can include.
+ *
+ * It simply delegates all log-level-specific methods to the `log` method to
+ * reduce boilerplate code that a simple Logger that does the same thing with
+ * messages regardless of the error level has to implement.
+ */
+trait LoggerTrait
+{
+ /**
+ * System is unusable.
+ *
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function emergency(string|\Stringable $message, array $context = []): void
+ {
+ $this->log(LogLevel::EMERGENCY, $message, $context);
+ }
+
+ /**
+ * Action must be taken immediately.
+ *
+ * Example: Entire website down, database unavailable, etc. This should
+ * trigger the SMS alerts and wake you up.
+ *
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function alert(string|\Stringable $message, array $context = []): void
+ {
+ $this->log(LogLevel::ALERT, $message, $context);
+ }
+
+ /**
+ * Critical conditions.
+ *
+ * Example: Application component unavailable, unexpected exception.
+ *
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function critical(string|\Stringable $message, array $context = []): void
+ {
+ $this->log(LogLevel::CRITICAL, $message, $context);
+ }
+
+ /**
+ * Runtime errors that do not require immediate action but should typically
+ * be logged and monitored.
+ *
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function error(string|\Stringable $message, array $context = []): void
+ {
+ $this->log(LogLevel::ERROR, $message, $context);
+ }
+
+ /**
+ * Exceptional occurrences that are not errors.
+ *
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
+ * that are not necessarily wrong.
+ *
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function warning(string|\Stringable $message, array $context = []): void
+ {
+ $this->log(LogLevel::WARNING, $message, $context);
+ }
+
+ /**
+ * Normal but significant events.
+ *
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function notice(string|\Stringable $message, array $context = []): void
+ {
+ $this->log(LogLevel::NOTICE, $message, $context);
+ }
+
+ /**
+ * Interesting events.
+ *
+ * Example: User logs in, SQL logs.
+ *
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function info(string|\Stringable $message, array $context = []): void
+ {
+ $this->log(LogLevel::INFO, $message, $context);
+ }
+
+ /**
+ * Detailed debug information.
+ *
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function debug(string|\Stringable $message, array $context = []): void
+ {
+ $this->log(LogLevel::DEBUG, $message, $context);
+ }
+
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ *
+ * @throws \Psr\Log\InvalidArgumentException
+ */
+ abstract public function log($level, string|\Stringable $message, array $context = []): void;
+}
diff --git a/vendor/psr/log/src/NullLogger.php b/vendor/psr/log/src/NullLogger.php
new file mode 100644
index 000000000..c1cc3c069
--- /dev/null
+++ b/vendor/psr/log/src/NullLogger.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * This Logger can be used to avoid conditional log calls.
+ *
+ * Logging should always be optional, and if no logger is provided to your
+ * library creating a NullLogger instance to have something to throw logs at
+ * is a good way to avoid littering your code with `if ($this->logger) { }`
+ * blocks.
+ */
+class NullLogger extends AbstractLogger
+{
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string|\Stringable $message
+ * @param array $context
+ *
+ * @return void
+ *
+ * @throws \Psr\Log\InvalidArgumentException
+ */
+ public function log($level, string|\Stringable $message, array $context = []): void
+ {
+ // noop
+ }
+}