Initial commit
29
.eslintignore
Normal file
@ -0,0 +1,29 @@
|
||||
/app
|
||||
/config
|
||||
/db
|
||||
/doc
|
||||
/lib/assets/javascripts/cartodb
|
||||
/lib/assets/javascripts/cdb
|
||||
/lib/assets/javascripts/utils
|
||||
/lib/assets/javascripts/vendor/jquery-ui.js
|
||||
/lib/assets/test/lib
|
||||
/lib/assets/test/spec/cartodb
|
||||
/lib/assets/test/spec/new-dashboard/coverage
|
||||
/lib/assets/test/spec/node_modules
|
||||
/lib/assets/test/spec/SpecHelper.js
|
||||
/lib/assets/test/spec/SpecHelper3.js
|
||||
/lib/build/*
|
||||
!/lib/build/tasks
|
||||
/lib/carto
|
||||
/lib/cartodb
|
||||
/lib/importer
|
||||
/lib/resque
|
||||
/lib/sql
|
||||
/lib/tasks
|
||||
/lib/varnish
|
||||
/public
|
||||
/script
|
||||
/services
|
||||
/spec
|
||||
/vendor
|
||||
/coverage
|
24
.eslintrc.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"extends": [
|
||||
"semistandard",
|
||||
"plugin:vue/essential"
|
||||
],
|
||||
"env": {
|
||||
"es6": true,
|
||||
"browser": true,
|
||||
"jasmine": true,
|
||||
"jest": true
|
||||
},
|
||||
"globals": {
|
||||
"_t": true,
|
||||
"__ENV__": true,
|
||||
"grunt": true,
|
||||
"CartoNode": true
|
||||
},
|
||||
"rules": {
|
||||
"camelcase": "off",
|
||||
"no-mixed-operators": "off",
|
||||
"no-useless-escape": "off",
|
||||
"prefer-promise-reject-errors": "off"
|
||||
}
|
||||
}
|
34
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
### Context
|
||||
*Please explain here below what you were doing when the issue happened*
|
||||
|
||||
|
||||
|
||||
### Steps to Reproduce
|
||||
*Please break down here below all the needed steps to reproduce the issue*
|
||||
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
### Current Result
|
||||
*Please describe here below the current result you got*
|
||||
|
||||
|
||||
|
||||
### Expected result
|
||||
*Please describe here below what should be the expected behaviour*
|
||||
|
||||
|
||||
### Browser and version
|
||||
*What internet browser (Chrome, Firefox, etc) and version was you using and version*
|
||||
|
||||
|
||||
|
||||
### .carto file
|
||||
*Don't forget to rename .carto file to .zip file to be able to upload to github*
|
||||
|
||||
|
||||
|
||||
### Additional info
|
||||
*Please add any information of interest here below*
|
||||
|
53
.github/stale.yml
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
# Configuration for probot-stale - https://github.com/probot/stale
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
||||
daysUntilStale: 365
|
||||
|
||||
# Number of days of inactivity before a stale Issue or Pull Request is closed.
|
||||
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
||||
daysUntilClose: 7
|
||||
|
||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||
# exemptLabels:
|
||||
# - pinned
|
||||
# - security
|
||||
# - "[Status] Maybe Later"
|
||||
|
||||
# Set to true to ignore issues in a project (defaults to false)
|
||||
exemptProjects: true
|
||||
|
||||
# Set to true to ignore issues in a milestone (defaults to false)
|
||||
exemptMilestones: true
|
||||
|
||||
# Label to use when marking as stale
|
||||
staleLabel: stale
|
||||
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
|
||||
# Comment to post when removing the stale label.
|
||||
unmarkComment: false
|
||||
|
||||
# Comment to post when closing a stale Issue or Pull Request.
|
||||
closeComment: false
|
||||
|
||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
||||
limitPerRun: 30
|
||||
|
||||
# Limit to only `issues` or `pulls`
|
||||
# only: issues
|
||||
|
||||
# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
|
||||
# pulls:
|
||||
# daysUntilStale: 30
|
||||
# markComment: >
|
||||
# This pull request has been automatically marked as stale because it has not had
|
||||
# recent activity. It will be closed if no further activity occurs. Thank you
|
||||
# for your contributions.
|
||||
|
||||
# issues:
|
||||
# exemptLabels:
|
||||
# - confirmed
|
80
.gitignore
vendored
Normal file
@ -0,0 +1,80 @@
|
||||
.rvmrc
|
||||
.DS_Store
|
||||
.bundle
|
||||
_SpecRunner*.html
|
||||
dump.rdb
|
||||
db/*.sqlite3
|
||||
log
|
||||
tmp/*
|
||||
tmp/**/*
|
||||
fonts/*
|
||||
public/assets
|
||||
public/system
|
||||
public/uploads
|
||||
public/javascripts
|
||||
public/stylesheets
|
||||
public/images
|
||||
public/fonts
|
||||
public/flash
|
||||
public/static
|
||||
app/assets/stylesheets/tmp/
|
||||
app/assets/fonts/icon_font/svgs
|
||||
db/schema.rb
|
||||
*.pyc
|
||||
bin/
|
||||
config.status
|
||||
config/database.yml
|
||||
.idea/*
|
||||
config/app_config.yml
|
||||
config/app_config.yml.local
|
||||
config/redis.conf
|
||||
config/grunt_production.json
|
||||
spec/support/data/failed_remote/*
|
||||
*.swp
|
||||
*.swo
|
||||
env
|
||||
coverage
|
||||
.spin.rb
|
||||
.sass-cache
|
||||
public/js/lib/cdb.js
|
||||
services/importer/spec/factories/database.json
|
||||
.ruby-version
|
||||
cartodb.sublime-workspace
|
||||
cartodb.sublime-project
|
||||
.rvmrc
|
||||
app/assets/images/sprites/*.png
|
||||
npm-debug.log
|
||||
.ruby-gemset
|
||||
lib/build/dist
|
||||
lib/build/grunt-aws.json
|
||||
lib/build/app_config.js
|
||||
lib/build/.grunt/**/*
|
||||
rubygems
|
||||
vendor/bundle/*
|
||||
vendor/cache/*
|
||||
.vagrant
|
||||
Vagrantfile
|
||||
/node_modules
|
||||
.grunt/*
|
||||
vendor/assets/javascripts/cartodb.*
|
||||
vendor/assets/stylesheets/cartodb.*
|
||||
# cartodb.css is generated by update_cdb make task and is
|
||||
# used in cartodb/cartodb/app/views/layouts/application.html.erb
|
||||
!vendor/assets/stylesheets/cartodb.css
|
||||
# carto-node dist file. This is generated by webpack.
|
||||
# It will be removed when using carto-node as an external dependency.
|
||||
vendor/assets/javascripts/carto-node/
|
||||
public/test_support.csv
|
||||
public/test_guess_country.csv
|
||||
doc/manual/build
|
||||
.gem/
|
||||
.byebug_history
|
||||
/tags
|
||||
/.tags_swap
|
||||
.vscode/
|
||||
/private_gears
|
||||
/dist
|
||||
yarn.lock
|
||||
public/static.tar.gz
|
||||
compilation-stats.json
|
||||
npm-debug.log.*
|
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "lib/sql"]
|
||||
path = lib/sql
|
||||
url = https://git.spacen.net/cartodb4/cartodb-postgresql.git
|
12
.hound.yml
Normal file
@ -0,0 +1,12 @@
|
||||
scss:
|
||||
enabled: false
|
||||
jshint:
|
||||
enabled: false
|
||||
rubocop:
|
||||
config_file: .rubocop.yml
|
||||
version: 0.71.0
|
||||
eslint:
|
||||
enabled: true
|
||||
config_file: .eslintrc.json
|
||||
ignore_file: .eslintignore
|
||||
version: 5.16.0
|
4
.rspec_ci
Normal file
@ -0,0 +1,4 @@
|
||||
--colour
|
||||
--require ci/reporter/rake/rspec_loader
|
||||
--format CI::Reporter::RSpec
|
||||
--format documentation
|
682
.rubocop.yml
Normal file
@ -0,0 +1,682 @@
|
||||
AllCops:
|
||||
TargetRubyVersion: 2.4
|
||||
Include:
|
||||
- "**/*.gemspec"
|
||||
- "**/*.podspec"
|
||||
- "**/*.jbuilder"
|
||||
- "**/*.rake"
|
||||
- "**/*.opal"
|
||||
- "**/Gemfile"
|
||||
- "**/Rakefile"
|
||||
- "**/Capfile"
|
||||
- "**/Guardfile"
|
||||
- "**/Podfile"
|
||||
- "**/Thorfile"
|
||||
- "**/Vagrantfile"
|
||||
- "**/Berksfile"
|
||||
- "**/Cheffile"
|
||||
- "**/Vagabondfile"
|
||||
Exclude:
|
||||
- "vendor/**/*"
|
||||
- "db/schema.rb"
|
||||
- "bin"
|
||||
- "coverage"
|
||||
- "doc"
|
||||
- "engines"
|
||||
- "lib/assets"
|
||||
- "lib/build"
|
||||
- "log"
|
||||
- "node_modules"
|
||||
- "public"
|
||||
- "script"
|
||||
- "tmp"
|
||||
- "vendor"
|
||||
DisplayCopNames: false
|
||||
StyleGuideCopsOnly: false
|
||||
|
||||
#
|
||||
# Layout config
|
||||
#
|
||||
|
||||
|
||||
Layout/AccessModifierIndentation:
|
||||
Enabled: true
|
||||
EnforcedStyle: indent
|
||||
|
||||
Layout/AlignHash:
|
||||
Enabled: true
|
||||
EnforcedHashRocketStyle: key
|
||||
EnforcedColonStyle: key
|
||||
EnforcedLastArgumentHashStyle: always_inspect
|
||||
|
||||
Layout/AlignParameters:
|
||||
Enabled: true
|
||||
EnforcedStyle: with_first_parameter
|
||||
|
||||
Layout/CaseIndentation:
|
||||
Enabled: true
|
||||
EnforcedStyle: case
|
||||
IndentOneStep: false
|
||||
|
||||
Layout/EmptyLineBetweenDefs:
|
||||
Enabled: true
|
||||
AllowAdjacentOneLineDefs: false
|
||||
|
||||
Layout/EmptyLinesAroundModuleBody:
|
||||
Enabled: true
|
||||
EnforcedStyle: no_empty_lines
|
||||
|
||||
Layout/ExtraSpacing:
|
||||
Enabled: true
|
||||
|
||||
Layout/IndentFirstArgument:
|
||||
Enabled: true
|
||||
EnforcedStyle: special_for_inner_method_call_in_parentheses
|
||||
|
||||
Layout/IndentationWidth:
|
||||
Enabled: true
|
||||
Width: 2
|
||||
|
||||
Layout/IndentFirstHashElement:
|
||||
Description: Checks the indentation of the first key in a hash literal.
|
||||
Enabled: true
|
||||
EnforcedStyle: special_inside_parentheses
|
||||
SupportedStyles:
|
||||
- special_inside_parentheses
|
||||
- consistent
|
||||
|
||||
Layout/MultilineOperationIndentation:
|
||||
Enabled: true
|
||||
EnforcedStyle: aligned
|
||||
|
||||
Layout/SpaceAroundBlockParameters:
|
||||
Enabled: true
|
||||
EnforcedStyleInsidePipes: no_space
|
||||
|
||||
Layout/SpaceAroundEqualsInParameterDefault:
|
||||
Enabled: true
|
||||
EnforcedStyle: space
|
||||
|
||||
Layout/SpaceBeforeBlockBraces:
|
||||
Enabled: true
|
||||
EnforcedStyle: space
|
||||
|
||||
Layout/SpaceInsideBlockBraces:
|
||||
Enabled: true
|
||||
EnforcedStyle: space
|
||||
EnforcedStyleForEmptyBraces: no_space
|
||||
SpaceBeforeBlockParameters: true
|
||||
|
||||
Layout/SpaceInsideHashLiteralBraces:
|
||||
Enabled: true
|
||||
EnforcedStyle: space
|
||||
EnforcedStyleForEmptyBraces: no_space
|
||||
|
||||
Layout/TrailingBlankLines:
|
||||
Enabled: true
|
||||
EnforcedStyle: final_newline
|
||||
|
||||
Layout/AlignArray:
|
||||
Enabled: true
|
||||
|
||||
Layout/BlockEndNewline:
|
||||
Enabled: true
|
||||
|
||||
Layout/CommentIndentation:
|
||||
Enabled: true
|
||||
|
||||
Layout/ElseAlignment:
|
||||
Enabled: true
|
||||
|
||||
Layout/EmptyLines:
|
||||
Enabled: true
|
||||
|
||||
Layout/EmptyLinesAroundAccessModifier:
|
||||
Enabled: true
|
||||
|
||||
Layout/EmptyLinesAroundMethodBody:
|
||||
Enabled: true
|
||||
|
||||
Layout/EndOfLine:
|
||||
Enabled: true
|
||||
|
||||
Layout/IndentationConsistency:
|
||||
Enabled: true
|
||||
|
||||
Layout/IndentFirstArrayElement:
|
||||
Enabled: true
|
||||
|
||||
Layout/LeadingCommentSpace:
|
||||
Enabled: true
|
||||
|
||||
Layout/MultilineBlockLayout:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceBeforeFirstArg:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceAfterColon:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceAfterComma:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceAroundKeyword:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceAfterMethodName:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceAfterNot:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceAfterSemicolon:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceBeforeComma:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceBeforeComment:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceBeforeSemicolon:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceAroundOperators:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceInsideBrackets:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceInsideParens:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceInsideRangeLiteral:
|
||||
Enabled: true
|
||||
|
||||
Layout/Tab:
|
||||
Enabled: true
|
||||
|
||||
Layout/TrailingWhitespace:
|
||||
Enabled: true
|
||||
|
||||
Layout/SpaceBeforeFirstArg:
|
||||
Enabled: true
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Style config
|
||||
#
|
||||
|
||||
Style/AndOr:
|
||||
Enabled: true
|
||||
EnforcedStyle: always
|
||||
|
||||
Style/BarePercentLiterals:
|
||||
Enabled: true
|
||||
EnforcedStyle: bare_percent
|
||||
|
||||
Style/BracesAroundHashParameters:
|
||||
Enabled: true
|
||||
EnforcedStyle: no_braces
|
||||
|
||||
Style/ClassCheck:
|
||||
Enabled: true
|
||||
EnforcedStyle: is_a?
|
||||
|
||||
Style/CollectionMethods:
|
||||
Enabled: true
|
||||
PreferredMethods:
|
||||
collect: map
|
||||
collect!: map!
|
||||
inject: reduce
|
||||
detect: find
|
||||
find_all: select
|
||||
|
||||
Style/For:
|
||||
Enabled: true
|
||||
EnforcedStyle: each
|
||||
|
||||
Style/HashSyntax:
|
||||
Enabled: true
|
||||
EnforcedStyle: ruby19
|
||||
|
||||
Style/NonNilCheck:
|
||||
Enabled: true
|
||||
IncludeSemanticChanges: false
|
||||
|
||||
Style/MethodDefParentheses:
|
||||
Enabled: true
|
||||
EnforcedStyle: require_parentheses
|
||||
|
||||
Naming/MethodName:
|
||||
Enabled: true
|
||||
EnforcedStyle: snake_case
|
||||
|
||||
Style/ParenthesesAroundCondition:
|
||||
Enabled: true
|
||||
AllowSafeAssignment: true
|
||||
|
||||
Style/PercentQLiterals:
|
||||
Enabled: true
|
||||
EnforcedStyle: lower_case_q
|
||||
|
||||
Naming/PredicateName:
|
||||
Enabled: true
|
||||
|
||||
Style/RedundantReturn:
|
||||
Enabled: true
|
||||
AllowMultipleReturnValues: false
|
||||
|
||||
Style/Semicolon:
|
||||
Enabled: true
|
||||
AllowAsExpressionSeparator: false
|
||||
|
||||
Style/StringLiteralsInInterpolation:
|
||||
Enabled: true
|
||||
EnforcedStyle: single_quotes
|
||||
|
||||
Style/SymbolProc:
|
||||
Enabled: true
|
||||
IgnoredMethods:
|
||||
- respond_to
|
||||
|
||||
Style/TrailingCommaInArguments:
|
||||
Enabled: true
|
||||
EnforcedStyleForMultiline: no_comma
|
||||
|
||||
Style/TrailingCommaInArrayLiteral:
|
||||
Enabled: true
|
||||
EnforcedStyleForMultiline: no_comma
|
||||
|
||||
Style/TrailingCommaInHashLiteral:
|
||||
Enabled: true
|
||||
EnforcedStyleForMultiline: no_comma
|
||||
|
||||
Naming/VariableName:
|
||||
Enabled: true
|
||||
EnforcedStyle: snake_case
|
||||
|
||||
Style/BeginBlock:
|
||||
Enabled: true
|
||||
|
||||
Style/BlockComments:
|
||||
Enabled: true
|
||||
|
||||
Style/BlockDelimiters:
|
||||
Enabled: true
|
||||
EnforcedStyle: braces_for_chaining
|
||||
|
||||
Naming/ClassAndModuleCamelCase:
|
||||
Enabled: true
|
||||
|
||||
Style/ClassMethods:
|
||||
Enabled: true
|
||||
|
||||
Naming/ConstantName:
|
||||
Enabled: true
|
||||
|
||||
Style/DefWithParentheses:
|
||||
Enabled: true
|
||||
|
||||
Style/EmptyElse:
|
||||
Enabled: true
|
||||
|
||||
Style/EndBlock:
|
||||
Enabled: true
|
||||
|
||||
Style/InfiniteLoop:
|
||||
Enabled: true
|
||||
|
||||
Style/MethodCallWithoutArgsParentheses:
|
||||
Enabled: true
|
||||
|
||||
Style/MultilineBlockChain:
|
||||
Enabled: true
|
||||
|
||||
Style/MultilineIfThen:
|
||||
Enabled: true
|
||||
|
||||
Style/MultilineTernaryOperator:
|
||||
Enabled: true
|
||||
|
||||
Style/NestedTernaryOperator:
|
||||
Enabled: true
|
||||
|
||||
Style/RedundantBegin:
|
||||
Enabled: true
|
||||
|
||||
Style/RedundantException:
|
||||
Enabled: true
|
||||
|
||||
Style/RedundantSelf:
|
||||
Enabled: true
|
||||
|
||||
Style/RescueModifier:
|
||||
Enabled: true
|
||||
|
||||
Style/StructInheritance:
|
||||
Enabled: true
|
||||
|
||||
Style/UnlessElse:
|
||||
Enabled: true
|
||||
|
||||
Style/UnneededCapitalW:
|
||||
Enabled: true
|
||||
|
||||
Style/UnneededPercentQ:
|
||||
Enabled: true
|
||||
|
||||
Style/WhileUntilDo:
|
||||
Enabled: true
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Metrics cops
|
||||
#
|
||||
|
||||
Metrics/AbcSize:
|
||||
Enabled: true
|
||||
Max: 35
|
||||
|
||||
Metrics/LineLength:
|
||||
Enabled: true
|
||||
Max: 120
|
||||
AllowURI: true
|
||||
URISchemes:
|
||||
- http
|
||||
- https
|
||||
|
||||
Metrics/BlockLength:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- spec/**/*
|
||||
|
||||
|
||||
#
|
||||
# Lint cops
|
||||
#
|
||||
|
||||
Layout/EndAlignment:
|
||||
Enabled: true
|
||||
EnforcedStyleAlignWith: keyword
|
||||
|
||||
Layout/DefEndAlignment:
|
||||
Enabled: true
|
||||
EnforcedStyleAlignWith: start_of_line
|
||||
|
||||
Lint/RescueException:
|
||||
Enabled: true
|
||||
|
||||
Lint/ShadowingOuterLocalVariable:
|
||||
Enabled: true
|
||||
|
||||
Lint/StringConversionInInterpolation:
|
||||
Enabled: true
|
||||
|
||||
Lint/UnusedBlockArgument:
|
||||
Enabled: true
|
||||
|
||||
Lint/UnusedMethodArgument:
|
||||
Enabled: true
|
||||
|
||||
Lint/UnreachableCode:
|
||||
Enabled: true
|
||||
|
||||
Lint/UselessAccessModifier:
|
||||
Enabled: true
|
||||
|
||||
Lint/UselessAssignment:
|
||||
Enabled: true
|
||||
|
||||
Lint/UselessComparison:
|
||||
Enabled: true
|
||||
|
||||
Lint/UselessElseWithoutRescue:
|
||||
Enabled: true
|
||||
|
||||
Lint/UselessSetterCall:
|
||||
Enabled: true
|
||||
|
||||
Layout/BlockAlignment:
|
||||
Enabled: true
|
||||
|
||||
Lint/Debugger:
|
||||
Enabled: true
|
||||
|
||||
Lint/DuplicateMethods:
|
||||
Enabled: true
|
||||
|
||||
Lint/EmptyEnsure:
|
||||
Enabled: true
|
||||
|
||||
Lint/EmptyInterpolation:
|
||||
Enabled: true
|
||||
|
||||
Lint/EndInMethod:
|
||||
Enabled: true
|
||||
|
||||
Lint/EnsureReturn:
|
||||
Enabled: true
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Rails cops
|
||||
#
|
||||
|
||||
Rails/HasAndBelongsToMany:
|
||||
Enabled: true
|
||||
Include:
|
||||
- app/models/**/*.rb
|
||||
|
||||
Rails/Output:
|
||||
Enabled: true
|
||||
Include:
|
||||
- app/**/*.rb
|
||||
- config/**/*.rb
|
||||
- db/**/*.rb
|
||||
- lib/**/*.rb
|
||||
|
||||
Rails/ReadWriteAttribute:
|
||||
Enabled: true
|
||||
Include:
|
||||
- app/models/**/*.rb
|
||||
|
||||
Rails/ScopeArgs:
|
||||
Enabled: true
|
||||
Include:
|
||||
- app/models/**/*.rb
|
||||
|
||||
Rails/Validation:
|
||||
Enabled: true
|
||||
Include:
|
||||
- app/models/**/*.rb
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Security cops
|
||||
#
|
||||
|
||||
Security/Eval:
|
||||
Description: The use of eval represents a serious security risk.
|
||||
Enabled: true
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Disabled cops
|
||||
#
|
||||
|
||||
Layout/DotPosition:
|
||||
Enabled: false
|
||||
Layout/EmptyLinesAroundBlockBody:
|
||||
Enabled: false
|
||||
Layout/EmptyLinesAroundClassBody:
|
||||
Enabled: false
|
||||
Style/ClassAndModuleChildren:
|
||||
Enabled: false
|
||||
Style/CommentAnnotation:
|
||||
Enabled: false
|
||||
Style/Encoding:
|
||||
Enabled: false
|
||||
Naming/FileName:
|
||||
Enabled: false
|
||||
Style/FormatString:
|
||||
Enabled: false
|
||||
Style/GlobalVars:
|
||||
Enabled: false
|
||||
Style/GuardClause:
|
||||
Enabled: false
|
||||
Style/IfUnlessModifier:
|
||||
Enabled: false
|
||||
Style/LambdaCall:
|
||||
Enabled: false
|
||||
Style/Next:
|
||||
Enabled: false
|
||||
Style/NumericLiterals:
|
||||
Enabled: false
|
||||
Style/PercentLiteralDelimiters:
|
||||
Enabled: false
|
||||
Style/RaiseArgs:
|
||||
Enabled: false
|
||||
Style/RegexpLiteral:
|
||||
Enabled: false
|
||||
Style/SignalException:
|
||||
Enabled: false
|
||||
Style/SingleLineBlockParams:
|
||||
Enabled: false
|
||||
Style/SingleLineMethods:
|
||||
Enabled: false
|
||||
Style/StringLiterals:
|
||||
Enabled: false
|
||||
Style/TrivialAccessors:
|
||||
Enabled: false
|
||||
Style/WhileUntilModifier:
|
||||
Enabled: false
|
||||
Style/WordArray:
|
||||
Enabled: false
|
||||
Style/InlineComment:
|
||||
Enabled: false
|
||||
Style/MethodCalledOnDoEndBlock:
|
||||
Enabled: false
|
||||
Style/SymbolArray:
|
||||
Enabled: false
|
||||
Naming/AccessorMethodName:
|
||||
Enabled: false
|
||||
Style/Alias:
|
||||
Enabled: false
|
||||
Style/ArrayJoin:
|
||||
Enabled: false
|
||||
Style/AsciiComments:
|
||||
Enabled: false
|
||||
Naming/AsciiIdentifiers:
|
||||
Enabled: false
|
||||
Style/Attr:
|
||||
Enabled: false
|
||||
Style/CaseEquality:
|
||||
Enabled: false
|
||||
Style/CharacterLiteral:
|
||||
Enabled: false
|
||||
Style/ClassVars:
|
||||
Enabled: false
|
||||
Style/ColonMethodCall:
|
||||
Enabled: false
|
||||
Style/PreferredHashMethods:
|
||||
Enabled: false
|
||||
Style/Documentation:
|
||||
Enabled: false
|
||||
Style/DoubleNegation:
|
||||
Enabled: false
|
||||
Style/EachWithObject:
|
||||
Enabled: false
|
||||
Style/EmptyLiteral:
|
||||
Enabled: false
|
||||
Style/EvenOdd:
|
||||
Enabled: false
|
||||
Style/FlipFlop:
|
||||
Enabled: false
|
||||
Style/IfWithSemicolon:
|
||||
Enabled: false
|
||||
Style/Lambda:
|
||||
Enabled: false
|
||||
Style/LineEndConcatenation:
|
||||
Enabled: false
|
||||
Style/ModuleFunction:
|
||||
Enabled: false
|
||||
Style/NegatedIf:
|
||||
Enabled: false
|
||||
Style/NegatedWhile:
|
||||
Enabled: false
|
||||
Style/NilComparison:
|
||||
Enabled: false
|
||||
Style/Not:
|
||||
Enabled: false
|
||||
Style/OneLineConditional:
|
||||
Enabled: false
|
||||
Naming/BinaryOperatorParameterName:
|
||||
Enabled: false
|
||||
Style/PerlBackrefs:
|
||||
Enabled: false
|
||||
Style/Proc:
|
||||
Enabled: false
|
||||
Style/SelfAssignment:
|
||||
Enabled: false
|
||||
Style/SpecialGlobalVars:
|
||||
Enabled: false
|
||||
Style/VariableInterpolation:
|
||||
Enabled: false
|
||||
Style/WhenThen:
|
||||
Enabled: false
|
||||
Style/FrozenStringLiteralComment:
|
||||
Enabled: false
|
||||
Metrics/BlockNesting:
|
||||
Enabled: false
|
||||
Metrics/ClassLength:
|
||||
Enabled: false
|
||||
Metrics/CyclomaticComplexity:
|
||||
Enabled: false
|
||||
Metrics/MethodLength:
|
||||
Enabled: false
|
||||
Metrics/ModuleLength:
|
||||
Enabled: false
|
||||
Metrics/ParameterLists:
|
||||
Enabled: false
|
||||
Metrics/PerceivedComplexity:
|
||||
Enabled: false
|
||||
Lint/AssignmentInCondition:
|
||||
Enabled: false
|
||||
Lint/AmbiguousOperator:
|
||||
Enabled: false
|
||||
Lint/AmbiguousRegexpLiteral:
|
||||
Enabled: false
|
||||
Layout/ConditionPosition:
|
||||
Enabled: false
|
||||
Lint/DeprecatedClassMethods:
|
||||
Enabled: false
|
||||
Lint/ElseLayout:
|
||||
Enabled: false
|
||||
Lint/HandleExceptions:
|
||||
Enabled: false
|
||||
Lint/LiteralInCondition:
|
||||
Enabled: false
|
||||
Lint/LiteralInInterpolation:
|
||||
Enabled: false
|
||||
Lint/Loop:
|
||||
Enabled: false
|
||||
Lint/ParenthesesAsGroupedExpression:
|
||||
Enabled: false
|
||||
Lint/RequireParentheses:
|
||||
Enabled: false
|
||||
Lint/UnderscorePrefixedVariableName:
|
||||
Enabled: false
|
||||
Lint/Void:
|
||||
Enabled: false
|
||||
Rails/ActionFilter:
|
||||
Enabled: false
|
||||
Rails/Delegate:
|
||||
Enabled: false
|
29
.stylelintrc
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"extends": [
|
||||
"stylelint-config-standard",
|
||||
"stylelint-config-property-sort-order-smacss"
|
||||
],
|
||||
"ignoreFiles": [
|
||||
"app/assets/stylesheets/old_common/**/*.css.scss",
|
||||
"app/assets/stylesheets/table/table_panel/layer-views-panels/filters_panel.css.scss",
|
||||
"app/assets/stylesheets/embed/embed_map.css.scss",
|
||||
"app/assets/stylesheets/editor-3/codemirror.css.scss",
|
||||
"app/assets/stylesheets/editor-3/_codemirror.scss",
|
||||
"app/assets/stylesheets/editor-3/form-tags.css.scss"
|
||||
],
|
||||
"rules": {
|
||||
"selector-pseudo-element-colon-notation": "double",
|
||||
"color-hex-case": "upper",
|
||||
"at-rule-no-unknown": [true, {
|
||||
"ignoreAtRules": ["extend", "at-root", "debug", "warn", "error", "if", "else", "for", "each", "while", "mixin", "include", "content", "return", "function"
|
||||
]}
|
||||
],
|
||||
"function-name-case": [ "lower", {
|
||||
"ignoreFunctions": ["/^DXImageTransform.Microsoft.*$/"]
|
||||
}],
|
||||
"declaration-empty-line-before": null,
|
||||
"block-no-empty": true,
|
||||
"shorthand-property-no-redundant-values": true,
|
||||
"declaration-block-no-redundant-longhand-properties": null
|
||||
}
|
||||
}
|
20
.travis.yml
Normal file
@ -0,0 +1,20 @@
|
||||
language: node_js
|
||||
dist: trusty
|
||||
addons:
|
||||
chrome: stable
|
||||
notifications:
|
||||
email:
|
||||
on_success: never
|
||||
on_failure: change
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- node_js:
|
||||
- "10"
|
||||
before_install:
|
||||
- git submodule update --init --recursive
|
||||
- git fetch origin master:refs/remotes/origin/master --depth=1
|
||||
install:
|
||||
- npm ci # clean install
|
||||
script:
|
||||
- npm run ci # run tests
|
111
CONTRIBUTING.md
Normal file
@ -0,0 +1,111 @@
|
||||
The development tracker for CartoDB is on GitHub:
|
||||
http://github.com/cartodb/cartodb
|
||||
|
||||
Bug fixes are best reported as pull requests over there.
|
||||
Features are best discussed on the mailing list:
|
||||
https://groups.google.com/d/forum/cartodb
|
||||
|
||||
---
|
||||
|
||||
1. [General](#general)
|
||||
2. [Documentation](#documentation)
|
||||
3. [Frontend](#frontend)
|
||||
4. [Submitting contributions](#submitting-contributions)
|
||||
|
||||
---
|
||||
|
||||
# General
|
||||
|
||||
Every new feature (as well as bugfixes) should come with a test case. Depending on context different guidelines might
|
||||
apply, see following sections.
|
||||
|
||||
Unless you plan to develop frontend code you can serve assets from our CDN instead, make sure the following is set in
|
||||
the `config/app_config.yml`:
|
||||
|
||||
```ruby
|
||||
app_assets:
|
||||
asset_host: '//cartodb-libs.global.ssl.fastly.net/cartodbui'
|
||||
```
|
||||
|
||||
Even if you're using CDN assets you still need to run `npm run build:static`.
|
||||
|
||||
_Don't forget to restart Rails after you have modified `config/app_config.yml`._
|
||||
|
||||
# Documentation
|
||||
|
||||
Documentation that don't fit well inline (e.g. high-level stuff) should be placed in the [/doc directory](doc/README.md).
|
||||
|
||||
# Frontend
|
||||
|
||||
The frontend is really standalone code, but is integrated with/served by the Rails application.
|
||||
|
||||
See [doc/frontend/README.md](doc/frontend/README.md) for more in-depth documentation.
|
||||
|
||||
# Backend
|
||||
|
||||
Backend is a Rails 3 application, there's no specific workflow you must follow to run it.
|
||||
|
||||
Every PR should be covered by tests. If you create a new file please add it to `Makefiles`. Useful commands:
|
||||
- `make check`: prepare the test database and run the full suite (takes a while).
|
||||
- `make prepare-test-db`: prepare the test database.
|
||||
- `bundle exec rspec <spec file>`: run a spec.
|
||||
- `bundle exec rspec <spec file>:<line number>`: run an specific test.
|
||||
|
||||
Once a new Pull Request is started,
|
||||
[Hound](https://houndci.com/) application will check code style and you should fix them as much as possible (with common sense, no need to honor _every_ rule but now most of them are actually useful to make code more readable).
|
||||
|
||||
## Submitting contributions
|
||||
|
||||
Before opening a pull request (or submitting a contribution) you will need to sign a Contributor License Agreement (CLA) before making a submission, [learn more here](https://carto.com/contributions).
|
||||
|
||||
After that, there are several rules you should follow when a new pull request is created:
|
||||
|
||||
- Title has to be descriptive. If you are fixing a bug don't use the ticket title or number.
|
||||
- Explain what you have achieved in the description and choose a reviewer (it has to be a CartoDB team member) of your code. If you have doubts, just ask for one.
|
||||
- If you change something related with the UI of the application:
|
||||
- Add an image or an animation ([LiceCap](https://github.com/lepht/licecap) is your friend) about the feature you have just implemented. Or show the change against what it is already done.
|
||||
- Change UI assets version, present in [package.json](package.json) file. Minor if it is a bugfixing or a small feature, major when it is a big change.
|
||||
- Our linter machine, [Hound](https://houndci.com/), should not trigger any warnings about your changes.
|
||||
- All tests should pass, both for JS and Ruby.
|
||||
|
||||
## Development environment accessories
|
||||
|
||||
The development environment can be quite slow to start up, but we have some workarounds that help speed it up:
|
||||
- Using Zeus to avoid the load times of the Rails environment by keeping it into memory. It provides a very fast
|
||||
execution of rails commands.
|
||||
- Using Stellar (database snapshotting tool) in order to quickly reload the test database. This is also useful
|
||||
while testing code, in order to quickly rollback to a previous DB state.
|
||||
|
||||
### Zeus
|
||||
|
||||
1. Install zeus globally with `gem install zeus`. This is recommended but not needed. You can also use `bundle exec zeus`, which is a bit slower.
|
||||
2. Start the zeus server. `zeus start`. This will start preloading the environments. and display a colorful status.
|
||||
3. In a different console, run your rails commands prefixed by zeus. For example: `zeus c` for console,
|
||||
`zeus rspec xxx` for testing. Run `zeus commands` for a full list (or check `zeus.json`).
|
||||
|
||||
Notes:
|
||||
- If you want to pass ENV variables, pass them to the `zeus start` process (master), not to the slaves.
|
||||
- When testing, you can run `TURBO=1 zeus start` to enable some extra optimizations for the testing environment
|
||||
(less database cleaning).
|
||||
- If your console breaks after running zeus, add something like `zeus() { /usr/bin/zeus "$@"; stty sane; }` to `.bashrc`.
|
||||
- If using Vagrant and getting errors, check out [zeus docs](https://github.com/burke/zeus/wiki/Using-with-vagrant).
|
||||
Basically, you have to run with `ZEUSSOCK=/tmp/zeus.sock` as an environment variable.
|
||||
|
||||
### Stellar
|
||||
|
||||
1. Install stellar. Check your distribution packages, or install with pip: `pip install stellar`
|
||||
2. Create a configuration file by running `stellar init` and following the steps. The connection string is: `postgresql://postgres@localhost/carto_db_test`. The project name doesn't matter.
|
||||
3. Create a clean testing database `make prepare-test-db`
|
||||
4. Create a snapshot: `stellar snapshot`
|
||||
|
||||
Then to use it for testing, you can pass `STELLAR=stellar` (you can pass the executable path) as an ENV variable and the
|
||||
testing environment will use it to clean up the database (instead of manually truncating tables).
|
||||
|
||||
#### For development
|
||||
|
||||
Stellar can also be useful for development, to quickly restore the database to its original configuration. Just create
|
||||
a different configuration (by going to a different directory, stellar always reads `stellar.yaml` in the current path)
|
||||
for the development environment.
|
||||
|
||||
Then, you can use `stellar snapshot` and `stellar restore` to take and restore snapshot quickly. Also check
|
||||
`stellar list` to list current db snapshots and `stellar gc` to remove old ones.
|
138
Gemfile
Normal file
@ -0,0 +1,138 @@
|
||||
source 'http://rubygems.org'
|
||||
|
||||
gem 'rails', '4.2.11'
|
||||
|
||||
gem 'rake', '0.9.2.2'
|
||||
|
||||
# PostgreSQL
|
||||
gem 'pg', '0.20.0'
|
||||
gem 'sequel', '~> 4.45.0'
|
||||
gem 'sequel-rails', '~> 1.0.1'
|
||||
gem 'sequel_pg', '~> 1.12.0', require: 'sequel'
|
||||
|
||||
gem 'activerecord-postgresql-adapter'
|
||||
|
||||
gem 'protected_attributes'
|
||||
gem 'responders', '~> 2.0'
|
||||
|
||||
gem 'rails_warden', '0.5.8' # Auth via the Warden Rack framework
|
||||
gem 'ruby-saml', '1.4.1'
|
||||
gem 'oauth', '0.4.7'
|
||||
gem 'oauth-plugin', git: 'https://github.com/CartoDB/oauth-plugin.git', :branch => 'cartodb'
|
||||
|
||||
# Redis
|
||||
gem 'hiredis', '~> 0.6.1'
|
||||
gem 'redis', '~> 3.3.5'
|
||||
|
||||
gem 'nokogiri', '~> 1.8.2'
|
||||
gem 'statsd-client', '0.0.7', require: 'statsd'
|
||||
gem 'aws-sdk-s3', '~> 1'
|
||||
gem 'ruby-prof', '0.15.1'
|
||||
gem 'request_store', '1.1.0'
|
||||
|
||||
# It's used in the dataimport and arcgis.
|
||||
# It's a replacement for the ruby uri that it's supposed to perform better parsing of a URI
|
||||
gem 'addressable', '~> 2.5', require: 'addressable/uri'
|
||||
|
||||
gem 'ejs', '~> 1.1.1'
|
||||
gem 'execjs', '~> 0.4' # Required by ejs
|
||||
|
||||
gem 'net-ldap', '0.16.0'
|
||||
gem 'json-schema', '2.1.9'
|
||||
|
||||
gem 'mime-types', '3.1'
|
||||
|
||||
group :production, :staging do
|
||||
gem 'unicorn', '4.8.2'
|
||||
gem 'unicorn-worker-killer'
|
||||
gem 'raindrops', '0.15.0'
|
||||
end
|
||||
|
||||
group :assets do
|
||||
gem "compass", "1.0.3"
|
||||
end
|
||||
|
||||
# Importer & sync tables
|
||||
gem 'roo', '1.13.2'
|
||||
gem 'state_machines-activerecord', '~> 0.5.0'
|
||||
gem 'typhoeus', '0.7.2'
|
||||
gem 'charlock_holmes', '0.7.6'
|
||||
gem 'dbf', '2.0.6'
|
||||
gem 'faraday', '0.9.0'
|
||||
gem 'google-api-client', '0.28.4'
|
||||
gem 'dropbox_api', '0.1.6'
|
||||
gem 'instagram', '1.1.6'
|
||||
gem 'gibbon', '1.1.4'
|
||||
|
||||
# Service components (/services)
|
||||
gem 'virtus', '1.0.5'
|
||||
gem 'uuidtools', '2.1.5'
|
||||
gem 'cartodb-common', git: 'https://github.com/cartodb/cartodb-common.git', branch: 'master'
|
||||
gem 'email_address', '~> 0.1.11'
|
||||
|
||||
# Markdown
|
||||
gem 'redcarpet', '3.3.3'
|
||||
|
||||
# TODO Production gems, put them in :production group
|
||||
gem 'rollbar', '~>2.11.1'
|
||||
gem 'resque', '1.25.2'
|
||||
gem 'resque-metrics', '0.1.1'
|
||||
|
||||
gem 'net-telnet'
|
||||
|
||||
# This is weird. In ruby 2 test-unit is required. We don't know why for sure
|
||||
gem 'test-unit'
|
||||
|
||||
# Multifactor Authentication
|
||||
gem 'rotp', '~> 3.3', '>= 3.3.1'
|
||||
gem 'rqrcode', '~> 0.10.1'
|
||||
|
||||
group :test do
|
||||
gem 'simplecov', '0.13.0', require: false
|
||||
gem 'simplecov-json'
|
||||
gem 'simplecov-rcov'
|
||||
gem 'db-query-matchers', '0.4.0'
|
||||
gem 'rack-test', '0.6.3', require: 'rack/test'
|
||||
gem 'factory_girl_rails', '~> 4.0.0'
|
||||
gem 'selenium-webdriver', '>= 2.5.0'
|
||||
gem 'capybara', '1.1.2'
|
||||
gem 'delorean'
|
||||
gem 'webrick', '1.3.1'
|
||||
gem 'mocha', '1.1.0'
|
||||
gem 'ci_reporter', '1.8.4'
|
||||
gem 'poltergeist', '>= 1.0.0'
|
||||
gem 'activerecord-nulldb-adapter', '0.3.1'
|
||||
# Need to use specific branch from this fork as original gem is broken and outdated
|
||||
gem 'fake_net_ldap', git: 'https://github.com/kuldeepaggarwal/fake_net_ldap.git', :branch => 'fix-responder'
|
||||
gem 'mock_redis'
|
||||
end
|
||||
|
||||
# Profiling
|
||||
gem 'rbtrace', '0.4.8'
|
||||
group :test, :development do
|
||||
gem 'gc_tracer', '1.5.1'
|
||||
gem 'memory_profiler'
|
||||
end
|
||||
|
||||
group :development, :test do
|
||||
gem 'rspec-rails', '2.12.0'
|
||||
gem 'rb-readline'
|
||||
gem 'byebug'
|
||||
gem 'rack'
|
||||
gem 'zeus'
|
||||
|
||||
# Server
|
||||
gem 'thin', require: false
|
||||
end
|
||||
|
||||
# segment metrics
|
||||
gem 'analytics-ruby', '~> 2.0.0', :require => 'segment/analytics'
|
||||
|
||||
# CARTO Gears engines
|
||||
require File.dirname(__FILE__) + '/lib/carto/carto_gears_support'
|
||||
|
||||
Carto::CartoGearsSupport.new.gears.each do |gear|
|
||||
gear.gemspec.runtime_dependencies.each do |dependency|
|
||||
gem dependency.name, dependency.requirements_list
|
||||
end
|
||||
end
|
525
Gemfile.lock
Normal file
@ -0,0 +1,525 @@
|
||||
GIT
|
||||
remote: https://github.com/CartoDB/oauth-plugin.git
|
||||
revision: f7b7137bb9b502a9ffeb30a562dd070a116b1d86
|
||||
branch: cartodb
|
||||
specs:
|
||||
oauth-plugin (0.4.0.pre4)
|
||||
oauth (>= 0.4.4)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/cartodb/cartodb-common.git
|
||||
revision: e445c66023bfe83fcd62878ec0f3f37909156e01
|
||||
branch: master
|
||||
specs:
|
||||
cartodb-common (0.1.0)
|
||||
argon2 (~> 2.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/kuldeepaggarwal/fake_net_ldap.git
|
||||
revision: d99f2fcf13b9737a150f869fe9b9fbc0d788aa3f
|
||||
branch: fix-responder
|
||||
specs:
|
||||
fake_net_ldap (0.0.1)
|
||||
net-ldap
|
||||
|
||||
GEM
|
||||
remote: http://rubygems.org/
|
||||
specs:
|
||||
actionmailer (4.2.11)
|
||||
actionpack (= 4.2.11)
|
||||
actionview (= 4.2.11)
|
||||
activejob (= 4.2.11)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
actionpack (4.2.11)
|
||||
actionview (= 4.2.11)
|
||||
activesupport (= 4.2.11)
|
||||
rack (~> 1.6)
|
||||
rack-test (~> 0.6.2)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
actionview (4.2.11)
|
||||
activesupport (= 4.2.11)
|
||||
builder (~> 3.1)
|
||||
erubis (~> 2.7.0)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
||||
activejob (4.2.11)
|
||||
activesupport (= 4.2.11)
|
||||
globalid (>= 0.3.0)
|
||||
activemodel (4.2.11)
|
||||
activesupport (= 4.2.11)
|
||||
builder (~> 3.1)
|
||||
activerecord (4.2.11)
|
||||
activemodel (= 4.2.11)
|
||||
activesupport (= 4.2.11)
|
||||
arel (~> 6.0)
|
||||
activerecord-nulldb-adapter (0.3.1)
|
||||
activerecord (>= 2.0.0)
|
||||
activerecord-postgresql-adapter (0.0.1)
|
||||
pg
|
||||
activesupport (4.2.11)
|
||||
i18n (~> 0.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
addressable (2.6.0)
|
||||
public_suffix (>= 2.0.2, < 4.0)
|
||||
analytics-ruby (2.0.13)
|
||||
arel (6.0.4)
|
||||
argon2 (2.0.2)
|
||||
ffi (~> 1.9)
|
||||
ffi-compiler (>= 0.1)
|
||||
aws-partitions (1.77.0)
|
||||
aws-sdk-core (3.19.0)
|
||||
aws-partitions (~> 1.0)
|
||||
aws-sigv4 (~> 1.0)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.5.0)
|
||||
aws-sdk-core (~> 3)
|
||||
aws-sigv4 (~> 1.0)
|
||||
aws-sdk-s3 (1.9.0)
|
||||
aws-sdk-core (~> 3)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.0)
|
||||
aws-sigv4 (1.0.2)
|
||||
axiom-types (0.1.1)
|
||||
descendants_tracker (~> 0.0.4)
|
||||
ice_nine (~> 0.11.0)
|
||||
thread_safe (~> 0.3, >= 0.3.1)
|
||||
builder (3.2.3)
|
||||
byebug (8.2.2)
|
||||
capybara (1.1.2)
|
||||
mime-types (>= 1.16)
|
||||
nokogiri (>= 1.3.3)
|
||||
rack (>= 1.0.0)
|
||||
rack-test (>= 0.5.4)
|
||||
selenium-webdriver (~> 2.0)
|
||||
xpath (~> 0.1.4)
|
||||
charlock_holmes (0.7.6)
|
||||
childprocess (0.5.9)
|
||||
ffi (~> 1.0, >= 1.0.11)
|
||||
chronic (0.10.2)
|
||||
chunky_png (1.3.5)
|
||||
ci_reporter (1.8.4)
|
||||
builder (>= 2.1.2)
|
||||
coercible (1.0.0)
|
||||
descendants_tracker (~> 0.0.1)
|
||||
compass (1.0.3)
|
||||
chunky_png (~> 1.2)
|
||||
compass-core (~> 1.0.2)
|
||||
compass-import-once (~> 1.0.5)
|
||||
rb-fsevent (>= 0.9.3)
|
||||
rb-inotify (>= 0.9)
|
||||
sass (>= 3.3.13, < 3.5)
|
||||
compass-core (1.0.3)
|
||||
multi_json (~> 1.0)
|
||||
sass (>= 3.3.0, < 3.5)
|
||||
compass-import-once (1.0.5)
|
||||
sass (>= 3.2, < 3.5)
|
||||
concurrent-ruby (1.1.4)
|
||||
crass (1.0.4)
|
||||
daemons (1.3.1)
|
||||
db-query-matchers (0.4.0)
|
||||
dbf (2.0.6)
|
||||
fastercsv (~> 1.5.4)
|
||||
declarative (0.0.10)
|
||||
declarative-option (0.1.0)
|
||||
delorean (2.1.0)
|
||||
chronic
|
||||
descendants_tracker (0.0.4)
|
||||
thread_safe (~> 0.3, >= 0.3.1)
|
||||
diff-lcs (1.1.3)
|
||||
docile (1.1.5)
|
||||
dropbox_api (0.1.6)
|
||||
faraday (~> 0.9, ~> 0.8)
|
||||
oauth2 (~> 1.1)
|
||||
ejs (1.1.1)
|
||||
email_address (0.1.11)
|
||||
netaddr (~> 2.0)
|
||||
simpleidn
|
||||
equalizer (0.0.11)
|
||||
erubis (2.7.0)
|
||||
ethon (0.8.1)
|
||||
ffi (>= 1.3.0)
|
||||
eventmachine (1.2.7)
|
||||
execjs (0.4.0)
|
||||
multi_json (~> 1.0)
|
||||
factory_girl (4.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
factory_girl_rails (4.0.0)
|
||||
factory_girl (~> 4.0.0)
|
||||
railties (>= 3.0.0)
|
||||
faraday (0.9.0)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday_middleware (0.9.2)
|
||||
faraday (>= 0.7.4, < 0.10)
|
||||
fastercsv (1.5.5)
|
||||
faye-websocket (0.4.7)
|
||||
eventmachine (>= 0.12.0)
|
||||
ffi (1.9.25)
|
||||
ffi-compiler (1.0.1)
|
||||
ffi (>= 1.0.0)
|
||||
rake
|
||||
gc_tracer (1.5.1)
|
||||
get_process_mem (0.2.0)
|
||||
gibbon (1.1.4)
|
||||
httparty
|
||||
multi_json (>= 1.3.4)
|
||||
globalid (0.4.2)
|
||||
activesupport (>= 4.2.0)
|
||||
google-api-client (0.28.4)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (>= 0.5, < 0.10.0)
|
||||
httpclient (>= 2.8.1, < 3.0)
|
||||
mime-types (~> 3.0)
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.0)
|
||||
signet (~> 0.10)
|
||||
googleauth (0.5.1)
|
||||
faraday (~> 0.9)
|
||||
jwt (~> 1.4)
|
||||
logging (~> 2.0)
|
||||
memoist (~> 0.12)
|
||||
multi_json (~> 1.11)
|
||||
os (~> 0.9)
|
||||
signet (~> 0.7)
|
||||
hashie (3.4.3)
|
||||
hiredis (0.6.3)
|
||||
http_parser.rb (0.5.3)
|
||||
httparty (0.13.7)
|
||||
json (~> 1.8)
|
||||
multi_xml (>= 0.5.2)
|
||||
httpclient (2.8.3)
|
||||
i18n (0.9.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
ice_nine (0.11.2)
|
||||
instagram (1.1.6)
|
||||
faraday (>= 0.7, < 0.10)
|
||||
faraday_middleware (>= 0.8, < 0.10)
|
||||
hashie (>= 0.4.0)
|
||||
multi_json (~> 1.0, >= 1.0.3)
|
||||
jmespath (1.4.0)
|
||||
json (1.8.6)
|
||||
json-schema (2.1.9)
|
||||
jwt (1.5.4)
|
||||
kgio (2.10.0)
|
||||
little-plugger (1.1.4)
|
||||
logging (2.2.2)
|
||||
little-plugger (~> 1.1)
|
||||
multi_json (~> 1.10)
|
||||
loofah (2.2.3)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mail (2.7.1)
|
||||
mini_mime (>= 0.1.1)
|
||||
memoist (0.16.0)
|
||||
memory_profiler (0.9.6)
|
||||
metaclass (0.0.4)
|
||||
method_source (0.8.2)
|
||||
mime-types (3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2016.0521)
|
||||
mini_mime (1.0.1)
|
||||
mini_portile2 (2.3.0)
|
||||
minitest (5.11.3)
|
||||
mocha (1.1.0)
|
||||
metaclass (~> 0.0.1)
|
||||
mock_redis (0.16.0)
|
||||
mono_logger (1.1.0)
|
||||
msgpack (1.0.2)
|
||||
multi_json (1.12.1)
|
||||
multi_xml (0.5.5)
|
||||
multipart-post (2.0.0)
|
||||
net-ldap (0.16.0)
|
||||
net-telnet (0.1.1)
|
||||
netaddr (2.0.3)
|
||||
nokogiri (1.8.5)
|
||||
mini_portile2 (~> 2.3.0)
|
||||
oauth (0.4.7)
|
||||
oauth2 (1.3.1)
|
||||
faraday (>= 0.8, < 0.12)
|
||||
jwt (~> 1.0)
|
||||
multi_json (~> 1.3)
|
||||
multi_xml (~> 0.5)
|
||||
rack (>= 1.2, < 3)
|
||||
os (0.9.6)
|
||||
pg (0.20.0)
|
||||
poltergeist (1.0.3)
|
||||
capybara (~> 1.1)
|
||||
childprocess (~> 0.3)
|
||||
faye-websocket (~> 0.4.4)
|
||||
http_parser.rb (~> 0.5.3)
|
||||
multi_json (~> 1.0)
|
||||
power_assert (0.2.7)
|
||||
protected_attributes (1.1.3)
|
||||
activemodel (>= 4.0.1, < 5.0)
|
||||
public_suffix (3.0.3)
|
||||
rack (1.6.11)
|
||||
rack-protection (1.5.5)
|
||||
rack
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rails (4.2.11)
|
||||
actionmailer (= 4.2.11)
|
||||
actionpack (= 4.2.11)
|
||||
actionview (= 4.2.11)
|
||||
activejob (= 4.2.11)
|
||||
activemodel (= 4.2.11)
|
||||
activerecord (= 4.2.11)
|
||||
activesupport (= 4.2.11)
|
||||
bundler (>= 1.3.0, < 2.0)
|
||||
railties (= 4.2.11)
|
||||
sprockets-rails
|
||||
rails-deprecated_sanitizer (1.0.3)
|
||||
activesupport (>= 4.2.0.alpha)
|
||||
rails-dom-testing (1.0.9)
|
||||
activesupport (>= 4.2.0, < 5.0)
|
||||
nokogiri (~> 1.6)
|
||||
rails-deprecated_sanitizer (>= 1.0.1)
|
||||
rails-html-sanitizer (1.0.4)
|
||||
loofah (~> 2.2, >= 2.2.2)
|
||||
rails_warden (0.5.8)
|
||||
warden (>= 1.0.0)
|
||||
railties (4.2.11)
|
||||
actionpack (= 4.2.11)
|
||||
activesupport (= 4.2.11)
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
raindrops (0.15.0)
|
||||
rake (0.9.2.2)
|
||||
rb-fsevent (0.9.7)
|
||||
rb-inotify (0.9.7)
|
||||
ffi (>= 0.5.0)
|
||||
rb-readline (0.5.5)
|
||||
rbtrace (0.4.8)
|
||||
ffi (>= 1.0.6)
|
||||
msgpack (>= 0.4.3)
|
||||
trollop (>= 1.16.2)
|
||||
redcarpet (3.3.3)
|
||||
redis (3.3.5)
|
||||
redis-namespace (1.5.2)
|
||||
redis (~> 3.0, >= 3.0.4)
|
||||
representable (3.0.4)
|
||||
declarative (< 0.1.0)
|
||||
declarative-option (< 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
request_store (1.1.0)
|
||||
responders (2.3.0)
|
||||
railties (>= 4.2.0, < 5.1)
|
||||
resque (1.25.2)
|
||||
mono_logger (~> 1.0)
|
||||
multi_json (~> 1.0)
|
||||
redis-namespace (~> 1.3)
|
||||
sinatra (>= 0.9.2)
|
||||
vegas (~> 0.1.2)
|
||||
resque-metrics (0.1.1)
|
||||
resque (~> 1.19)
|
||||
retriable (3.1.2)
|
||||
rollbar (2.11.1)
|
||||
multi_json
|
||||
roo (1.13.2)
|
||||
nokogiri
|
||||
rubyzip
|
||||
spreadsheet (> 0.6.4)
|
||||
rotp (3.3.1)
|
||||
rqrcode (0.10.1)
|
||||
chunky_png (~> 1.0)
|
||||
rspec-core (2.12.2)
|
||||
rspec-expectations (2.12.1)
|
||||
diff-lcs (~> 1.1.3)
|
||||
rspec-mocks (2.12.2)
|
||||
rspec-rails (2.12.0)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
rspec-core (~> 2.12.0)
|
||||
rspec-expectations (~> 2.12.0)
|
||||
rspec-mocks (~> 2.12.0)
|
||||
ruby-ole (1.2.12)
|
||||
ruby-prof (0.15.1)
|
||||
ruby-saml (1.4.1)
|
||||
nokogiri (>= 1.5.10)
|
||||
rubyzip (1.2.2)
|
||||
sass (3.4.21)
|
||||
selenium-webdriver (2.52.0)
|
||||
childprocess (~> 0.5)
|
||||
multi_json (~> 1.0)
|
||||
rubyzip (~> 1.0)
|
||||
websocket (~> 1.0)
|
||||
sequel (4.45.0)
|
||||
sequel-rails (1.0.1)
|
||||
actionpack (>= 4.0.0)
|
||||
activemodel (>= 4.0.0)
|
||||
railties (>= 4.0.0)
|
||||
sequel (>= 3.28, < 6.0)
|
||||
sequel_pg (1.12.0)
|
||||
pg (>= 0.18.0)
|
||||
sequel (>= 4.38.0)
|
||||
signet (0.11.0)
|
||||
addressable (~> 2.3)
|
||||
faraday (~> 0.9)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simplecov (0.13.0)
|
||||
docile (~> 1.1.0)
|
||||
json (>= 1.8, < 3)
|
||||
simplecov-html (~> 0.10.0)
|
||||
simplecov-html (0.10.0)
|
||||
simplecov-json (0.2)
|
||||
json
|
||||
simplecov
|
||||
simplecov-rcov (0.2.3)
|
||||
simplecov (>= 0.4.1)
|
||||
simpleidn (0.1.1)
|
||||
unf (~> 0.1.4)
|
||||
sinatra (1.4.6)
|
||||
rack (~> 1.4)
|
||||
rack-protection (~> 1.4)
|
||||
tilt (>= 1.3, < 3)
|
||||
spreadsheet (1.1.1)
|
||||
ruby-ole (>= 1.0)
|
||||
sprockets (3.7.2)
|
||||
concurrent-ruby (~> 1.0)
|
||||
rack (> 1, < 3)
|
||||
sprockets-rails (3.2.1)
|
||||
actionpack (>= 4.0)
|
||||
activesupport (>= 4.0)
|
||||
sprockets (>= 3.0.0)
|
||||
state_machines (0.5.0)
|
||||
state_machines-activemodel (0.5.0)
|
||||
activemodel (>= 4.1, < 5.2)
|
||||
state_machines (>= 0.5.0)
|
||||
state_machines-activerecord (0.5.0)
|
||||
activerecord (>= 4.1, < 5.2)
|
||||
state_machines-activemodel (>= 0.5.0)
|
||||
statsd-client (0.0.7)
|
||||
test-unit (3.1.7)
|
||||
power_assert
|
||||
thin (1.7.2)
|
||||
daemons (~> 1.0, >= 1.0.9)
|
||||
eventmachine (~> 1.0, >= 1.0.4)
|
||||
rack (>= 1, < 3)
|
||||
thor (0.20.3)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.0.6)
|
||||
trollop (2.1.2)
|
||||
typhoeus (0.7.2)
|
||||
ethon (>= 0.7.4)
|
||||
tzinfo (1.2.5)
|
||||
thread_safe (~> 0.1)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.6)
|
||||
unicorn (4.8.2)
|
||||
kgio (~> 2.6)
|
||||
rack
|
||||
raindrops (~> 0.7)
|
||||
unicorn-worker-killer (0.4.4)
|
||||
get_process_mem (~> 0)
|
||||
unicorn (>= 4, < 6)
|
||||
uuidtools (2.1.5)
|
||||
values (1.8.0)
|
||||
vegas (0.1.11)
|
||||
rack (>= 1.0.0)
|
||||
virtus (1.0.5)
|
||||
axiom-types (~> 0.1)
|
||||
coercible (~> 1.0)
|
||||
descendants_tracker (~> 0.0, >= 0.0.3)
|
||||
equalizer (~> 0.0, >= 0.0.9)
|
||||
warden (1.2.6)
|
||||
rack (>= 1.0)
|
||||
webrick (1.3.1)
|
||||
websocket (1.2.2)
|
||||
xpath (0.1.4)
|
||||
nokogiri (~> 1.3)
|
||||
zeus (0.15.13)
|
||||
method_source (>= 0.6.7)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
activerecord-nulldb-adapter (= 0.3.1)
|
||||
activerecord-postgresql-adapter
|
||||
addressable (~> 2.5)
|
||||
analytics-ruby (~> 2.0.0)
|
||||
aws-sdk-s3 (~> 1)
|
||||
byebug
|
||||
capybara (= 1.1.2)
|
||||
cartodb-common!
|
||||
charlock_holmes (= 0.7.6)
|
||||
ci_reporter (= 1.8.4)
|
||||
compass (= 1.0.3)
|
||||
db-query-matchers (= 0.4.0)
|
||||
dbf (= 2.0.6)
|
||||
delorean
|
||||
dropbox_api (= 0.1.6)
|
||||
ejs (~> 1.1.1)
|
||||
email_address (~> 0.1.11)
|
||||
execjs (~> 0.4)
|
||||
factory_girl_rails (~> 4.0.0)
|
||||
fake_net_ldap!
|
||||
faraday (= 0.9.0)
|
||||
gc_tracer (= 1.5.1)
|
||||
gibbon (= 1.1.4)
|
||||
google-api-client (= 0.28.4)
|
||||
hiredis (~> 0.6.1)
|
||||
instagram (= 1.1.6)
|
||||
json-schema (= 2.1.9)
|
||||
memory_profiler
|
||||
mime-types (= 3.1)
|
||||
mocha (= 1.1.0)
|
||||
mock_redis
|
||||
net-ldap (= 0.16.0)
|
||||
net-telnet
|
||||
nokogiri (~> 1.8.2)
|
||||
oauth (= 0.4.7)
|
||||
oauth-plugin!
|
||||
pg (= 0.20.0)
|
||||
poltergeist (>= 1.0.0)
|
||||
protected_attributes
|
||||
rack
|
||||
rack-test (= 0.6.3)
|
||||
rails (= 4.2.11)
|
||||
rails_warden (= 0.5.8)
|
||||
raindrops (= 0.15.0)
|
||||
rake (= 0.9.2.2)
|
||||
rb-readline
|
||||
rbtrace (= 0.4.8)
|
||||
redcarpet (= 3.3.3)
|
||||
redis (~> 3.3.5)
|
||||
request_store (= 1.1.0)
|
||||
responders (~> 2.0)
|
||||
resque (= 1.25.2)
|
||||
resque-metrics (= 0.1.1)
|
||||
rollbar (~> 2.11.1)
|
||||
roo (= 1.13.2)
|
||||
rotp (~> 3.3, >= 3.3.1)
|
||||
rqrcode (~> 0.10.1)
|
||||
rspec-rails (= 2.12.0)
|
||||
ruby-prof (= 0.15.1)
|
||||
ruby-saml (= 1.4.1)
|
||||
selenium-webdriver (>= 2.5.0)
|
||||
sequel (~> 4.45.0)
|
||||
sequel-rails (~> 1.0.1)
|
||||
sequel_pg (~> 1.12.0)
|
||||
simplecov (= 0.13.0)
|
||||
simplecov-json
|
||||
simplecov-rcov
|
||||
state_machines-activerecord (~> 0.5.0)
|
||||
statsd-client (= 0.0.7)
|
||||
test-unit
|
||||
thin
|
||||
typhoeus (= 0.7.2)
|
||||
unicorn (= 4.8.2)
|
||||
unicorn-worker-killer
|
||||
uuidtools (= 2.1.5)
|
||||
values (= 1.8.0)
|
||||
virtus (= 1.0.5)
|
||||
webrick (= 1.3.1)
|
||||
zeus
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.3
|
529
Gruntfile.js
Normal file
@ -0,0 +1,529 @@
|
||||
var _ = require('underscore');
|
||||
var timer = require('grunt-timer');
|
||||
var semver = require('semver');
|
||||
var jasmineCfg = require('./lib/build/tasks/jasmine.js');
|
||||
var execSync = require('child_process').execSync;
|
||||
var lockedDependencies = require('./lib/build/tasks/locked-dependencies.js');
|
||||
var webpackTask = null;
|
||||
var EDITOR_ASSETS_VERSION = require('./config/editor_assets_version.json').version;
|
||||
|
||||
var REQUIRED_NODE_VERSIONS = ['10.x', '6.9.2'];
|
||||
var REQUIRED_NPM_VERSIONS = ['6.x', '3.10.9'];
|
||||
|
||||
var DEVELOPMENT = 'development';
|
||||
|
||||
var LOCKED_MODULES_TO_VALIDATE = [
|
||||
'backbone',
|
||||
'camshaft-reference',
|
||||
'carto',
|
||||
'internal-carto.js',
|
||||
'cartocolor',
|
||||
'd3',
|
||||
'jquery',
|
||||
'leaflet',
|
||||
'perfect-scrollbar',
|
||||
'torque.js',
|
||||
'turbo-carto',
|
||||
];
|
||||
|
||||
// Synchronously check if editor assets have changed
|
||||
var diff = execSync('git diff --numstat $(git rev-list --tags --skip=1 --max-count=1) -- $(git symbolic-ref --short HEAD) config/editor_assets_version.json', {
|
||||
cwd: __dirname
|
||||
});
|
||||
var EDITOR_ASSETS_CHANGED = diff.toString().length > 0;
|
||||
|
||||
function requireWebpackTask () {
|
||||
if (webpackTask === null) {
|
||||
webpackTask = require('./lib/build/tasks/webpack/webpack.js');
|
||||
}
|
||||
return webpackTask;
|
||||
}
|
||||
|
||||
function logVersionsError (err, requiredNodeVersions, requiredNpmVersions) {
|
||||
if (err) {
|
||||
grunt.log.fail('############### /!\\ CAUTION /!\\ #################');
|
||||
grunt.log.fail('PLEASE installed required versions to build CARTO:\n- node: ' + requiredNodeVersions.join(', ') + '\n- npm: ' + requiredNpmVersions.join(', '));
|
||||
grunt.log.fail('#################################################');
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
function getTargetDiff () {
|
||||
var target = require('child_process').execSync('(git diff --name-only --relative || true;' +
|
||||
'git diff origin/master.. --name-only --relative || true;)' +
|
||||
'| grep \'\\.js\\?$\' || true').toString();
|
||||
if (target.length === 0) {
|
||||
target = ['.'];
|
||||
} else {
|
||||
target = target.split('\n');
|
||||
target.splice(-1, 1);
|
||||
}
|
||||
return target;
|
||||
}
|
||||
|
||||
/**
|
||||
* CartoDB UI assets generation
|
||||
*/
|
||||
module.exports = function (grunt) {
|
||||
if (timer) timer.init(grunt);
|
||||
|
||||
var environment = grunt.option('environment') || DEVELOPMENT;
|
||||
grunt.log.writeln('Environment: ' + environment);
|
||||
|
||||
var runningTasks = grunt.cli.tasks;
|
||||
if (runningTasks.length === 0) {
|
||||
grunt.log.writeln('Running default task.');
|
||||
} else {
|
||||
grunt.log.writeln('Running tasks: ' + runningTasks);
|
||||
}
|
||||
|
||||
function preFlight (requiredNodeVersions, requiredNpmVersions, logFn) {
|
||||
function checkVersion (cmd, versionRange, name, logFn) {
|
||||
grunt.log.writeln('Required ' + name + ' version: ' + versionRange.join(', '));
|
||||
require('child_process').exec(cmd, function (error, stdout, stderr) {
|
||||
var err = null;
|
||||
if (error) {
|
||||
err = 'failed to check version for ' + name;
|
||||
} else {
|
||||
var installed = semver.clean(stdout);
|
||||
if (!semver.satisfies(installed, versionRange.join(' || '))) {
|
||||
err = 'Installed ' + name + ' version does not match with required [' + versionRange.join(', ') + '] Installed: ' + installed;
|
||||
}
|
||||
}
|
||||
if (err) {
|
||||
grunt.log.fail(err);
|
||||
}
|
||||
logFn && logFn(err ? new Error(err) : null);
|
||||
});
|
||||
}
|
||||
checkVersion('node -v', requiredNodeVersions, 'node', logFn);
|
||||
checkVersion('npm -v', requiredNpmVersions, 'npm', logFn);
|
||||
}
|
||||
|
||||
var mustCheckNodeVersion = grunt.option('no-node-checker');
|
||||
if (!mustCheckNodeVersion) {
|
||||
preFlight(REQUIRED_NODE_VERSIONS, REQUIRED_NPM_VERSIONS, logVersionsError);
|
||||
grunt.log.writeln('');
|
||||
}
|
||||
|
||||
var duplicatedModules = lockedDependencies.checkDuplicatedDependencies(require('./package-lock.json'), LOCKED_MODULES_TO_VALIDATE);
|
||||
if (duplicatedModules.length > 0) {
|
||||
grunt.log.fail('############### /!\\ CAUTION /!\\ #################');
|
||||
grunt.log.fail('Duplicated dependencies found in package-lock.json file.');
|
||||
grunt.log.fail(JSON.stringify(duplicatedModules, null, 4));
|
||||
grunt.log.fail('#################################################');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
var PUBLIC_DIR = './public/';
|
||||
var ROOT_ASSETS_DIR = './public/assets/';
|
||||
var ASSETS_DIR = './public/assets/<%= pkg.version %>';
|
||||
var EDITOR_ASSETS_DIR = `./public/assets/editor/${EDITOR_ASSETS_VERSION}`;
|
||||
|
||||
/**
|
||||
* this is being used by `grunt --environment=production release`
|
||||
*/
|
||||
var env = './config/grunt_' + environment + '.json';
|
||||
grunt.log.writeln('env: ' + env);
|
||||
|
||||
if (grunt.file.exists(env)) {
|
||||
env = grunt.file.readJSON(env);
|
||||
} else {
|
||||
throw grunt.util.error(env + ' file is missing! See ' + env + '.sample for how it should look like');
|
||||
}
|
||||
|
||||
var aws = {};
|
||||
if (grunt.file.exists('./lib/build/grunt-aws.json')) {
|
||||
aws = grunt.file.readJSON('./lib/build/grunt-aws.json');
|
||||
}
|
||||
|
||||
var targetDiff = getTargetDiff();
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
aws: aws,
|
||||
env: env,
|
||||
|
||||
public_dir: PUBLIC_DIR,
|
||||
assets_dir: ASSETS_DIR,
|
||||
editor_assets_dir: EDITOR_ASSETS_DIR,
|
||||
editor_assets_version: EDITOR_ASSETS_VERSION,
|
||||
root_assets_dir: ROOT_ASSETS_DIR,
|
||||
|
||||
// Concat task
|
||||
concat: require('./lib/build/tasks/concat').task(),
|
||||
|
||||
// JST generation task
|
||||
jst: require('./lib/build/tasks/jst').task(),
|
||||
|
||||
// Compass files generation
|
||||
compass: require('./lib/build/tasks/compass').task(),
|
||||
|
||||
// Copy assets (stylesheets, javascripts, images...)
|
||||
copy: require('./lib/build/tasks/copy').task(grunt),
|
||||
|
||||
// Watch actions
|
||||
watch: require('./lib/build/tasks/watch.js').task(),
|
||||
|
||||
// Clean folders before other tasks
|
||||
clean: require('./lib/build/tasks/clean').task(),
|
||||
|
||||
jasmine: jasmineCfg,
|
||||
|
||||
// Create a tarball of the static pages for production release
|
||||
compress: require('./lib/build/tasks/compress.js').task(),
|
||||
|
||||
s3: require('./lib/build/tasks/s3.js').task(),
|
||||
|
||||
exorcise: require('./lib/build/tasks/exorcise.js').task(),
|
||||
|
||||
uglify: require('./lib/build/tasks/uglify.js').task(),
|
||||
|
||||
browserify: require('./lib/build/tasks/browserify.js').task(),
|
||||
|
||||
connect: require('./lib/build/tasks/connect.js').task(),
|
||||
|
||||
availabletasks: require('./lib/build/tasks/availabletasks.js').task(),
|
||||
|
||||
sass: require('./lib/build/tasks/sass.js').task(),
|
||||
|
||||
eslint: {
|
||||
target: targetDiff
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* `grunt availabletasks`
|
||||
*/
|
||||
grunt.loadNpmTasks('grunt-available-tasks');
|
||||
|
||||
// Load Grunt tasks
|
||||
require('load-grunt-tasks')(grunt, {
|
||||
pattern: ['grunt-*', '@*/grunt-*', '!grunt-timer']
|
||||
});
|
||||
|
||||
require('./lib/build/tasks/manifest').register(grunt, ASSETS_DIR);
|
||||
|
||||
grunt.registerTask('invalidate', 'invalidate cache', function () {
|
||||
var done = this.async();
|
||||
var url = require('url');
|
||||
var https = require('https');
|
||||
|
||||
var options = url.parse(grunt.template.process('https://api.fastly.com/service/<%= aws.FASTLY_CARTODB_SERVICE %>/purge_all'));
|
||||
options['method'] = 'POST';
|
||||
options['headers'] = {
|
||||
'Fastly-Key': aws.FASTLY_API_KEY,
|
||||
'Content-Length': '0' // Disables chunked encoding
|
||||
};
|
||||
console.log(options);
|
||||
|
||||
https.request(options, function (response) {
|
||||
if (response.statusCode === 200) {
|
||||
grunt.log.ok('CDN invalidated (fastly)');
|
||||
} else {
|
||||
grunt.log.error('CDN not invalidated (fastly), code: ' + response.statusCode);
|
||||
}
|
||||
done();
|
||||
}).on('error', function () {
|
||||
grunt.log.error('CDN not invalidated (fastly)');
|
||||
done();
|
||||
}).end();
|
||||
});
|
||||
|
||||
grunt.registerTask('config', 'generates assets config for current configuration', function () {
|
||||
// Set assets url for static assets in our app
|
||||
var config = grunt.template.process('cdb.config.set(\'assets_url\', \'<%= env.http_path_prefix %>/assets/<%= pkg.version %>\');');
|
||||
config += grunt.template.process('\nconsole.log(\'cartodbui v<%= pkg.version %>\');');
|
||||
grunt.file.write('lib/build/app_config.js', config);
|
||||
});
|
||||
|
||||
grunt.registerTask('check_release', 'checks release can be done', function () {
|
||||
if (environment === DEVELOPMENT) {
|
||||
grunt.log.error('you can\'t release running development environment');
|
||||
return false;
|
||||
}
|
||||
|
||||
grunt.log.ok('************************************************');
|
||||
grunt.log.ok(' you are going to deploy to ' + env);
|
||||
grunt.log.ok('************************************************');
|
||||
});
|
||||
|
||||
grunt.event.on('watch', function (action, filepath, subtask) {
|
||||
// Configure copy vendor to only run on changed file
|
||||
var vendorFile = 'copy.vendor';
|
||||
var vendorFileCfg = grunt.config.get(vendorFile);
|
||||
|
||||
if (filepath.indexOf(vendorFileCfg.cwd) !== -1) {
|
||||
grunt.config(vendorFile + '.src', filepath.replace(vendorFileCfg.cwd, ''));
|
||||
} else {
|
||||
grunt.config(vendorFile + 'src', []);
|
||||
}
|
||||
|
||||
// Configure copy app to only run on changed files
|
||||
var files = 'copy.app.files';
|
||||
var filesCfg = grunt.config.get(files);
|
||||
|
||||
for (var i = 0, l = filesCfg.length; i < l; ++i) {
|
||||
var file = files + '.' + i;
|
||||
var fileCfg = grunt.config.get(file);
|
||||
|
||||
if (filepath.indexOf(fileCfg.cwd) !== -1) {
|
||||
grunt.config(file + '.src', filepath.replace(fileCfg.cwd, ''));
|
||||
} else {
|
||||
grunt.config(file + '.src', []);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.registerTask('css', [
|
||||
'copy:vendor',
|
||||
'copy:app',
|
||||
'copy:css_cartodb',
|
||||
'compass',
|
||||
'sass',
|
||||
'concat:css'
|
||||
]);
|
||||
|
||||
grunt.registerTask('run_browserify', 'Browserify task with options', function (option) {
|
||||
var skipAllSpecs = false;
|
||||
|
||||
if (environment !== DEVELOPMENT) {
|
||||
grunt.log.writeln('Skipping all specs generation by browserify because not in development environment.');
|
||||
skipAllSpecs = true;
|
||||
}
|
||||
|
||||
if (skipAllSpecs) {
|
||||
delete grunt.config.data.browserify['test_specs_for_browserify_modules'];
|
||||
}
|
||||
|
||||
grunt.task.run('browserify');
|
||||
});
|
||||
|
||||
grunt.registerTask('cdb', 'build cartodb.js', function () {
|
||||
var done = this.async();
|
||||
|
||||
require('child_process').exec('make update_cdb', function (error, stdout, stderr) {
|
||||
if (error) {
|
||||
grunt.log.fail('cartodb.js not updated (due to ' + stdout + ', ' + stderr + ')');
|
||||
} else {
|
||||
grunt.log.ok('cartodb.js updated');
|
||||
}
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
grunt.registerTask('js_editor', [
|
||||
'cdb',
|
||||
'setConfig:env.browserify_watch:true',
|
||||
'npm-carto-node',
|
||||
'run_browserify',
|
||||
'concat:js',
|
||||
'jst'
|
||||
]);
|
||||
|
||||
grunt.registerTask('beforeDefault', [
|
||||
'config'
|
||||
]);
|
||||
|
||||
grunt.registerTask('dev-editor', [
|
||||
'beforeDefault',
|
||||
'js_editor',
|
||||
'css',
|
||||
'manifest'
|
||||
]);
|
||||
|
||||
registerCmdTask('npm-start', {cmd: 'npm', args: ['run', 'start']});
|
||||
registerCmdTask('npm-build', {cmd: 'npm', args: ['run', 'build']});
|
||||
registerCmdTask('npm-build-static', {cmd: 'npm', args: ['run', 'build:static']});
|
||||
registerCmdTask('npm-carto-node', {cmd: 'npm', args: ['run', 'carto-node']});
|
||||
registerCmdTask('npm-build-dev', {cmd: 'npm', args: ['run', 'build:dev']});
|
||||
|
||||
/**
|
||||
* `grunt dev`
|
||||
*/
|
||||
|
||||
grunt.registerTask('editor', [
|
||||
'build-static',
|
||||
'npm-build-dev',
|
||||
'dev-editor',
|
||||
'watch:css'
|
||||
]);
|
||||
|
||||
grunt.registerTask('default', [
|
||||
'build-static',
|
||||
'npm-build-dev',
|
||||
'dev-editor'
|
||||
]);
|
||||
|
||||
grunt.registerTask('lint', [
|
||||
'eslint'
|
||||
]);
|
||||
|
||||
grunt.registerTask('sourcemaps', 'generate sourcemaps, to be used w/ trackjs.com for bughunting', [
|
||||
'setConfig:assets_dir:./tmp/sourcemaps',
|
||||
'config',
|
||||
'js',
|
||||
'copy:js',
|
||||
'exorcise',
|
||||
'uglify'
|
||||
]);
|
||||
|
||||
// -- BUILD TASKS
|
||||
|
||||
grunt.registerTask('build', 'build editor, builder, dashboard and static pages', [
|
||||
'build-editor',
|
||||
'build-static',
|
||||
'npm-build'
|
||||
]);
|
||||
|
||||
grunt.registerTask('build-editor', 'generate editor css and javasript files', [
|
||||
'dev-editor',
|
||||
'copy:js',
|
||||
'exorcise',
|
||||
'uglify'
|
||||
]);
|
||||
|
||||
grunt.registerTask('build-static', 'generate static files and needed vendor scripts', [
|
||||
'npm-carto-node',
|
||||
'npm-build-static'
|
||||
]);
|
||||
|
||||
/**
|
||||
* `grunt release`
|
||||
* `grunt release --environment=production`
|
||||
*/
|
||||
grunt.registerTask('release', [
|
||||
'check_release',
|
||||
'build-static',
|
||||
'npm-build',
|
||||
'compress',
|
||||
's3:js',
|
||||
's3:css',
|
||||
's3:images',
|
||||
's3:fonts',
|
||||
's3:flash',
|
||||
's3:favicons',
|
||||
's3:unversioned',
|
||||
's3:unversioned_onboarding',
|
||||
's3:static_pages',
|
||||
'invalidate'
|
||||
]);
|
||||
|
||||
grunt.registerTask('release_editor_assets', 'builds & uploads editor assets', [
|
||||
'build-editor',
|
||||
's3:frozen',
|
||||
'invalidate'
|
||||
]);
|
||||
|
||||
grunt.registerTask('generate_builder_specs', 'Generate only builder specs', function (option) {
|
||||
requireWebpackTask().affected.call(this, option, grunt);
|
||||
});
|
||||
|
||||
grunt.registerTask('generate_dashboard_specs', 'Generate only dashboard specs', function (option) {
|
||||
requireWebpackTask().dashboard.call(this, option, grunt);
|
||||
});
|
||||
|
||||
grunt.registerTask('bootstrap_webpack_builder_specs', 'Create the webpack compiler', function () {
|
||||
requireWebpackTask().bootstrap.call(this, 'builder_specs', grunt);
|
||||
});
|
||||
|
||||
grunt.registerTask('bootstrap_webpack_dashboard_specs', 'Create the webpack compiler', function () {
|
||||
requireWebpackTask().bootstrap.call(this, 'dashboard_specs', grunt);
|
||||
});
|
||||
|
||||
grunt.registerTask('webpack:builder_specs', 'Webpack compilation task for builder specs', function () {
|
||||
requireWebpackTask().compile.call(this, 'builder_specs');
|
||||
});
|
||||
|
||||
grunt.registerTask('webpack:dashboard_specs', 'Webpack compilation task for dashboard specs', function () {
|
||||
requireWebpackTask().compile.call(this, 'dashboard_specs');
|
||||
});
|
||||
|
||||
var testTasks = [
|
||||
'connect:test',
|
||||
'beforeDefault',
|
||||
'generate_builder_specs',
|
||||
'bootstrap_webpack_builder_specs',
|
||||
'webpack:builder_specs',
|
||||
'jasmine:builder',
|
||||
'generate_dashboard_specs',
|
||||
'bootstrap_webpack_dashboard_specs',
|
||||
'webpack:dashboard_specs',
|
||||
'jasmine:dashboard',
|
||||
'lint'
|
||||
];
|
||||
|
||||
// If the editor assets version has changed, add the editor tests
|
||||
if (EDITOR_ASSETS_CHANGED) {
|
||||
testTasks.splice(testTasks.indexOf('generate_builder_specs'), 0, 'js_editor', 'jasmine:cartodbui');
|
||||
}
|
||||
|
||||
/**
|
||||
* `grunt test`
|
||||
*/
|
||||
grunt.registerTask('test', '(CI env) Re-build JS files and run all tests. For manual testing use `grunt jasmine` directly', testTasks);
|
||||
|
||||
/**
|
||||
* `grunt test:browser` compile all Builder specs and launch a webpage in the browser.
|
||||
*/
|
||||
grunt.registerTask('test:browser:builder', 'Build all Builder specs', [
|
||||
'generate_builder_specs',
|
||||
'bootstrap_webpack_builder_specs',
|
||||
'webpack:builder_specs',
|
||||
'jasmine:builder:build',
|
||||
'connect:specs_builder',
|
||||
'watch:js_affected'
|
||||
]);
|
||||
|
||||
/**
|
||||
* `grunt dashboard_specs` compile dashboard specs
|
||||
*/
|
||||
grunt.registerTask('test:browser:dashboard', 'Build only dashboard specs', [
|
||||
'generate_dashboard_specs',
|
||||
'bootstrap_webpack_dashboard_specs',
|
||||
'webpack:dashboard_specs',
|
||||
'jasmine:dashboard:build',
|
||||
'connect:specs_dashboard',
|
||||
'watch:dashboard_specs'
|
||||
]);
|
||||
|
||||
grunt.registerTask('setConfig', 'Set a config property', function (name, val) {
|
||||
grunt.config.set(name, val);
|
||||
});
|
||||
|
||||
/**
|
||||
* `grunt affected_editor_specs` compile all Editor specs and launch a webpage in the browser.
|
||||
*/
|
||||
grunt.registerTask('affected_editor_specs', 'Build Editor specs', [
|
||||
'jasmine:cartodbui:build',
|
||||
'connect:server',
|
||||
'watch:js_affected_editor'
|
||||
]);
|
||||
|
||||
/**
|
||||
* Delegate task to command line.
|
||||
* @param {String} name - If taskname starts with npm it's run a npm script (i.e. `npm run foobar`
|
||||
* @param {Object} d - d as in data
|
||||
* @param {Array} d.args - arguments to pass to the d.cmd
|
||||
* @param {String} [d.cmd = process.execPath]
|
||||
* @param {String} [d.desc = ''] - description
|
||||
* @param {...string} args space-separated arguments passed to the cmd
|
||||
*/
|
||||
function registerCmdTask (name, opts) {
|
||||
opts = _.extend({
|
||||
cmd: process.execPath,
|
||||
desc: '',
|
||||
args: []
|
||||
}, opts);
|
||||
grunt.registerTask(name, opts.desc, function () {
|
||||
// adapted from http://stackoverflow.com/a/24796749
|
||||
var done = this.async();
|
||||
grunt.util.spawn({
|
||||
cmd: opts.cmd,
|
||||
args: opts.args,
|
||||
opts: { stdio: 'inherit' }
|
||||
}, done);
|
||||
});
|
||||
}
|
||||
};
|
25
Guardfile
Normal file
@ -0,0 +1,25 @@
|
||||
# A sample Guardfile
|
||||
# More info at https://github.com/guard/guard#readme
|
||||
|
||||
guard 'minitest', test_folders: 'services' do
|
||||
# with Minitest::Spec
|
||||
|
||||
watch(%r|^services/.*/spec/(.*)_spec\.rb|)
|
||||
watch(%r|^services/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
||||
# watch(%r|^spec/spec_helper\.rb|) { "spec" }
|
||||
|
||||
# with Minitest::Unit
|
||||
# watch(%r|^test/(.*)\/?test_(.*)\.rb|)
|
||||
# watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
|
||||
# watch(%r|^test/test_helper\.rb|) { "test" }
|
||||
|
||||
# Rails 3.2
|
||||
# watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/controllers/#{m[1]}_test.rb" }
|
||||
# watch(%r|^app/helpers/(.*)\.rb|) { |m| "test/helpers/#{m[1]}_test.rb" }
|
||||
# watch(%r|^app/models/(.*)\.rb|) { |m| "test/unit/#{m[1]}_test.rb" }
|
||||
|
||||
# Rails
|
||||
# watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/functional/#{m[1]}_test.rb" }
|
||||
# watch(%r|^app/helpers/(.*)\.rb|) { |m| "test/helpers/#{m[1]}_test.rb" }
|
||||
# watch(%r|^app/models/(.*)\.rb|) { |m| "test/unit/#{m[1]}_test.rb" }
|
||||
end
|
27
LICENSE
Normal file
@ -0,0 +1,27 @@
|
||||
Copyright (c) 2015, CartoDB
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
426
Makefile
Normal file
@ -0,0 +1,426 @@
|
||||
REV=$(shell git rev-parse HEAD)
|
||||
RUBY_MAJOR=$(shell ruby -e "puts RUBY_VERSION" | cut -d. -f1)
|
||||
|
||||
all:
|
||||
RAILS_ENV=test bundle install
|
||||
# I cannot remmeber why gdal is being skipped from this list...
|
||||
cat python_requirements.txt | grep -v gdal | sudo pip install -r /dev/stdin
|
||||
npm install
|
||||
|
||||
WORKING_SPECS_1 = \
|
||||
spec/models/table_spec.rb \
|
||||
spec/models/table_privacy_manager_spec.rb \
|
||||
spec/models/table/column_typecaster_spec.rb \
|
||||
spec/models/user_spec.rb \
|
||||
spec/models/user_presenter_spec.rb \
|
||||
spec/models/user_table_spec.rb \
|
||||
spec/models/layer_spec.rb \
|
||||
spec/models/layer/presenter_spec.rb \
|
||||
spec/requests/application_controller_spec.rb \
|
||||
spec/requests/sessions_spec.rb \
|
||||
spec/requests/api/json/layer_presenter_spec.rb \
|
||||
spec/requests/carto/api/layer_presenter_spec.rb \
|
||||
spec/requests/carto/api/data_import_presenter_spec.rb \
|
||||
spec/requests/carto/api/database_groups_controller_spec.rb \
|
||||
spec/requests/carto/api/groups_controller_spec.rb \
|
||||
spec/requests/carto/api/grantables_controller_spec.rb \
|
||||
spec/requests/carto/api/infowindow_migrator_spec.rb \
|
||||
spec/requests/carto/api/layer_presenter_spec.rb \
|
||||
spec/requests/carto/api/overlay_presenter_spec.rb \
|
||||
spec/requests/carto/api/presenter_cache_spec.rb \
|
||||
spec/requests/carto/api/templates_controller_spec.rb \
|
||||
spec/requests/carto/api/user_creations_controller_spec.rb \
|
||||
spec/requests/carto/api/widgets_controller_spec.rb \
|
||||
spec/requests/carto/api/custom_visualizations_controller_spec.rb \
|
||||
spec/requests/carto/builder/public/embeds_controller_spec.rb \
|
||||
spec/requests/carto/builder/visualizations_controller_spec.rb \
|
||||
spec/requests/carto/kuviz/visualizations_controller_spec.rb \
|
||||
spec/requests/visualizations_controller_helper_spec.rb \
|
||||
spec/requests/warden_spec.rb \
|
||||
spec/models/map_spec.rb \
|
||||
spec/models/map/copier_spec.rb \
|
||||
spec/models/visualization/collection_spec.rb \
|
||||
spec/models/visualization/locator_spec.rb \
|
||||
spec/models/visualization/member_spec.rb \
|
||||
spec/models/visualization/name_checker_spec.rb \
|
||||
spec/models/visualization/name_generator_spec.rb \
|
||||
spec/models/visualization/organization_visualization_spec.rb \
|
||||
spec/models/visualization/overlays_spec.rb \
|
||||
spec/models/visualization/presenter_spec.rb \
|
||||
spec/models/visualization/relator_spec.rb \
|
||||
spec/models/visualization/table_blender_spec.rb \
|
||||
spec/models/visualization/tags_spec.rb \
|
||||
spec/models/data_import_spec.rb \
|
||||
spec/models/geocoding_spec.rb \
|
||||
spec/models/common_data_spec.rb \
|
||||
spec/lib/api_calls_spec.rb \
|
||||
spec/lib/errors_spec.rb \
|
||||
spec/lib/url_signer_spec.rb \
|
||||
spec/lib/string_spec.rb \
|
||||
spec/lib/image_metadata_spec.rb \
|
||||
spec/lib/central_spec.rb \
|
||||
spec/lib/trending_maps_spec.rb \
|
||||
spec/lib/user_account_creator_spec.rb \
|
||||
spec/lib/carto/filename_generator_spec.rb \
|
||||
spec/lib/carto/http_header_authentication_spec.rb \
|
||||
spec/lib/carto/saml_service_spec.rb \
|
||||
spec/lib/carto/users_metadata_redis_cache_spec.rb \
|
||||
spec/lib/carto/visualization_migrator_spec.rb \
|
||||
spec/lib/carto/http/client_spec.rb \
|
||||
spec/lib/carto/table_utils_spec.rb \
|
||||
spec/helpers/uuidhelper_spec.rb \
|
||||
spec/helpers/url_validator_spec.rb \
|
||||
spec/models/carto/data_import_spec.rb \
|
||||
spec/models/carto/visualization_spec.rb \
|
||||
spec/models/carto/visualization/watcher_spec.rb \
|
||||
spec/models/carto/map_spec.rb \
|
||||
spec/models/carto/template_spec.rb \
|
||||
spec/models/carto/group_spec.rb \
|
||||
spec/models/carto/widget_spec.rb \
|
||||
spec/models/carto/ldap/configuration_spec.rb \
|
||||
spec/services/carto/data_library_service_spec.rb \
|
||||
spec/services/carto/user_authenticator_spec.rb \
|
||||
spec/requests/sessions_controller_spec.rb \
|
||||
spec/services/carto/visualizations_export_service_2_spec.rb \
|
||||
spec/services/carto/visualization_backup_service_spec.rb \
|
||||
$(NULL)
|
||||
|
||||
WORKING_SPECS_2 = \
|
||||
spec/lib/cartodb/stats/importer_spec.rb \
|
||||
spec/lib/cartodb/stats/platform_spec.rb \
|
||||
spec/lib/cartodb/connection_pool_spec.rb \
|
||||
services/importer/spec/acceptance/geojson_spec.rb \
|
||||
services/importer/spec/acceptance/gpx_spec.rb \
|
||||
services/importer/spec/acceptance/kml_spec.rb \
|
||||
services/importer/spec/acceptance/mapinfo_spec.rb \
|
||||
services/importer/spec/acceptance/osm_spec.rb \
|
||||
services/importer/spec/acceptance/sql_spec.rb \
|
||||
services/importer/spec/acceptance/raster2pgsql_spec.rb \
|
||||
services/importer/spec/acceptance/csv_spec.rb \
|
||||
services/importer/spec/acceptance/gz_tgz_spec.rb \
|
||||
services/importer/spec/acceptance/zip_spec.rb \
|
||||
services/importer/spec/acceptance/shp_spec.rb \
|
||||
services/importer/spec/acceptance/rar_spec.rb \
|
||||
services/importer/spec/unit/column_spec.rb \
|
||||
services/importer/spec/unit/csv_normalizer_spec.rb \
|
||||
services/importer/spec/unit/shp_normalizer_spec.rb \
|
||||
services/importer/spec/unit/shp_helper_spec.rb \
|
||||
services/importer/spec/unit/excel2csv_spec.rb \
|
||||
services/importer/spec/unit/downloader_spec.rb \
|
||||
services/importer/spec/unit/georeferencer_spec.rb \
|
||||
services/importer/spec/unit/json2csv_spec.rb \
|
||||
services/importer/spec/unit/kml_splitter_spec.rb \
|
||||
services/importer/spec/unit/gpx_splitter_spec.rb \
|
||||
services/importer/spec/unit/loader_spec.rb \
|
||||
services/importer/spec/unit/mail_notifier_spec.rb \
|
||||
services/importer/spec/unit/sql_loader_spec.rb \
|
||||
services/importer/spec/unit/table_sampler_spec.rb \
|
||||
services/importer/spec/unit/ogr2ogr_spec.rb \
|
||||
services/importer/spec/unit/post_import_handler_spec.rb \
|
||||
services/importer/spec/unit/runner_spec.rb \
|
||||
services/importer/spec/unit/unp_spec.rb \
|
||||
services/importer/spec/unit/url_translator/fusion_tables_spec.rb \
|
||||
services/importer/spec/unit/url_translator/github_spec.rb \
|
||||
services/importer/spec/unit/url_translator/google_docs_spec.rb \
|
||||
services/importer/spec/unit/url_translator/google_maps_spec.rb \
|
||||
services/importer/spec/unit/url_translator/osm_spec.rb \
|
||||
services/importer/spec/unit/url_translator/osm2_spec.rb \
|
||||
services/importer/spec/unit/source_file_spec.rb \
|
||||
services/importer/spec/unit/content_guesser_spec.rb \
|
||||
services/importer/spec/unit/namedplaces_guesser_spec.rb \
|
||||
services/importer/spec/unit/connector_spec.rb \
|
||||
services/importer/spec/unit/connector_runner_spec.rb \
|
||||
$(NULL)
|
||||
|
||||
WORKING_SPECS_4 = \
|
||||
services/wms/spec/unit/wms_spec.rb \
|
||||
services/sql-api/spec/sql_api_spec.rb \
|
||||
spec/requests/admin/organizations_controller_spec.rb \
|
||||
spec/requests/admin/visualizations_spec.rb \
|
||||
spec/requests/carto/api/visualizations_controller_spec.rb \
|
||||
spec/requests/carto/api/tables_controller_spec.rb \
|
||||
spec/queries/carto/visualization_query_builder_spec.rb \
|
||||
spec/requests/admin/tables_spec.rb \
|
||||
spec/requests/admin/pages_controller_spec.rb \
|
||||
spec/requests/carto/api/organizations_controller_spec.rb \
|
||||
spec/requests/carto/api/organization_users_controller_spec.rb \
|
||||
spec/requests/carto/api/multifactor_authentication_controller_spec.rb \
|
||||
spec/requests/api/imports_spec.rb \
|
||||
spec/requests/api/json/imports_controller_spec.rb \
|
||||
spec/requests/carto/api/imports_controller_spec.rb \
|
||||
spec/connectors/importer_spec.rb \
|
||||
spec/connectors/importer_overviews_spec.rb \
|
||||
spec/requests/carto/api/connectors_controller_spec.rb \
|
||||
spec/requests/api/geocodings_spec.rb \
|
||||
$(NULL)
|
||||
|
||||
WORKING_SPECS_5 = \
|
||||
spec/requests/api/assets_spec.rb \
|
||||
spec/requests/carto/api/assets_controller_spec.rb \
|
||||
spec/requests/carto/api/layers_controller_spec.rb \
|
||||
spec/requests/carto/api/records_controller_spec.rb \
|
||||
spec/requests/carto/api/columns_controller_spec.rb \
|
||||
spec/requests/api/synchronizations_spec.rb \
|
||||
spec/requests/api/json/synchronizations_controller_spec.rb \
|
||||
spec/requests/carto/api/synchronizations_controller_spec.rb \
|
||||
services/geocoder/spec/geocoder_spec.rb \
|
||||
services/table-geocoder/spec/table_geocoder_spec.rb \
|
||||
services/table-geocoder/spec/internal-geocoder/input_type_resolver_spec.rb \
|
||||
services/table-geocoder/spec/internal-geocoder/query_generator_factory_spec.rb \
|
||||
services/table-geocoder/spec/lib/gme/table_geocoder_spec.rb \
|
||||
spec/models/synchronization/member_spec.rb \
|
||||
spec/models/synchronization/member_overviews_spec.rb \
|
||||
spec/models/synchronization/collection_spec.rb \
|
||||
spec/models/organization_spec.rb \
|
||||
spec/models/user_organization_spec.rb \
|
||||
spec/models/synchronization/synchronization_oauth_spec.rb \
|
||||
spec/models/permission_spec.rb \
|
||||
spec/models/carto/permission_spec.rb \
|
||||
spec/lib/carto/ghost_tables_manager_spec.rb \
|
||||
spec/lib/carto/bolt_spec.rb \
|
||||
spec/lib/carto/valid_table_name_proposer_spec.rb \
|
||||
spec/lib/carto/db/sanitize_spec.rb \
|
||||
spec/lib/carto/db/user_schema_spec.rb \
|
||||
spec/lib/carto/db/sql_interface_spec.rb \
|
||||
spec/lib/carto/file_system/sanitize_spec.rb \
|
||||
$(NULL)
|
||||
|
||||
# TODO: This block also breaks if run alongside other specs, needs checking why
|
||||
WORKING_SPECS_7 = \
|
||||
spec/requests/api/json/geocodings_controller_spec.rb \
|
||||
spec/requests/carto/api/geocodings_controller_spec.rb \
|
||||
$(NULL)
|
||||
|
||||
WORKING_SPECS_9 = \
|
||||
services/twitter-search/spec/unit/json_to_csv_converter_spec.rb \
|
||||
services/twitter-search/spec/unit/search_api_spec.rb \
|
||||
services/datasources/spec/acceptance/datasources_factory_spec.rb \
|
||||
services/datasources/spec/acceptance/dropbox_spec.rb \
|
||||
services/datasources/spec/acceptance/gdrive_spec.rb \
|
||||
services/datasources/spec/acceptance/public_url_spec.rb \
|
||||
services/datasources/spec/integration/csv_file_dumper_spec.rb \
|
||||
services/datasources/spec/integration/twitter_spec.rb \
|
||||
services/datasources/spec/unit/arcgis_spec.rb \
|
||||
services/datasources/spec/unit/dropbox_spec.rb \
|
||||
services/datasources/spec/unit/box_spec.rb \
|
||||
services/datasources/spec/unit/gdrive_spec.rb \
|
||||
services/datasources/spec/unit/twitter_spec.rb \
|
||||
services/importer/spec/regression/query_batcher_spec.rb \
|
||||
services/platform-limits/spec/unit/input_file_size_spec.rb \
|
||||
spec/models/platform-limits/user_concurrent_imports_amount_spec.rb \
|
||||
spec/models/platform-limits/user_concurrent_syncs_amount_spec.rb \
|
||||
spec/lib/initializers/carto_db_spec.rb \
|
||||
spec/requests/carto/api/oembed_controller_spec.rb \
|
||||
spec/models/asset_spec.rb \
|
||||
spec/models/access_token_spec.rb \
|
||||
spec/requests/carto/api/permissions_controller_spec.rb \
|
||||
spec/models/shared_entity_spec.rb \
|
||||
spec/models/carto/shared_entity_spec.rb \
|
||||
spec/requests/signup_controller_spec.rb \
|
||||
spec/requests/account_tokens_controller_spec.rb \
|
||||
spec/requests/password_change_controller_spec.rb \
|
||||
spec/requests/superadmin/users_spec.rb \
|
||||
spec/requests/superadmin/organizations_spec.rb \
|
||||
spec/requests/superadmin/feature_flag_spec.rb \
|
||||
spec/requests/superadmin/oauth_apps_spec.rb \
|
||||
spec/requests/superadmin/platform_controller_spec.rb \
|
||||
spec/requests/superadmin/account_types_spec.rb \
|
||||
spec/requests/api/visualizations_spec.rb \
|
||||
spec/requests/carto/api/overlays_controller_spec.rb \
|
||||
spec/models/carto/user_creation_spec.rb \
|
||||
spec/requests/carto/api/invitations_controller_spec.rb \
|
||||
spec/requests/user_state_spec.rb \
|
||||
spec/models/carto/invitation_spec.rb \
|
||||
spec/models/carto/user_service_spec.rb \
|
||||
spec/models/carto/user_spec.rb \
|
||||
spec/models/carto/helpers/billing_cycle_spec.rb \
|
||||
spec/models/carto/user_table_spec.rb \
|
||||
spec/models/carto/organization_spec.rb \
|
||||
spec/models/carto/visualization_export_spec.rb \
|
||||
services/table-geocoder/spec/lib/abstract_table_geocoder_spec.rb \
|
||||
services/geocoder/spec/hires_batch_geocoder_spec.rb \
|
||||
services/geocoder/spec/hires_geocoder_spec.rb \
|
||||
services/geocoder/spec/hires_geocoder_factory_spec.rb \
|
||||
services/table-geocoder/spec/geocoder_cache_spec.rb \
|
||||
services/user-mover/spec/user_mover_spec.rb \
|
||||
$(NULL)
|
||||
|
||||
# Tests using spec_helper_min instead of spec_helper
|
||||
SPEC_HELPER_MIN_SPECS = \
|
||||
spec/models/carto/account_type_spec.rb \
|
||||
spec/models/carto/analysis_spec.rb \
|
||||
spec/models/carto/analysis_node_spec.rb \
|
||||
spec/models/carto/api_key_spec.rb \
|
||||
spec/models/carto/layer_spec.rb \
|
||||
spec/models/carto/mobile_app_presenter_spec.rb \
|
||||
spec/models/carto/notification_spec.rb \
|
||||
spec/models/carto/oauth_access_token_spec.rb \
|
||||
spec/models/carto/oauth_app_spec.rb \
|
||||
spec/models/carto/oauth_app_user_spec.rb \
|
||||
spec/models/carto/oauth_app_organization_spec.rb \
|
||||
spec/models/carto/oauth_authorization_code_spec.rb \
|
||||
spec/models/carto/oauth_refresh_token_spec.rb \
|
||||
spec/models/carto/overlay_spec.rb \
|
||||
spec/models/carto/rate_limit_spec.rb \
|
||||
spec/models/carto/received_notification_spec.rb \
|
||||
spec/models/carto/user_db_service_spec.rb \
|
||||
spec/models/carto/user_multifactor_auth_spec.rb \
|
||||
spec/models/table_registrar_spec.rb \
|
||||
spec/models/carto/user_migration_import_spec.rb \
|
||||
spec/requests/admin/organization_users_controller_spec.rb \
|
||||
spec/requests/carto/admin/mobile_apps_controller_spec.rb \
|
||||
spec/requests/carto/builder/datasets_controller_spec.rb \
|
||||
spec/requests/carto/api/analyses_controller_spec.rb \
|
||||
spec/requests/carto/api/maps_controller_spec.rb \
|
||||
spec/requests/carto/api/static_notifications_controller_spec.rb \
|
||||
spec/requests/carto/api/visualization_exports_controller_spec.rb \
|
||||
spec/requests/carto/api/users_controller_spec.rb \
|
||||
spec/requests/carto/api/table_presenter_spec.rb \
|
||||
spec/requests/carto/api/vizjson3_presenter_spec.rb \
|
||||
spec/requests/carto/api/public/users_controller_spec.rb \
|
||||
spec/requests/carto/oauth_provider_controller_spec.rb \
|
||||
spec/requests/carto/superadmin/organizations_controller_spec.rb \
|
||||
spec/requests/carto/superadmin/users_controller_spec.rb \
|
||||
spec/requests/carto/superadmin/user_migration_imports_spec.rb \
|
||||
spec/requests/carto/superadmin/user_migration_exports_spec.rb \
|
||||
spec/requests/carto/saml_controller_spec.rb \
|
||||
spec/services/carto/user_table_index_service_spec.rb \
|
||||
spec/services/carto/user_metadata_export_service_spec.rb \
|
||||
spec/services/carto/organization_metadata_export_service_spec.rb \
|
||||
spec/services/carto/redis_export_service_spec.rb \
|
||||
spec/lib/carto/password_validator_spec.rb \
|
||||
spec/lib/initializers/zz_patch_reconnect_spec.rb \
|
||||
spec/lib/cartodb/redis_vizjson_cache_spec.rb \
|
||||
spec/lib/carto/named_maps/template_spec.rb \
|
||||
services/dataservices-metrics/spec/unit/service_usage_metrics_spec.rb \
|
||||
spec/models/carto/mapcap_spec.rb \
|
||||
spec/requests/carto/api/api_keys_controller_spec.rb \
|
||||
spec/requests/carto/api/mapcaps_controller_spec.rb \
|
||||
spec/requests/carto/api/states_controller_spec.rb \
|
||||
spec/requests/carto/api/metrics_controller_spec.rb \
|
||||
spec/requests/carto/api/organization_notifications_controller_spec.rb \
|
||||
spec/requests/carto/api/received_notifications_controller_spec.rb \
|
||||
spec/requests/carto/api/multifactor_auths_controller_spec.rb \
|
||||
spec/lib/carto/tracking/events_spec.rb \
|
||||
spec/lib/carto/definition_spec.rb \
|
||||
spec/lib/carto/styles/cartography_spec.rb \
|
||||
spec/lib/carto/styles/point_spec.rb \
|
||||
spec/lib/carto/styles/polygon_spec.rb \
|
||||
spec/lib/carto/styles/line_spec.rb \
|
||||
spec/lib/carto/styles/geometry_spec.rb \
|
||||
spec/lib/carto/styles/presenters/cartocss_spec.rb \
|
||||
spec/lib/carto/forms_definition_spec.rb \
|
||||
spec/lib/carto/form_spec.rb \
|
||||
spec/lib/carto/oauth_provider/scopes/scopes_spec.rb \
|
||||
spec/models/carto/legend_spec.rb \
|
||||
spec/requests/carto/api/legends_controller_spec.rb \
|
||||
spec/lib/carto/legend_definition_validator_spec.rb \
|
||||
spec/lib/carto/legend_migrator_spec.rb \
|
||||
spec/lib/carto/mapcapped_visualization_updater_spec.rb \
|
||||
spec/requests/carto/api/snapshots_controller_specs.rb \
|
||||
spec/models/carto/snapshot_spec.rb \
|
||||
spec/helpers/application_helper_spec.rb \
|
||||
spec/lib/cartodb/common_data_redis_cache_spec.rb \
|
||||
spec/helpers/carto/html_safe_spec.rb \
|
||||
spec/models/carto/asset_spec.rb \
|
||||
spec/requests/carto/api/organization_assets_controller_spec.rb \
|
||||
spec/lib/carto/assets/image_assets_service_spec.rb \
|
||||
spec/lib/carto/assets/organization_image_assets_service_spec.rb \
|
||||
spec/lib/carto/assets/kuviz_assets_service_spec.rb \
|
||||
spec/lib/carto/storage_options/local_spec.rb \
|
||||
spec/lib/carto/visualization_invalidation_service_spec.rb \
|
||||
spec/lib/tasks/layers_rake_spec.rb \
|
||||
spec/lib/tasks/fix_unique_legends_spec.rb \
|
||||
spec/lib/tasks/oauth_rake_spec.rb \
|
||||
spec/lib/tasks/user_rake_spec.rb \
|
||||
spec/lib/tasks/user_database_host_update_rake_spec.rb \
|
||||
spec/models/carto/username_proposer_spec.rb \
|
||||
spec/services/carto/overquota_users_service_spec.rb \
|
||||
spec/services/visualization/common_data_service_spec.rb \
|
||||
spec/lib/carto/google_maps_api_spec.rb \
|
||||
spec/lib/tasks/fix_unique_overlays_spec.rb \
|
||||
spec/requests/password_resets_spec.rb \
|
||||
spec/requests/password_resets_controller_spec.rb \
|
||||
spec/models/carto/feature_flag_spec.rb \
|
||||
spec/mailers/user_mailer_spec.rb \
|
||||
spec/services/carto/user_multifactor_auth_update_service_spec.rb \
|
||||
spec/gears/carto_gears_api/users_service_spec.rb \
|
||||
spec/queries/carto/visualization_query_searcher_spec.rb \
|
||||
spec/queries/carto/visualization_query_orderer_spec.rb \
|
||||
spec/queries/carto/tag_query_builder_spec.rb \
|
||||
spec/requests/carto/api/tags_controller_spec.rb \
|
||||
spec/lib/carto/oauth/google/api_spec.rb \
|
||||
spec/queries/carto/dashboard_preview_searcher_spec.rb \
|
||||
spec/requests/carto/api/search_preview_controller_spec.rb \
|
||||
spec/requests/carto/api/public/oauth_apps_controller_spec.rb \
|
||||
spec/requests/carto/api/public/datasets_controller_spec.rb \
|
||||
spec/models/carto/user_migration_spec.rb \
|
||||
spec/requests/carto/api/public/data_observatory_controller_spec.rb \
|
||||
spec/lib/tasks/data_observatory_rake_spec.rb \
|
||||
spec/services/carto/do_licensing_service_spec.rb \
|
||||
$(NULL)
|
||||
|
||||
# This class must be tested isolated as pollutes namespace
|
||||
WORKING_SPECS_carto_db_class = \
|
||||
spec/helpers/carto_db_spec.rb \
|
||||
$(NULL)
|
||||
|
||||
CDB_PATH=lib/assets/javascripts/cdb
|
||||
|
||||
prepare-test-db:
|
||||
# Else coverage reports add up and hits/line metric is invalid
|
||||
rm -rf coverage
|
||||
ifdef JENKINS_URL
|
||||
cp .rspec_ci .rspec
|
||||
endif
|
||||
# TODO skip this if db already exists ?
|
||||
# Clean DB connections before drop test DB
|
||||
psql -U postgres -c "select pg_terminate_backend(pid) from pg_stat_activity where datname='carto_db_test'"
|
||||
MOCHA_OPTIONS=skip_integration RAILS_ENV=test bundle exec rake cartodb:test:prepare --trace
|
||||
|
||||
# TODO: Ongoing removal of groups, that's the reason of holes in numbering
|
||||
check-1:
|
||||
CHECK_SPEC=1 RAILS_ENV=test bundle exec rspec --require ./spec/rspec_configuration.rb $(WORKING_SPECS_1)
|
||||
check-2:
|
||||
CHECK_SPEC=2 RAILS_ENV=test bundle exec rspec --require ./spec/rspec_configuration.rb $(WORKING_SPECS_2)
|
||||
check-4:
|
||||
CHECK_SPEC=4 RAILS_ENV=test bundle exec rspec --require ./spec/rspec_configuration.rb $(WORKING_SPECS_4)
|
||||
check-5:
|
||||
CHECK_SPEC=5 RAILS_ENV=test bundle exec rspec --require ./spec/rspec_configuration.rb $(WORKING_SPECS_5)
|
||||
check-7:
|
||||
CHECK_SPEC=7 RAILS_ENV=test bundle exec rspec --require ./spec/rspec_configuration.rb $(WORKING_SPECS_7)
|
||||
check-9:
|
||||
CHECK_SPEC=9 RAILS_ENV=test bundle exec rspec --require ./spec/rspec_configuration.rb $(WORKING_SPECS_9)
|
||||
check-spec-helper-min:
|
||||
CHECK_SPEC=50 RAILS_ENV=test bundle exec rspec $(SPEC_HELPER_MIN_SPECS)
|
||||
check-carto-db-class:
|
||||
CHECK_SPEC=51 RAILS_ENV=test bundle exec rspec $(WORKING_SPECS_carto_db_class)
|
||||
|
||||
check-gear/%: %
|
||||
cd $< && bundle install && RAILS_ENV=test bundle exec rspec
|
||||
|
||||
check-gears: $(addprefix check-gear/, $(wildcard gears/*))
|
||||
|
||||
check-external: prepare-test-db
|
||||
|
||||
check-prepared: check-1 check-2 check-4 check-5 check-7 check-9 check-spec-helper-min check-carto-db-class
|
||||
|
||||
check: prepare-test-db check-prepared check-gears
|
||||
check-frontend:
|
||||
npm run test
|
||||
|
||||
|
||||
# update cartodb.js submodule files
|
||||
update_cdb:
|
||||
cd $(CDB_PATH); npm install
|
||||
cd $(CDB_PATH); make cartodb dist/cartodb.css
|
||||
cp $(CDB_PATH)/dist/cartodb.full.uncompressed.js vendor/assets/javascripts/cartodb.uncompressed.js
|
||||
cp $(CDB_PATH)/dist/cartodb.mod.torque.uncompressed.js vendor/assets/javascripts
|
||||
cp $(CDB_PATH)/dist/cartodb.css vendor/assets/stylesheets/cartodb.css
|
||||
|
||||
|
||||
cartodbui:
|
||||
curl http://libs.cartocdn.com/cartodbui/manifest_$(REV).yml > public/assets/manifest.yml
|
||||
|
||||
|
||||
.PHONY: develop_cdb cartodbui
|
5
Procfile
Normal file
@ -0,0 +1,5 @@
|
||||
web: bundle exec rails server -p $PORT
|
||||
sql: node ../CartoDB-SQL-API/app.js development
|
||||
tiler: node ../Windshaft-cartodb/app.js development
|
||||
redis: redis-server
|
||||
resque: script/resque
|
63
README.md
Normal file
@ -0,0 +1,63 @@
|
||||
# What is CARTO?
|
||||
|
||||
[![Code Climate](https://codeclimate.com/github/CartoDB/cartodb20.png)](https://codeclimate.com/github/CartoDB/cartodb20)
|
||||
[![Build Status](http://travis-ci.org/CartoDB/cartodb.png?branch=master)](http://travis-ci.org/CartoDB/cartodb)
|
||||
|
||||
CARTO is an open, powerful, and intuitive platform for discovering and predicting the key insights underlying the location data in our world.
|
||||
|
||||
Empower organizations to optimize operational performance, strategic investments, and everyday decisions with CARTO Engine—our embeddable platform for web and mobile apps—and the new CARTO Builder, a drag and drop analysis tool.
|
||||
|
||||
It was built to make it easier for people to tell their stories by
|
||||
providing them with flexible and intuitive ways to create maps and design
|
||||
geospatial applications. CARTO can be installed on your own server
|
||||
and we also offer a hosted service at [carto.com](https://carto.com).
|
||||
|
||||
If you would like to see some live demos, check out our
|
||||
[videos](http://www.vimeo.com/channels/carto) on Vimeo.
|
||||
We hope you like it!
|
||||
|
||||
![Map view](http://cartodb.s3.amazonaws.com/github/map.png)
|
||||
![Data View](http://cartodb.s3.amazonaws.com/github/dataset.png)
|
||||
|
||||
## What can I do with CARTO?
|
||||
|
||||
With CARTO, you can upload your geospatial data (Shapefiles, GeoJSON,
|
||||
etc) using a web form and then make it public or private.
|
||||
|
||||
After it is uploaded, you can visualize it in a dataset or on a map, search
|
||||
it using SQL, and apply map styles using CartoCSS. You can even access it
|
||||
using the CARTO [APIs](https://docs.carto.com/#cartodb-platform), or export it
|
||||
to a file.
|
||||
|
||||
In other words, with CARTO you can make awesome maps and build
|
||||
powerful geospatial applications! Definitely check out the [CARTO
|
||||
Platform](https://carto.com/platform) for interactive examples
|
||||
and code.
|
||||
|
||||
|
||||
## Installing
|
||||
|
||||
Read the [installation guide in CARTO developers documentation](http://cartodb.readthedocs.org/en/latest/install.html)
|
||||
|
||||
## How do I upgrade CARTO?
|
||||
|
||||
See [UPGRADE](UPGRADE) for instructions about upgrading CARTO.
|
||||
|
||||
For upgrade of Windshaft-CartoDB and CartoDB-SQL-API see the relative
|
||||
documentation.
|
||||
|
||||
## Developing & Contributing to CARTO
|
||||
|
||||
See [our contributing doc](CONTRIBUTING.md) for how you can improve CARTO, but you will need to sign a Contributor License Agreement (CLA) before making a submission, [learn more here](https://carto.com/contributions).
|
||||
|
||||
## Testing
|
||||
|
||||
Check the [testing doc](TESTING.md) section.
|
||||
|
||||
## Requirements
|
||||
|
||||
CARTO works in any modern browser, but if you want more info:
|
||||
|
||||
![Chrome](https://cdnjs.cloudflare.com/ajax/libs/browser-logos/39.3.0/archive/chrome_12-48/chrome_12-48_48x48.png) | ![Firefox](https://cdnjs.cloudflare.com/ajax/libs/browser-logos/39.3.0/archive/firefox_1.5-3/firefox_1.5-3_48x48.png) | ![IE](https://cdnjs.cloudflare.com/ajax/libs/browser-logos/39.3.0/edge-tile/edge-tile_48x48.png) | ![Opera](https://cdnjs.cloudflare.com/ajax/libs/browser-logos/39.3.0/opera/opera_48x48.png) | ![Safari](https://cdnjs.cloudflare.com/ajax/libs/browser-logos/39.3.0/safari/safari_48x48.png)
|
||||
--- | --- | --- | --- | --- |
|
||||
31+ ✔ | 38+ ✔ | 11+ ✔ | 31+ ✔ | 8+ ✔ |
|
40
Rakefile
Normal file
@ -0,0 +1,40 @@
|
||||
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||
require File.expand_path('../config/application', __FILE__)
|
||||
|
||||
require 'rake/dsl_definition'
|
||||
require 'rake'
|
||||
require 'resque/tasks'
|
||||
require 'active_support/dependencies'
|
||||
|
||||
# Do not load rake tasks when running resque: https://github.com/CartoDB/cartodb/issues/11046
|
||||
if Rake.application.top_level_tasks.reject { |t| ['environment', 'resque:work'].include?(t) }.empty?
|
||||
CartoDB::Application.paths['lib/tasks'] = []
|
||||
load 'lib/tasks/resque.rake'
|
||||
end
|
||||
|
||||
CartoDB::Application.load_tasks
|
||||
|
||||
rake_tasks = Rake.application.instance_variable_get('@tasks')
|
||||
rake_tasks.delete('default')
|
||||
|
||||
# Remove ActiveRecord tasks and replace with Sequel versions
|
||||
rake_tasks.select { |k, _| k.starts_with?('sequel') }.each { |k, v| rake_tasks[k.sub('sequel:', 'db:')] = v }
|
||||
rake_tasks.select { |k, _| k.starts_with?('cartodb:db') }.each { |k, v| rake_tasks[k.sub('cartodb:db:', 'db:')] = v }
|
||||
|
||||
if Rails.env.test?
|
||||
namespace :spec do
|
||||
desc "Run the code examples in spec/lib"
|
||||
RSpec::Core::RakeTask.new(:cartodb_lib) do |t|
|
||||
t.pattern = "spec/lib/**/*_spec.rb"
|
||||
end
|
||||
desc "Run the code examples in spec/acceptance/api"
|
||||
RSpec::Core::RakeTask.new(:cartodb_api) do |t|
|
||||
t.pattern = "spec/acceptance/api/*_spec.rb"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
task :default => ["spec:models", "spec:cartodb_lib", "spec:acceptance"]
|
||||
|
||||
task "resque:setup" => :environment
|
54
TESTING.md
Normal file
@ -0,0 +1,54 @@
|
||||
Testing CartoDB
|
||||
===============
|
||||
|
||||
Easy way
|
||||
--------
|
||||
|
||||
Just run "make check".
|
||||
|
||||
Detailed way
|
||||
------------
|
||||
|
||||
CartoDB tests are based on [Ruby Spec](http://rspec.info/).
|
||||
The procedure to run them is as follows:
|
||||
|
||||
# Prepare test database
|
||||
bundle exec rake cartodb:test:prepare
|
||||
|
||||
# Run all specs
|
||||
bundle exec rspec
|
||||
|
||||
|
||||
If you want to run specific tests, rather than all of them, you
|
||||
can specify them on the `rspec` command line, like:
|
||||
|
||||
bundle exec rspec spec/lib/sql_test_spec.rb
|
||||
|
||||
|
||||
To avoid wasting time and resources creating once and again test users,
|
||||
if you require 'spec_helper' you have two "global test users" for the whole suite to use,
|
||||
$user_1 and $user_2. Just take care to not destroy or leave them in inconsistent state between test batteries.
|
||||
|
||||
You can also use the following `runParallelTests.sh` script to run the tests in a multithreaded way.
|
||||
Run `script/ci/runParallelTests.sh X` where X is a number of threads to use.
|
||||
|
||||
Troubleshooting
|
||||
---------------
|
||||
|
||||
Common system configuration issues are reported in this section.
|
||||
|
||||
- "No such user: test_cartodb_user_###"
|
||||
|
||||
Make sure test.port in config/database.yml is not pointing to
|
||||
pg_bouncer, as dynamically created database roles aren't easily
|
||||
supported by it (you'd need to explicitly list allowed usernames,
|
||||
and over 70 new users are created during a full testsuite run).
|
||||
|
||||
|
||||
Speeding up test runs (NOTE: Untested since a long time, might not work)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
CartoDB is a large app.
|
||||
We recommend you use the [spin gem](https://github.com/jstorimer/spin/)
|
||||
to load the main application into memory while you are testing.
|
||||
TODO: document how
|
61
UPGRADE
Normal file
@ -0,0 +1,61 @@
|
||||
Standard migration (default)
|
||||
----------------------------
|
||||
|
||||
Unless stated otherwise, assume any new CARTO release requires calling these commands:
|
||||
|
||||
$ bundle exec rake db:migrate
|
||||
|
||||
NOTES:
|
||||
- Redis server must be listening on the configured port (see config/app_config.yml) for some of the steps below to work
|
||||
- Rails must be restarted after an upgrade
|
||||
|
||||
Extension migration
|
||||
-------------------
|
||||
|
||||
Most CARTO releases need an updated cartodb-postgresql extension. After installing it, it must be upgraded in all existing databases:
|
||||
|
||||
$ bundle exec rake cartodb:db:upgrade_postgres_extension
|
||||
|
||||
Specific version notes
|
||||
======================
|
||||
|
||||
3.1.0 onwards
|
||||
-------------
|
||||
|
||||
Upgrade notes are now kept in NEWS.md. Check the NOTICE section of the release you are upgrading to.
|
||||
|
||||
3.0.0 -> 3.1.0
|
||||
--------------
|
||||
|
||||
* Run rake task:
|
||||
bundle exec rake cartodb:overlays:create_overlays
|
||||
|
||||
if the task is run more than one time (because something happened) a flag to remove previous overlays should be pass
|
||||
|
||||
bundle exec rake cartodb:overlays:create_overlays[true]
|
||||
|
||||
this will remove all the overlays for visualizations so it MUST NOT be called after visualization overlays has been customized
|
||||
|
||||
2.x -> 3.0.0
|
||||
------------
|
||||
|
||||
* Install CartoDB extension version 0.3.x
|
||||
* Run rake tasks:
|
||||
- bundle exec rake cartodb:db:create_default_vis_permissions
|
||||
- bundle exec rake cartodb:db:populate_permission_entity_id
|
||||
|
||||
|
||||
Mandatory migration
|
||||
-------------------
|
||||
|
||||
Versions marked at the NEWS.md as requiring this migration must:
|
||||
|
||||
- ensure the required version of cartodb-postgresql extension
|
||||
(see README.md) is installed on the user database hosts
|
||||
|
||||
- run all this commands:
|
||||
|
||||
$ bundle exec rake db:migrate
|
||||
$ bundle exec rake cartodb:db:reset_trigger_check_quota
|
||||
$ bundle exec rake cartodb:db:load_functions
|
||||
$ bundle exec rake cartodb:db:create_schemas
|
BIN
app/assets/flash/ZeroClipboard.swf
Normal file
BIN
app/assets/fonts/Roboto-Medium.woff
Normal file
BIN
app/assets/fonts/SourceCodePro-Regular.ttf
Executable file
BIN
app/assets/fonts/helvetica-bold.eot
Executable file
346
app/assets/fonts/helvetica-bold.svg
Executable file
@ -0,0 +1,346 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata></metadata>
|
||||
<defs>
|
||||
<font id="helveticabold" horiz-adv-x="1139" >
|
||||
<font-face units-per-em="2048" ascent="1638" descent="-410" />
|
||||
<missing-glyph horiz-adv-x="569" />
|
||||
<glyph unicode="fi" horiz-adv-x="1251" d="M28 879v201h156v70q0 174 77 259q69 80 281 80q26 0 53 -2t56 -4v-232q-20 1 -39 1.5t-46 0.5q-67 0 -82 -37t-13 -116v-20h187v-201h-187v-879h-284v879h-159zM827 0v1085h284v-1085h-284zM827 1223v260h279v-260h-279z" />
|
||||
<glyph unicode="fl" horiz-adv-x="1251" d="M28 879v201h156v70q0 174 77 259q69 80 281 80q26 0 53 -2t56 -4v-232q-20 1 -39 1.5t-46 0.5q-67 0 -82 -37t-13 -116v-20h187v-201h-187v-879h-284v879h-159zM827 0v1474h284v-1474h-284z" />
|
||||
<glyph horiz-adv-x="0" />
|
||||
<glyph horiz-adv-x="0" />
|
||||
<glyph horiz-adv-x="0" />
|
||||
<glyph unicode="	" horiz-adv-x="569" />
|
||||
<glyph unicode="
" horiz-adv-x="569" />
|
||||
<glyph unicode="
" horiz-adv-x="569" />
|
||||
<glyph unicode=" " horiz-adv-x="569" />
|
||||
<glyph unicode="	" horiz-adv-x="569" />
|
||||
<glyph unicode=" " horiz-adv-x="569" />
|
||||
<glyph unicode="!" horiz-adv-x="682" d="M225 1095v374h313v-374l-81 -688h-149zM232 0v289h298v-289h-298z" />
|
||||
<glyph unicode=""" horiz-adv-x="971" d="M167 1474h273l-48 -609h-180zM546 1474h273l-47 -609h-180z" />
|
||||
<glyph unicode="#" d="M0 400l45 168h203l79 292h-204l45 168h204l109 403h199l-109 -403h166l106 403h199l-106 -403h201l-45 -168h-201l-81 -292h204l-45 -168h-204l-107 -400h-199l107 400h-164l-109 -400h-199l109 400h-203zM448 568h163l81 292h-166z" />
|
||||
<glyph unicode="$" d="M59 440h270q14 -126 39 -169q39 -67 153 -87v427l-81 24q-191 56 -269.5 156t-78.5 241q0 93 30.5 169t85.5 131q71 71 158 98q53 17 155 25v133h95v-135q163 -13 256 -80q169 -107 175 -347h-263q-8 89 -30 130q-38 71 -138 78v-381q238 -82 320 -145q135 -105 135 -296 q0 -252 -185 -366q-113 -70 -268 -82v-201h-97v199q-197 22 -294 86q-171 115 -168 392zM350 1064q0 -84 63 -133q35 -27 108 -50v351q-87 -2 -129 -46.5t-42 -121.5zM616 187q79 10 115 36q63 46 63 159q0 86 -59 136q-35 29 -119 60v-391z" />
|
||||
<glyph unicode="%" horiz-adv-x="1821" d="M47 1071q0 154 109 263t263 109t263 -109t109 -263t-108.5 -263t-263.5 -109q-154 0 -263 109t-109 263zM260 1071q0 -66 46.5 -112.5t112.5 -46.5t112.5 46.5t46.5 112.5t-46.5 112.5t-112.5 46.5t-112.5 -46.5t-46.5 -112.5zM421 -38l811 1488h152l-808 -1488h-155z M1019 343q0 155 109 263.5t263 108.5t263 -109t109 -263t-109 -263t-263 -109t-263 109t-109 263zM1232 343q0 -66 46.5 -112.5t112.5 -46.5t112.5 46.5t46.5 112.5t-46.5 112.5t-112.5 46.5t-112.5 -46.5t-46.5 -112.5z" />
|
||||
<glyph unicode="&" horiz-adv-x="1479" d="M111 389q0 133 66 228t216 188l31 19q-64 72 -99 147t-35 156q0 161 108 251.5t280 90.5q157 0 259.5 -92.5t102.5 -236.5q0 -130 -61.5 -211t-180.5 -150l209 -258q36 52 55.5 113t20.5 129h253q-6 -134 -64 -271q-32 -77 -104 -170l268 -322h-346l-102 125 q-74 -69 -138 -102q-114 -59 -263 -59q-224 0 -350 132t-126 293zM395 398q0 -73 59.5 -134t152.5 -61q70 0 132.5 32.5t101.5 72.5l-270 334q-107 -71 -141.5 -125t-34.5 -119zM552 1137q0 -40 28 -84q18 -29 78 -103q60 42 86 71q50 54 50 117q0 46 -30 82t-91 36 q-38 0 -71 -21q-50 -31 -50 -98z" />
|
||||
<glyph unicode="'" horiz-adv-x="487" d="M99 1474h273l-50 -609h-173z" />
|
||||
<glyph unicode="(" horiz-adv-x="682" d="M89 558q0 274 117 544q79 184 231 396h215l-61 -112q-126 -231 -175 -484q-32 -166 -32 -362q0 -306 89 -563q52 -152 184 -390h-211l-71 97q-69 88 -147 262q-139 311 -139 612z" />
|
||||
<glyph unicode=")" horiz-adv-x="682" d="M21 -413q132 238 184 390q89 257 89 563q0 196 -32 362q-49 253 -175 484l-61 112h215q152 -212 231 -396q117 -270 117 -544q0 -301 -139 -612q-78 -174 -147 -262l-71 -97h-211z" />
|
||||
<glyph unicode="*" horiz-adv-x="797" d="M47 1161l47 149l209 -68v241h173v-241l209 68l47 -149l-213 -66l139 -199l-128 -91l-139 188l-143 -188l-128 91l140 199z" />
|
||||
<glyph unicode="+" horiz-adv-x="1196" d="M73 412v261h410v410h263v-410h410v-261h-410v-412h-263v412h-410z" />
|
||||
<glyph unicode="," horiz-adv-x="569" d="M118 0v298h308v-258q0 -68 -18 -142t-67 -128q-53 -58 -124.5 -87.5t-98.5 -29.5v110q86 24 126.5 80t46.5 157h-173z" />
|
||||
<glyph unicode="-" horiz-adv-x="682" d="M47 436v270h574v-270h-574z" />
|
||||
<glyph unicode="." horiz-adv-x="569" d="M128 0v298h303v-298h-303z" />
|
||||
<glyph unicode="/" horiz-adv-x="569" d="M-112 0l571 1519h237l-573 -1519h-235z" />
|
||||
<glyph unicode="0" d="M64 711q0 359 111.5 554t388.5 195t388.5 -195t111.5 -554t-111.5 -553t-388.5 -194t-388.5 194t-111.5 553zM355 711q0 -250 41 -382.5t168 -132.5t166.5 132.5t39.5 382.5q0 262 -39.5 388t-166.5 126t-168 -126t-41 -388z" />
|
||||
<glyph unicode="1" d="M142 1000v194q135 6 189 18q86 19 140 76q37 39 56 104q11 39 11 58h237v-1450h-292v1000h-341z" />
|
||||
<glyph unicode="2" d="M64 0q4 156 67 285q61 145 288 307q197 141 255 202q89 95 89 208q0 92 -51 153t-146 61q-130 0 -177 -97q-27 -56 -32 -178h-277q7 185 67 299q114 217 405 217q230 0 366 -127.5t136 -337.5q0 -161 -96 -286q-63 -83 -207 -185l-114 -81q-107 -76 -146.5 -110 t-66.5 -79h633v-251h-993z" />
|
||||
<glyph unicode="3" d="M54 445h280q0 -87 28 -144q52 -105 189 -105q84 0 146.5 57.5t62.5 165.5q0 143 -116 191q-66 27 -208 27v204q139 2 194 27q95 42 95 170q0 83 -48.5 135t-136.5 52q-101 0 -148.5 -64t-45.5 -171h-266q4 108 37 205q35 85 110 157q56 51 133 78t189 27 q208 0 335.5 -107.5t127.5 -288.5q0 -128 -76 -216q-48 -55 -100 -75q39 0 112 -67q109 -101 109 -276q0 -184 -127.5 -323.5t-377.5 -139.5q-308 0 -428 201q-63 107 -70 280z" />
|
||||
<glyph unicode="4" d="M54 312v249l533 880h320v-906h164v-223h-164v-312h-279v312h-574zM265 535h363v626z" />
|
||||
<glyph unicode="5" d="M54 388h284q17 -93 65 -143.5t140 -50.5q106 0 161.5 74.5t55.5 187.5q0 111 -52 187.5t-162 76.5q-52 0 -90 -13q-67 -24 -101 -89l-256 12l102 801h799v-242h-593l-52 -317q66 43 103 57q62 23 151 23q180 0 314 -121t134 -352q0 -201 -129 -359t-386 -158 q-207 0 -340 111t-148 315z" />
|
||||
<glyph unicode="6" d="M64 653q0 166 14 270q25 185 97 308q62 105 162.5 169t240.5 64q202 0 322 -103.5t135 -275.5h-284q0 35 -27 77q-46 68 -139 68q-139 0 -198 -156q-32 -86 -44 -254q53 63 123 92t160 29q193 0 316.5 -131t123.5 -335q0 -203 -121 -358t-376 -155q-274 0 -404 229 q-101 179 -101 462zM350 459q0 -117 63 -191t160 -74q95 0 149.5 71.5t54.5 185.5q0 127 -62 194.5t-152 67.5q-73 0 -129 -44q-84 -65 -84 -210z" />
|
||||
<glyph unicode="7" d="M52 1175l4 256h1024v-223q-64 -63 -178 -224.5t-191 -333.5q-61 -135 -110 -330t-49 -320h-296q13 390 256 811q157 261 263 364h-723z" />
|
||||
<glyph unicode="8" d="M54 402q0 122 55.5 221t162.5 149q-105 70 -136.5 151.5t-31.5 152.5q0 158 119 269.5t336 111.5t336 -111.5t119 -269.5q0 -71 -31.5 -152.5t-136.5 -141.5q107 -60 161 -159t54 -221q0 -183 -135.5 -311.5t-378.5 -128.5t-368 128.5t-125 311.5zM350 421 q0 -107 55.5 -166t153.5 -59t153.5 59t55.5 166q0 111 -56.5 168.5t-152.5 57.5t-152.5 -57.5t-56.5 -168.5zM376 1044q0 -79 48.5 -129t134.5 -50q87 0 134.5 50t47.5 129q0 86 -47.5 134.5t-134.5 48.5q-86 0 -134.5 -48.5t-48.5 -134.5z" />
|
||||
<glyph unicode="9" d="M61 940q0 233 134.5 377.5t349.5 144.5q331 0 454 -293q70 -166 70 -437q0 -263 -67 -439q-128 -335 -470 -335q-163 0 -293 96.5t-149 281.5h284q10 -64 54 -104t117 -40q141 0 198 156q31 86 39 251q-39 -49 -83 -75q-80 -48 -197 -48q-173 0 -307 119.5t-134 344.5z M350 966q0 -129 52.5 -193.5t161.5 -64.5q59 0 111 34q97 62 97 215q0 123 -57.5 195t-157.5 72q-73 0 -125 -41q-82 -64 -82 -217z" />
|
||||
<glyph unicode=":" horiz-adv-x="682" d="M232 0v298h303v-298h-303zM232 749v298h303v-298h-303z" />
|
||||
<glyph unicode=";" horiz-adv-x="682" d="M232 0v298h308v-258q0 -69 -18 -142.5t-67 -127.5q-51 -57 -123 -87t-100 -30v110q101 29 141 103q25 46 32 134h-173zM232 749v298h303v-298h-303z" />
|
||||
<glyph unicode="<" horiz-adv-x="1196" d="M23 414v256l1178 448v-279l-841 -297l841 -298v-278z" />
|
||||
<glyph unicode="=" horiz-adv-x="1196" d="M73 177v263h1083v-263h-1083zM73 644v263h1083v-263h-1083z" />
|
||||
<glyph unicode=">" horiz-adv-x="1196" d="M23 -34v278l842 298l-842 297v279l1178 -450v-254z" />
|
||||
<glyph unicode="?" horiz-adv-x="1251" d="M123 1009q12 285 199 404q118 76 290 76q226 0 375.5 -108t149.5 -320q0 -130 -65 -219q-38 -54 -146 -138l-71 -55q-58 -45 -77 -105q-12 -38 -13 -118h-270q6 169 32 233.5t134 148.5l73 57q36 27 58 59q40 55 40 121q0 76 -44.5 138.5t-162.5 62.5q-116 0 -164.5 -77 t-48.5 -160h-289zM488 0v289h298v-289h-298z" />
|
||||
<glyph unicode="@" horiz-adv-x="1997" d="M199 724q0 328 236 556q248 241 635 241q315 0 522 -165q218 -174 218 -462q0 -227 -138 -389.5t-315 -162.5q-92 0 -141.5 52t-49.5 107q0 7 0.5 15.5t1.5 18.5q-38 -72 -85 -115q-85 -77 -204 -77q-121 0 -201.5 87t-80.5 243q0 181 123 339t302 158q105 0 163 -58 q44 -45 59 -103l36 126h189l-128 -434q-15 -53 -21.5 -78.5t-6.5 -44.5q0 -30 20 -56.5t64 -26.5q86 0 172.5 112.5t86.5 298.5q0 275 -236 395q-148 76 -333 76q-340 0 -546 -208q-186 -188 -186 -451q0 -292 218 -463q193 -151 471 -151q190 0 355 70q90 37 186 105l24 17 l73 -112q-142 -110 -307.5 -167.5t-343.5 -57.5q-415 0 -643 258q-189 214 -189 507zM815 653q0 -73 33.5 -118t94.5 -45q107 0 175.5 162.5t68.5 255.5q0 53 -32 89t-86 36q-104 0 -179 -129.5t-75 -250.5z" />
|
||||
<glyph unicode="A" horiz-adv-x="1479" d="M52 0l526 1474h348l522 -1474h-334l-95 303h-543l-102 -303h-322zM559 557h374l-184 580zM750 1474z" />
|
||||
<glyph unicode="B" horiz-adv-x="1479" d="M161 0v1474h716q271 -4 384 -157q68 -94 68 -225q0 -135 -68 -217q-38 -46 -112 -84q113 -41 170.5 -130t57.5 -216q0 -131 -66 -235q-42 -69 -105 -116q-71 -54 -167.5 -74t-209.5 -20h-668zM455 256h362q97 0 151 26q98 48 98 184q0 115 -95 158q-53 24 -149 25h-367 v-393zM455 893h362q97 0 157.5 36.5t60.5 129.5q0 103 -80 136q-69 23 -176 23h-324v-325z" />
|
||||
<glyph unicode="C" horiz-adv-x="1479" d="M92 725q0 386 207 595q180 182 458 182q372 0 544 -244q95 -137 102 -275h-308q-30 106 -77 160q-84 96 -249 96q-168 0 -265 -135.5t-97 -383.5t102.5 -371.5t260.5 -123.5q162 0 247 106q47 57 78 171h305q-40 -241 -204.5 -392t-421.5 -151q-318 0 -500 204 q-182 205 -182 562zM748 1519z" />
|
||||
<glyph unicode="D" horiz-adv-x="1479" d="M156 0v1474h635q137 -2 228 -32q155 -51 251 -187q77 -110 105 -238t28 -244q0 -294 -118 -498q-160 -275 -494 -275h-635zM455 256h284q218 0 304 215q47 118 47 281q0 225 -70.5 345.5t-280.5 120.5h-284v-962z" />
|
||||
<glyph unicode="E" horiz-adv-x="1366" d="M165 0v1474h1081v-261h-780v-313h716v-256h-716v-379h816v-265h-1117z" />
|
||||
<glyph unicode="F" horiz-adv-x="1251" d="M156 0v1472h1045v-259h-739v-339h647v-256h-647v-618h-306z" />
|
||||
<glyph unicode="G" horiz-adv-x="1593" d="M85 722q0 358 197 574t521 216q281 0 451.5 -142.5t195.5 -355.5h-303q-35 151 -171 211q-76 33 -169 33q-178 0 -292.5 -134.5t-114.5 -404.5q0 -272 124 -385t282 -113q155 0 254 89.5t122 234.5h-341v246h614v-791h-204l-31 184q-89 -105 -160 -148q-122 -75 -300 -75 q-293 0 -480 203q-195 204 -195 558zM802 1512z" />
|
||||
<glyph unicode="H" horiz-adv-x="1479" d="M154 0v1474h305v-562h576v562h306v-1474h-306v658h-576v-658h-305z" />
|
||||
<glyph unicode="I" horiz-adv-x="569" d="M132 0v1474h306v-1474h-306zM285 1503z" />
|
||||
<glyph unicode="J" d="M45 525v34h291v-34q4 -171 37.5 -240.5t143.5 -69.5q109 0 144 76q21 45 21 152v1031h308v-1026q0 -188 -65 -298q-110 -186 -397 -186t-385 150.5t-98 410.5z" />
|
||||
<glyph unicode="K" horiz-adv-x="1479" d="M161 0v1474h303v-607l569 607h398l-604 -607l635 -867h-396l-455 644l-147 -151v-493h-303z" />
|
||||
<glyph unicode="L" horiz-adv-x="1251" d="M156 0v1474h308v-1209h730v-265h-1038z" />
|
||||
<glyph unicode="M" horiz-adv-x="1706" d="M151 0v1474h448l268 -1159l266 1159h443v-1474h-287v997q0 43 1 120.5t1 119.5l-279 -1237h-299l-277 1237q0 -42 1 -119.5t1 -120.5v-997h-287z" />
|
||||
<glyph unicode="N" horiz-adv-x="1479" d="M151 0v1474h323l587 -1029v1029h287v-1474h-308l-602 1047v-1047h-287zM761 1477z" />
|
||||
<glyph unicode="O" horiz-adv-x="1593" d="M101 739q0 405 224 608q167 172 483 172t483 -172q223 -203 223 -608q0 -397 -223 -608q-167 -172 -483 -172t-483 172q-224 211 -224 608zM407 739q0 -249 109 -384t292 -135t290.5 135t107.5 384q0 248 -107.5 383.5t-290.5 135.5t-292 -135t-109 -384zM808 1519z" />
|
||||
<glyph unicode="P" horiz-adv-x="1366" d="M163 0v1474h642q222 0 354 -114t132 -353q0 -261 -132 -369t-377 -108h-313v-530h-306zM469 784h287q109 0 169.5 53t60.5 168t-60.5 164t-169.5 49h-287v-434z" />
|
||||
<glyph unicode="Q" horiz-adv-x="1593" d="M101 739q0 404 234 611q191 169 475 169q286 0 480 -179q224 -207 224 -579q0 -197 -48 -330q-39 -127 -115 -211l170 -159l-161 -168l-178 168q-81 -49 -140 -69q-99 -33 -237 -33q-288 0 -476 172q-228 207 -228 608zM407 739q0 -303 156 -434q101 -85 242 -85 q53 0 102 13q27 7 69 25l-149 142l159 166l149 -142q35 72 49 126q22 81 22 189q0 248 -101.5 383.5t-296.5 135.5q-183 0 -292 -130t-109 -389z" />
|
||||
<glyph unicode="R" horiz-adv-x="1479" d="M163 0v1474h723q155 -3 238.5 -38t141.5 -103q48 -56 76 -124t28 -155q0 -105 -53 -206.5t-175 -143.5q102 -41 144.5 -116.5t42.5 -230.5v-99q0 -101 8 -137q12 -57 56 -84v-37h-339q-14 49 -20 79q-12 62 -13 127l-2 137q-2 141 -51.5 188t-185.5 47h-318v-578h-301z M464 822h349q104 0 156 24q92 42 92 166q0 134 -89 180q-50 26 -150 26h-358v-396z" />
|
||||
<glyph unicode="S" horiz-adv-x="1366" d="M85 455h294q14 -101 55 -151q75 -91 257 -91q109 0 177 24q129 46 129 171q0 73 -64 113q-64 39 -201 69l-156 35q-230 52 -318 113q-149 102 -149 319q0 198 144 329t423 131q233 0 397.5 -123.5t172.5 -358.5h-296q-8 133 -116 189q-72 37 -179 37q-119 0 -190 -48 t-71 -134q0 -79 70 -118q45 -26 192 -61l254 -61q167 -40 252 -107q132 -104 132 -301q0 -202 -154.5 -335.5t-436.5 -133.5q-288 0 -453 131.5t-165 361.5zM678 1519z" />
|
||||
<glyph unicode="T" horiz-adv-x="1251" d="M33 1213v261h1194v-261h-441v-1213h-310v1213h-443z" />
|
||||
<glyph unicode="U" horiz-adv-x="1479" d="M156 568v906h313v-906q0 -152 36 -222q56 -124 244 -124q187 0 243 124q36 70 36 222v906h313v-906q0 -235 -73 -366q-136 -240 -519 -240t-520 240q-73 131 -73 366zM749 1474z" />
|
||||
<glyph unicode="V" horiz-adv-x="1366" d="M47 1474h329l320 -1119l323 1119h320l-503 -1474h-291z" />
|
||||
<glyph unicode="W" horiz-adv-x="1933" d="M30 1474h327l195 -844l42 -235l43 230l166 849h325l175 -844l45 -235l45 226l197 853h313l-415 -1474h-294l-178 862l-52 285l-52 -285l-178 -862h-286z" />
|
||||
<glyph unicode="X" horiz-adv-x="1366" d="M33 0l474 751l-451 723h368l263 -479l270 479h356l-451 -711l479 -763h-374l-280 502l-296 -502h-358z" />
|
||||
<glyph unicode="Y" horiz-adv-x="1366" d="M35 1474h363l306 -642l293 642h349l-493 -920v-554h-308v554zM691 1474z" />
|
||||
<glyph unicode="Z" horiz-adv-x="1251" d="M52 0v260l761 953h-742v261h1126v-247l-771 -967h773v-260h-1147zM634 1474z" />
|
||||
<glyph unicode="[" horiz-adv-x="682" d="M128 -394v1882h502v-208h-232v-1465h232v-209h-502z" />
|
||||
<glyph unicode="\" horiz-adv-x="569" d="M-112 1519h235l573 -1519h-237z" />
|
||||
<glyph unicode="]" horiz-adv-x="682" d="M47 -185h232v1469h-232v204h502v-1882h-502v209z" />
|
||||
<glyph unicode="^" horiz-adv-x="1196" d="M139 590l368 884h225l367 -884h-251l-227 566l-230 -566h-252z" />
|
||||
<glyph unicode="_" d="M0 -155h1139v-101h-1139v101z" />
|
||||
<glyph unicode="`" horiz-adv-x="682" d="M-50 1536h317l192 -299h-206zM290 1119z" />
|
||||
<glyph unicode="a" d="M59 290q0 201 155 291q85 49 250 70l97 12q79 10 113 25q61 26 61 81q0 67 -46.5 92.5t-136.5 25.5q-101 0 -143 -50q-30 -37 -40 -100h-275q9 143 80 235q113 144 388 144q179 0 318 -71t139 -268v-500q0 -52 2 -126q3 -56 17 -76t42 -33v-42h-310q-13 33 -18 62t-8 66 q-59 -64 -136 -109q-92 -53 -208 -53q-148 0 -244.5 84.5t-96.5 239.5zM345 311q0 -73 40.5 -105.5t98.5 -32.5q92 0 169.5 54t80.5 197v106q-27 -17 -54.5 -27.5t-75.5 -19.5l-64 -12q-90 -16 -129 -39q-66 -39 -66 -121zM576 1119z" />
|
||||
<glyph unicode="b" horiz-adv-x="1251" d="M123 0v1472h284v-524q54 76 119 116q77 50 196 50q215 0 336.5 -155t121.5 -400q0 -254 -120 -421t-335 -167q-135 0 -217 54q-49 32 -106 112v-137h-279zM398 530q0 -140 62 -232t189 -92q110 0 171 89t61 234q0 116 -30 192q-57 144 -210 144q-155 0 -213 -141 q-30 -75 -30 -194z" />
|
||||
<glyph unicode="c" d="M71 523q0 281 137 437t378 156q205 0 335.5 -92t154.5 -325h-292q-8 61 -41 110q-48 66 -149 66q-144 0 -197 -143q-28 -76 -28 -202q0 -120 28 -193q51 -136 192 -136q100 0 142 54t51 140h291q-10 -130 -94 -246q-134 -187 -397 -187t-387 156t-124 405zM591 1119z" />
|
||||
<glyph unicode="d" horiz-adv-x="1251" d="M63 517q0 279 128.5 439t343.5 160q99 0 176 -43.5t125 -120.5v520h289v-1472h-277v151q-61 -97 -139 -141t-194 -44q-191 0 -321.5 154.5t-130.5 396.5zM357 538q0 -151 59.5 -241.5t180.5 -90.5t184 90t63 233q0 200 -101 286q-62 52 -144 52q-125 0 -183.5 -94.5 t-58.5 -234.5z" />
|
||||
<glyph unicode="e" d="M47 534q0 283 143.5 434t372.5 151q136 0 245 -51t180 -161q64 -97 83 -225q9 -63 9 -174v-42h-746q6 -164 103 -230q59 -41 142 -41q88 0 143 50q30 27 53 75h291q-11 -97 -101 -197q-140 -159 -392 -159q-208 0 -367 134t-159 436zM341 654h443q-7 113 -68.5 171.5 t-152.5 58.5q-99 0 -153.5 -62t-68.5 -168zM583 1119z" />
|
||||
<glyph unicode="f" horiz-adv-x="682" d="M21 879v201h156v70q0 175 59 241q62 98 299 98q27 0 49 -1.5t60 -4.5v-232q-24 3 -80 5h-6q-52 0 -72 -26q-22 -26 -22 -58v-92h187v-201h-187v-879h-284v879h-159z" />
|
||||
<glyph unicode="g" horiz-adv-x="1251" d="M66 542q0 243 121 408.5t343 165.5q82 0 143 -25q104 -43 168 -158v157h277v-1034q0 -211 -71 -318q-122 -184 -468 -184q-209 0 -341 82t-146 245h310q12 -50 39 -72q46 -39 155 -39q154 0 206 103q34 66 34 222v70q-41 -70 -88 -105q-85 -65 -221 -65 q-210 0 -335.5 147.5t-125.5 399.5zM361 541q0 -95 32 -169q58 -138 208 -138q100 0 169 75.5t69 240.5q0 155 -65.5 236t-175.5 81q-150 0 -207 -141q-30 -75 -30 -185zM621 1119z" />
|
||||
<glyph unicode="h" horiz-adv-x="1251" d="M135 0v1469h284v-521q62 95 143.5 132.5t171.5 37.5q101 0 183.5 -35t135.5 -107q45 -61 55 -125.5t10 -210.5v-640h-291v663q0 88 -30 142q-39 76 -148 76q-113 0 -171.5 -75.5t-58.5 -215.5v-590h-284z" />
|
||||
<glyph unicode="i" horiz-adv-x="569" d="M137 0v1090h289v-1090h-289zM137 1220v263h289v-263h-289z" />
|
||||
<glyph unicode="j" horiz-adv-x="569" d="M9 -209q24 -2 34 -2.5t18 -0.5q42 0 63.5 20.5t21.5 79.5v1197h285v-1202q0 -165 -65 -244t-255 -79q-13 0 -38.5 1t-63.5 2v228zM146 1220v263h285v-263h-285z" />
|
||||
<glyph unicode="k" d="M130 0v1469h280v-794l355 410h353l-381 -417l396 -668h-344l-261 466l-118 -123v-343h-280z" />
|
||||
<glyph unicode="l" horiz-adv-x="569" d="M139 0v1474h285v-1474h-285z" />
|
||||
<glyph unicode="m" horiz-adv-x="1821" d="M128 0v1088h277v-159q53 85 100 121q83 64 215 64q125 0 202 -55q62 -51 94 -131q56 96 139 141q88 45 196 45q72 0 142 -28t127 -98q46 -57 62 -140q10 -55 10 -161l-2 -687h-292v694q0 62 -20 102q-38 76 -140 76q-118 0 -163 -98q-23 -52 -23 -125v-649h-287v649 q0 97 -20 141q-36 79 -141 79q-122 0 -164 -79q-23 -45 -23 -134v-656h-289z" />
|
||||
<glyph unicode="n" horiz-adv-x="1251" d="M135 0v1088h275v-159q55 84 104 121q88 66 223 66q169 0 276.5 -88.5t107.5 -293.5v-734h-292v663q0 86 -23 132q-42 84 -160 84q-145 0 -199 -123q-28 -65 -28 -166v-590h-284zM632 1119z" />
|
||||
<glyph unicode="o" horiz-adv-x="1251" d="M66 543q0 236 138 409t419 173t419 -173t138 -409q0 -240 -138 -410.5t-419 -170.5t-419 170.5t-138 410.5zM362 543q0 -164 67.5 -253t192.5 -89t192 89t67 253t-67 252.5t-192 88.5t-192.5 -88.5t-67.5 -252.5zM623 1119z" />
|
||||
<glyph unicode="p" horiz-adv-x="1251" d="M125 -429v1519h273v-161q46 71 98 112q95 73 226 73q191 0 323.5 -141t132.5 -414q0 -288 -129.5 -439t-333.5 -151q-130 0 -216 65q-47 36 -92 105v-568h-282zM397 520q0 -190 101 -267q60 -45 142 -45q119 0 181.5 92t62.5 245q0 126 -57.5 223t-186.5 97 q-155 0 -213 -147q-30 -78 -30 -198z" />
|
||||
<glyph unicode="q" horiz-adv-x="1251" d="M60 520q0 272 133.5 435t329.5 163q136 0 220 -67q49 -38 100 -125v162h275v-1520h-282v567q-32 -66 -109.5 -117.5t-211.5 -51.5q-189 0 -322 151t-133 403zM357 532q0 -113 30 -185q56 -137 208 -137q147 0 209 126q40 83 40 210q0 100 -34 179q-61 142 -214 142 q-108 0 -173.5 -83t-65.5 -252z" />
|
||||
<glyph unicode="r" horiz-adv-x="797" d="M130 0v1090h272v-190q66 109 115 149q80 67 208 67q8 0 13.5 -0.5t24.5 -1.5v-292q-27 3 -48 4t-34 1q-172 0 -231 -112q-33 -63 -33 -194v-521h-287z" />
|
||||
<glyph unicode="s" d="M66 348h289q9 -76 39 -108q53 -57 196 -57q84 0 133.5 25t49.5 75q0 48 -40 73t-297 86q-185 46 -261 115q-76 68 -76 196q0 151 118.5 259.5t333.5 108.5q204 0 332.5 -81.5t147.5 -281.5h-285q-6 55 -31 87q-47 58 -160 58q-93 0 -132.5 -29t-39.5 -68q0 -49 42 -71 q42 -23 297 -79q170 -40 255 -121q84 -82 84 -205q0 -162 -120.5 -264.5t-372.5 -102.5q-257 0 -379.5 108.5t-122.5 276.5zM573 1119z" />
|
||||
<glyph unicode="t" horiz-adv-x="682" d="M21 877v203h152v304h282v-304h177v-203h-177v-576q0 -67 17 -83.5t104 -16.5q13 0 27.5 0.5t28.5 1.5v-213l-135 -5q-17 -1 -33 -1q-175 0 -243 71q-48 49 -48 151v671h-152z" />
|
||||
<glyph unicode="u" horiz-adv-x="1251" d="M125 433v657h292v-657q0 -93 22 -140q39 -83 153 -83q146 0 200 118q28 64 28 169v593h289v-1090h-277v154q-4 -5 -20 -30t-38 -44q-67 -60 -129.5 -82t-146.5 -22q-242 0 -326 174q-47 96 -47 283zM617 1119z" />
|
||||
<glyph unicode="v" d="M26 1090h320l227 -804l232 804h306l-393 -1090h-301z" />
|
||||
<glyph unicode="w" horiz-adv-x="1593" d="M14 1090h306l170 -782l157 782h289l166 -785l170 785h297l-316 -1090h-293l-171 794l-173 -794h-296z" />
|
||||
<glyph unicode="x" d="M26 0l372 552l-356 536h349l182 -316l178 316h339l-358 -531l372 -557h-355l-188 327l-189 -327h-346z" />
|
||||
<glyph unicode="y" d="M21 1090h317l238 -804l225 804h303l-374 -1072q-108 -310 -171 -384.5t-252 -74.5q-38 0 -61 0.5t-69 3.5v228l36 -2q12 -1 24 -1q29 0 56 4q38 5 64 23q25 17 47 71q18 46 18 61q0 3 -1 5zM563 1119z" />
|
||||
<glyph unicode="z" horiz-adv-x="1024" d="M33 0v222l559 636h-521v232h884v-237l-553 -619h572v-234h-941zM513 1119z" />
|
||||
<glyph unicode="{" horiz-adv-x="797" d="M0 483v121q97 33 137 73q71 69 71 211v268q0 51 17 107q30 97 102 154q66 52 155 69q54 11 155 12v-159q-83 -18 -113 -48q-46 -46 -46 -161v-232q0 -112 -30 -178q-51 -111 -200 -180q135 -55 181.5 -128t48.5 -202v-253q0 -111 54 -160q30 -29 105 -51v-159l-71 2 q-143 4 -250.5 85.5t-107.5 237.5v313q0 126 -76 193q-46 41 -132 65z" />
|
||||
<glyph unicode="|" horiz-adv-x="573" d="M106 0v1488h263v-1488h-263z" />
|
||||
<glyph unicode="}" horiz-adv-x="797" d="M45 -254q75 22 105 52q51 50 53 159v253q0 142 55 210.5t175 119.5q-131 64 -180.5 145.5t-49.5 212.5v232q0 111 -35.5 151t-122.5 58v159q100 -1 154 -12q89 -17 156 -69t93 -128t26 -133v-268q0 -143 65 -210q40 -40 143 -74v-121q-85 -24 -129 -62q-79 -68 -79 -196 v-313q0 -152 -105 -235.5t-253 -87.5l-71 -2v159z" />
|
||||
<glyph unicode="~" horiz-adv-x="1196" d="M4 305q17 119 48.5 205t77.5 141q49 58 101 81.5t107 23.5q24 0 63 -6q62 -10 115 -30l233 -90q41 -16 79.5 -22.5t59.5 -6.5q66 0 105 51.5t57 124.5h170q-27 -186 -110.5 -319t-225.5 -133q-28 0 -59 5q-60 9 -142 43l-209 79q-29 11 -71 20t-62 9q-57 0 -101 -43.5 t-63 -132.5h-173z" />
|
||||
<glyph unicode="¡" horiz-adv-x="682" d="M225 -10l80 687h150l83 -687v-374h-313v374zM232 796v289h298v-289h-298z" />
|
||||
<glyph unicode="¢" d="M69 528q0 269 140 428.5t358 159.5q46 0 64.5 -2t48.5 -8l50 181h106l-59 -202q108 -37 175 -104q104 -102 124 -282h-292q-11 60 -36 99q-15 26 -40 43l-175 -635q16 -3 28 -5t26 -2q68 0 124 47t71 149h291q-17 -187 -133.5 -311.5t-378.5 -124.5q-30 0 -49 2t-48 5 l-59 -211h-112l74 242q-126 48 -212 184.5t-86 346.5zM367 533q0 -117 24.5 -183.5t51.5 -91.5l170 614q-17 2 -35 2q-100 0 -155.5 -102t-55.5 -239z" />
|
||||
<glyph unicode="£" d="M66 175q72 39 149 125.5t77 169.5q0 44 -16 100q-9 32 -30 86h-178v112h114q-46 90 -68 158.5t-22 147.5q0 154 127.5 276t363.5 122q196 0 340 -108.5t153 -366.5h-271q-10 99 -46 160q-53 85 -179 85q-93 0 -147 -57.5t-54 -132.5q0 -45 19 -94.5t85 -189.5h287v-112 h-244q4 -39 6.5 -65t2.5 -52q0 -96 -58 -178q-37 -51 -150 -155q80 29 118 38q61 16 119 16q36 0 70.5 -6t73.5 -17l41 -13q27 -9 45.5 -11.5t31.5 -2.5q46 0 108 26q36 15 90 46l82 -223q-50 -33 -140 -64t-173 -31q-44 0 -92 11t-104 29l-57 19q-37 12 -61 18q-40 8 -82 8 q-45 0 -97 -18q-34 -13 -125 -55z" />
|
||||
<glyph unicode="¤" d="M54 342l140 140q-71 115 -71 235t71 235l-140 140l140 140l140 -140q115 71 235 71t235 -71l140 140l140 -140l-140 -140q71 -115 71 -235t-71 -235l140 -140l-140 -140l-140 140q-115 -71 -235 -71t-235 71l-140 -140zM335 717q0 -98 68 -166t166 -68t166 68t68 166 t-68 166t-166 68t-166 -68t-68 -166z" />
|
||||
<glyph unicode="¥" d="M-22 1431h339l266 -623l253 623h325l-228 -471h143v-136h-209l-107 -218h282v-135h-320v-471h-291v471h-318v135h280l-109 218h-213v136h147z" />
|
||||
<glyph unicode="¦" horiz-adv-x="573" d="M106 0v587h263v-587h-263zM106 903v585h263v-585h-263z" />
|
||||
<glyph unicode="§" d="M65 573q0 125 72 207q42 49 119 89q-32 22 -69 80q-38 72 -38 160q0 149 106.5 257t310.5 108q244 0 346 -160q55 -86 64 -215h-258q-7 60 -30 95q-41 62 -135 62q-63 0 -103 -30.5t-40 -89.5q0 -68 70 -102t257 -120q326 -154 326 -357q0 -127 -74 -210 q-41 -46 -120 -87q56 -48 82 -90q46 -73 46 -172q0 -191 -132 -291.5t-296 -100.5q-178 0 -302.5 89t-141.5 295h270q14 -74 40 -107q43 -56 141 -56q60 0 103 37t43 96q0 53 -45 93t-255 146q-183 90 -250 148q-107 93 -107 226zM307 645q0 -49 43 -87q25 -23 88 -56 l284 -149q33 14 56 41q36 39 36 93q0 45 -48 86q-26 21 -72 45l-299 152q-52 -22 -74 -65q-14 -28 -14 -60z" />
|
||||
<glyph unicode="¨" horiz-adv-x="682" d="M-43 1256v237h261v-237h-261zM288 1119zM357 1256v237h261v-237h-261z" />
|
||||
<glyph unicode="©" horiz-adv-x="1509" d="M26 737q0 323 230 537q216 200 507 200q305 0 521 -216t216 -521q0 -314 -221 -529q-215 -208 -516 -208q-311 0 -524 213t-213 524zM154 737q0 -256 179 -435q178 -179 430 -179q251 0 429 180q178 181 178 434q0 246 -177 427q-179 184 -430 184q-254 0 -433 -184 q-176 -180 -176 -427zM368 735q0 182 105.5 310t289.5 128q117 0 203 -48q140 -78 174 -273l-188 3q-17 90 -72 121q-46 29 -101 29q-83 0 -136 -68.5t-53 -206.5q0 -137 58.5 -199t140.5 -62q75 0 113.5 41t49.5 103h183q-30 -174 -135.5 -243.5t-218.5 -69.5 q-168 0 -290.5 120t-122.5 315z" />
|
||||
<glyph unicode="ª" horiz-adv-x="758" d="M40 1021q0 108 82 166q54 38 167 52l128 17q28 3 46 16.5t18 37.5q0 47 -47 64q-27 10 -74 10q-53 0 -79 -22.5t-37 -67.5h-180q12 91 54 142q70 83 237 83q123 0 188 -24q120 -45 120 -195v-322q0 -39 8 -65.5t33 -35.5v-36h-200q-7 17 -11.5 34.5t-4.5 41.5 q-52 -45 -87 -64q-62 -33 -136 -33q-137 0 -192 85q-33 49 -33 116zM226 1036q0 -40 27 -60.5t69 -20.5q35 0 75 16q26 12 41 26q19 14 29.5 34t13.5 75v64q-18 -12 -32.5 -17.5t-46.5 -10.5l-47 -7q-72 -11 -100.5 -36t-28.5 -63z" />
|
||||
<glyph unicode="«" d="M175 444v238l342 294v-238l-204 -175l204 -174v-238zM618 444v238l342 294v-238l-204 -175l204 -174v-238z" />
|
||||
<glyph unicode="¬" horiz-adv-x="1196" d="M73 644v263h1083v-730h-263v467h-820z" />
|
||||
<glyph unicode="­" horiz-adv-x="682" d="M47 436v270h574v-270h-574z" />
|
||||
<glyph unicode="®" horiz-adv-x="1509" d="M26 737q0 323 230 537q216 200 507 200q305 0 521 -216t216 -521q0 -314 -221 -529q-215 -208 -516 -208q-311 0 -524 213t-213 524zM154 737q0 -256 179 -435q178 -179 430 -179q251 0 429 180q178 181 178 434q0 246 -177 427q-179 184 -430 184q-254 0 -433 -184 q-176 -180 -176 -427zM440 327v817q76 0 227.5 -0.5t168.5 -1.5q97 -7 161 -42q109 -60 109 -195q0 -103 -57.5 -149t-141.5 -55q77 -16 116 -47q72 -58 72 -183v-73q0 -12 1.5 -24t5.5 -24l7 -23h-204q-10 39 -13 113t-13 100q-16 43 -60 60q-24 10 -73 13l-47 3h-45v-289 h-214zM654 763h83q75 0 117 30t42 97t-66 93q-44 17 -124 17h-52v-237z" />
|
||||
<glyph unicode="¯" horiz-adv-x="682" d="M-67 1301v152h711v-152h-711z" />
|
||||
<glyph unicode="°" horiz-adv-x="819" d="M94 1137q0 132 95.5 227.5t227.5 95.5t227.5 -95.5t95.5 -227.5t-95.5 -227.5t-227.5 -95.5t-227.5 95.5t-95.5 227.5zM256 1137q0 -67 47 -114t114 -47t114 47t47 114t-47 114t-114 47t-114 -47t-47 -114z" />
|
||||
<glyph unicode="±" horiz-adv-x="1124" d="M73 0v246h1083v-246h-1083zM73 566v244h410v273h263v-273h410v-244h-410v-256h-263v256h-410z" />
|
||||
<glyph unicode="²" horiz-adv-x="682" d="M26 580q0 205 228 359q142 96 184.5 143.5t42.5 105.5q0 62 -35 94.5t-93 32.5q-86 0 -115 -53q-18 -32 -20 -110h-181q3 156 85 232t228 76q135 0 227.5 -74t92.5 -204q0 -83 -46 -150.5t-153 -136.5l-73 -45q-44 -28 -70 -48q-55 -40 -68 -65h410v-157h-644z" />
|
||||
<glyph unicode="³" horiz-adv-x="682" d="M18 853h183q4 -64 22 -94q33 -55 120 -55q37 0 71 18q64 34 64 117q0 82 -64 109q-39 17 -147 21v121q89 2 125 17q63 27 63 104q0 54 -35 82.5t-87 28.5q-60 0 -92.5 -39.5t-32.5 -102.5h-171q-5 135 94 220q75 60 210 60q138 0 219.5 -65.5t81.5 -171.5 q0 -65 -31 -107.5t-83 -68.5q55 -8 98.5 -55t43.5 -145q0 -134 -92.5 -207.5t-221.5 -73.5q-153 0 -245.5 67.5t-92.5 219.5z" />
|
||||
<glyph unicode="´" horiz-adv-x="682" d="M118 1237l192 299h318l-304 -299h-206zM287 1119z" />
|
||||
<glyph unicode="µ" horiz-adv-x="1180" d="M-53 -475l285 1565h289l-130 -728q-1 -7 -2 -15t-1 -16q0 -68 48.5 -94.5t97.5 -26.5q72 0 134 41.5t97 98.5q24 39 41 105t44 211l79 424h284l-194 -1088h-263l28 182q-45 -72 -136.5 -144t-198.5 -72q-42 0 -75 12t-50 27l-87 -482h-290z" />
|
||||
<glyph unicode="¶" d="M-61 971q0 214 123 358.5t362 144.5h651v-171h-125v-1673h-202v1673h-196v-1673h-202v865q-188 0 -299.5 129t-111.5 347z" />
|
||||
<glyph unicode="·" horiz-adv-x="569" d="M113 718q0 68 49 117t117 49q69 0 119 -48.5t50 -117.5t-49 -117.5t-118 -48.5t-118.5 48.5t-49.5 117.5z" />
|
||||
<glyph unicode="¸" horiz-adv-x="682" d="M18 -418l38 86q57 -17 78 -22q48 -12 78 -12q60 0 86 25.5t26 53.5q0 42 -29 59t-62 17q-19 0 -39 -4.5t-45 -12.5l-129 117l207 111h109l-88 -131q33 7 47 9.5t30 2.5q81 0 129 -39.5t48 -113.5q0 -92 -75 -145.5t-193 -53.5q-51 0 -123 21q-33 10 -93 32z" />
|
||||
<glyph unicode="¹" horiz-adv-x="682" d="M80 1180v116q110 5 141 14t53 26q29 21 46.5 50.5t17.5 63.5h164v-870h-199v600h-223z" />
|
||||
<glyph unicode="º" horiz-adv-x="748" d="M14 1170q0 158 96 254t266 96t266 -96t96 -254t-96 -254t-266 -96t-266 96t-96 254zM206 1170q0 -93 42.5 -149t127.5 -56t125.5 56t40.5 149t-40.5 149t-125.5 56t-127.5 -56t-42.5 -149z" />
|
||||
<glyph unicode="»" d="M0 151v238l204 174l-204 175v238l342 -294v-238zM443 151v238l204 174l-204 175v238l342 -294v-238z" />
|
||||
<glyph unicode="¼" horiz-adv-x="1708" d="M90 1180v116q113 6 165 26q93 36 93 128h164v-870h-200v600h-222zM369 -38l875 1483h161l-875 -1483h-161zM969 187v149l348 526h216v-542h97v-133h-97v-187h-189v187h-375zM1106 320h238v372z" />
|
||||
<glyph unicode="½" horiz-adv-x="1708" d="M47 1180v116q111 5 145.5 16t56.5 29q32 24 44 57t12 52h164v-870h-199v600h-223zM279 -38l875 1483h161l-875 -1483h-161zM976 0q3 209 230 360q154 107 189.5 148.5t35.5 98.5q0 56 -33 91.5t-96 35.5q-86 0 -115 -56q-17 -31 -19 -107h-180q0 144 88 231q84 77 225 77 q145 0 232.5 -78.5t87.5 -198.5q0 -88 -50.5 -157t-146.5 -128l-76 -47q-24 -15 -38 -25t-38 -27q-18 -14 -35.5 -30.5t-25.5 -31.5h410v-156h-645z" />
|
||||
<glyph unicode="¾" horiz-adv-x="1708" d="M78 853h182q3 -58 22 -90q33 -59 120 -59q40 0 74 19q62 34 62 118q0 80 -66 108q-39 16 -145 20v121q90 2 126 18q62 27 62 107q0 40 -31 73.5t-92 33.5q-76 0 -106 -54q-16 -31 -19 -88h-170q-5 146 103 228q75 52 200 52q140 0 220.5 -66t80.5 -167q0 -66 -28 -108.5 t-86 -71.5q31 2 87 -51.5t56 -152.5q0 -125 -90.5 -201t-224.5 -76q-207 0 -287 111q-43 61 -50 176zM440 -38l870 1483h162l-870 -1483h-162zM1016 187v149l349 526h216v-542h97v-133h-97v-187h-190v187h-375zM1154 320h237v372z" />
|
||||
<glyph unicode="¿" horiz-adv-x="1251" d="M109 23q0 130 64 220q39 55 147 138l71 55q58 45 77 105q12 38 13 117h270q-6 -166 -32.5 -231.5t-133.5 -149.5l-73 -57q-62 -49 -84 -104q-14 -34 -14 -79q0 -91 53.5 -145t145.5 -54q136 0 192 110q29 59 29 127h289q-12 -280 -162 -379.5t-326 -99.5 q-229 0 -377.5 109t-148.5 318zM459 796v289h299v-289h-299z" />
|
||||
<glyph unicode="À" horiz-adv-x="1479" d="M52 0l526 1474h348l522 -1474h-334l-95 303h-543l-102 -303h-322zM410 1891h317l192 -299h-206zM559 557h374l-184 580zM750 1474zM750 1474z" />
|
||||
<glyph unicode="Á" horiz-adv-x="1479" d="M52 0l526 1474h348l522 -1474h-334l-95 303h-543l-102 -303h-322zM559 557h374l-184 580zM581 1592l192 299h318l-304 -299h-206zM750 1474zM750 1474z" />
|
||||
<glyph unicode="Â" horiz-adv-x="1479" d="M52 0l526 1474h348l522 -1474h-334l-95 303h-543l-102 -303h-322zM387 1592l235 299h256l234 -299h-232l-130 168l-131 -168h-232zM559 557h374l-184 580zM750 1474zM750 1474z" />
|
||||
<glyph unicode="Ã" horiz-adv-x="1479" d="M52 0l526 1474h348l522 -1474h-334l-95 303h-543l-102 -303h-322zM374 1606q22 103 57 156q64 95 190 95q27 0 53 -6t44 -13l94 -35q42 -14 55 -18t29 -4q48 0 67.5 25.5t28.5 60.5h133q-18 -105 -71.5 -176t-156.5 -71q-31 0 -88 15q-33 8 -63 18l-81 27q-17 6 -33 8.5 t-32 2.5q-38 0 -62 -22q-24 -23 -34 -63h-130zM559 557h374l-184 580zM750 1474zM750 1474z" />
|
||||
<glyph unicode="Ä" horiz-adv-x="1479" d="M52 0l526 1474h348l522 -1474h-334l-95 303h-543l-102 -303h-322zM419 1611v237h261v-237h-261zM559 557h374l-184 580zM750 1474zM750 1474zM819 1611v237h261v-237h-261z" />
|
||||
<glyph unicode="Å" horiz-adv-x="1479" d="M52 0l526 1474h348l522 -1474h-334l-95 303h-543l-102 -303h-322zM544 1748q0 90 64 154t154 64t154 -64t64 -154t-64 -154t-154 -64t-154 64t-64 154zM559 557h374l-184 580zM643 1748q0 -49 35 -83.5t84 -34.5t83.5 34.5t34.5 83.5t-34.5 84t-83.5 35t-84 -35t-35 -84z M750 1474zM762 1424z" />
|
||||
<glyph unicode="Æ" horiz-adv-x="2048" d="M18 0l536 1469h1394v-256h-759v-317h683v-252h-683v-384h773v-260h-1076v312h-441l-107 -312h-320zM526 554h360v664h-133z" />
|
||||
<glyph unicode="Ç" horiz-adv-x="1479" d="M92 725q0 386 207 595q180 182 458 182q372 0 544 -244q95 -137 102 -275h-308q-30 106 -77 160q-84 96 -249 96q-168 0 -265 -135.5t-97 -383.5t102.5 -371.5t260.5 -123.5q162 0 247 106q47 57 78 171h305q-40 -241 -204.5 -392t-393.5 -151l-61 -90q33 7 47 9.5 t30 2.5q81 0 129 -39.5t48 -113.5q0 -92 -75 -145.5t-193 -53.5q-51 0 -123 21q-33 10 -93 32l38 86q57 -17 78 -22q48 -12 78 -12q60 0 86 25.5t26 53.5q0 42 -29 59t-62 17q-19 0 -39 -4.5t-45 -12.5l-43 40l94 147q-237 0 -419 204q-182 205 -182 562z" />
|
||||
<glyph unicode="È" horiz-adv-x="1366" d="M165 0v1474h1081v-261h-780v-313h716v-256h-716v-379h816v-265h-1117zM373 1891h317l192 -299h-206zM713 1474z" />
|
||||
<glyph unicode="É" horiz-adv-x="1366" d="M165 0v1474h1081v-261h-780v-313h716v-256h-716v-379h816v-265h-1117zM544 1592l192 299h318l-304 -299h-206zM713 1474z" />
|
||||
<glyph unicode="Ê" horiz-adv-x="1366" d="M165 0v1474h1081v-261h-780v-313h716v-256h-716v-379h816v-265h-1117zM350 1592l235 299h256l234 -299h-232l-130 168l-131 -168h-232zM713 1474z" />
|
||||
<glyph unicode="Ë" horiz-adv-x="1366" d="M165 0v1474h1081v-261h-780v-313h716v-256h-716v-379h816v-265h-1117zM382 1611v237h261v-237h-261zM713 1474zM782 1611v237h261v-237h-261z" />
|
||||
<glyph unicode="Ì" horiz-adv-x="569" d="M-50 1920h317l192 -299h-206zM132 0v1474h306v-1474h-306zM285 1503zM290 1503z" />
|
||||
<glyph unicode="Í" horiz-adv-x="569" d="M118 1621l192 299h318l-304 -299h-206zM132 0v1474h306v-1474h-306zM285 1503zM287 1503z" />
|
||||
<glyph unicode="Î" horiz-adv-x="569" d="M-74 1621l235 299h256l234 -299h-232l-130 168l-131 -168h-232zM132 0v1474h306v-1474h-306zM285 1503zM289 1503z" />
|
||||
<glyph unicode="Ï" horiz-adv-x="569" d="M-43 1640v237h261v-237h-261zM132 0v1474h306v-1474h-306zM285 1503zM288 1503zM357 1640v237h261v-237h-261z" />
|
||||
<glyph unicode="Ð" horiz-adv-x="1479" d="M18 658v256h138v558h616q171 0 291.5 -51.5t208.5 -173.5q67 -93 99 -212t32 -263q0 -266 -99 -460q-159 -312 -534 -312h-614v658h-138zM455 256h213q125 0 179 16q89 25 148 109q54 77 74.5 182.5t20.5 187.5q0 304 -150 409q-84 58 -258 58h-227v-304h310v-256h-310 v-402z" />
|
||||
<glyph unicode="Ñ" horiz-adv-x="1479" d="M151 0v1474h323l587 -1029v1029h287v-1474h-308l-602 1047v-1047h-287zM385 1609q22 103 57 156q64 95 190 95q27 0 53 -6t44 -13l94 -35q42 -14 55 -18t29 -4q48 0 67.5 25.5t28.5 60.5h133q-18 -105 -71.5 -176t-156.5 -71q-31 0 -88 15q-33 8 -63 18l-81 27 q-17 6 -33 8.5t-32 2.5q-38 0 -62 -22q-24 -23 -34 -63h-130zM761 1477zM761 1477z" />
|
||||
<glyph unicode="Ò" horiz-adv-x="1593" d="M101 739q0 405 224 608q167 172 483 172t483 -172q223 -203 223 -608q0 -397 -223 -608q-167 -172 -483 -172t-483 172q-224 211 -224 608zM407 739q0 -249 109 -384t292 -135t290.5 135t107.5 384q0 248 -107.5 383.5t-290.5 135.5t-292 -135t-109 -384zM468 1936h317 l192 -299h-206zM808 1519zM808 1519z" />
|
||||
<glyph unicode="Ó" horiz-adv-x="1593" d="M101 739q0 405 224 608q167 172 483 172t483 -172q223 -203 223 -608q0 -397 -223 -608q-167 -172 -483 -172t-483 172q-224 211 -224 608zM407 739q0 -249 109 -384t292 -135t290.5 135t107.5 384q0 248 -107.5 383.5t-290.5 135.5t-292 -135t-109 -384zM639 1637 l192 299h318l-304 -299h-206zM808 1519zM808 1519z" />
|
||||
<glyph unicode="Ô" horiz-adv-x="1593" d="M101 739q0 405 224 608q167 172 483 172t483 -172q223 -203 223 -608q0 -397 -223 -608q-167 -172 -483 -172t-483 172q-224 211 -224 608zM407 739q0 -249 109 -384t292 -135t290.5 135t107.5 384q0 248 -107.5 383.5t-290.5 135.5t-292 -135t-109 -384zM445 1637 l235 299h256l234 -299h-232l-130 168l-131 -168h-232zM808 1519zM808 1519z" />
|
||||
<glyph unicode="Õ" horiz-adv-x="1593" d="M101 739q0 405 224 608q167 172 483 172t483 -172q223 -203 223 -608q0 -397 -223 -608q-167 -172 -483 -172t-483 172q-224 211 -224 608zM407 739q0 -249 109 -384t292 -135t290.5 135t107.5 384q0 248 -107.5 383.5t-290.5 135.5t-292 -135t-109 -384zM432 1651 q22 103 57 156q64 95 190 95q27 0 53 -6t44 -13l94 -35q42 -14 55 -18t29 -4q48 0 67.5 25.5t28.5 60.5h133q-18 -105 -71.5 -176t-156.5 -71q-31 0 -88 15q-33 8 -63 18l-81 27q-17 6 -33 8.5t-32 2.5q-38 0 -62 -22q-24 -23 -34 -63h-130zM808 1519zM808 1519z" />
|
||||
<glyph unicode="Ö" horiz-adv-x="1593" d="M101 739q0 405 224 608q167 172 483 172t483 -172q223 -203 223 -608q0 -397 -223 -608q-167 -172 -483 -172t-483 172q-224 211 -224 608zM407 739q0 -249 109 -384t292 -135t290.5 135t107.5 384q0 248 -107.5 383.5t-290.5 135.5t-292 -135t-109 -384zM477 1656v237 h261v-237h-261zM808 1519zM808 1519zM877 1656v237h261v-237h-261z" />
|
||||
<glyph unicode="×" horiz-adv-x="1196" d="M85 199l344 343l-344 344l185 185l343 -344l347 344l184 -185l-346 -344l346 -343l-184 -188l-347 346l-343 -346z" />
|
||||
<glyph unicode="Ø" horiz-adv-x="1593" d="M71 23l182 190q-58 78 -102 197q-52 142 -52 329q0 346 218 594q188 186 488 186q131 0 256.5 -44t222.5 -127l164 178l85 -81l-168 -187q56 -69 102 -192q45 -128 45 -327q0 -346 -197 -565q-194 -215 -510 -215q-122 0 -243.5 37.5t-230.5 131.5l-175 -185zM405 739 q0 -98 18 -180q10 -48 36 -119l633 697q-39 47 -108 81q-72 40 -179 40q-214 0 -307 -141.5t-93 -377.5zM528 341q59 -66 130 -93.5t147 -27.5q214 0 307.5 161t93.5 358q0 66 -8 128q-13 95 -42 164z" />
|
||||
<glyph unicode="Ù" horiz-adv-x="1479" d="M156 568v906h313v-906q0 -152 36 -222q56 -124 244 -124q187 0 243 124q36 70 36 222v906h313v-906q0 -235 -73 -366q-136 -240 -519 -240t-520 240q-73 131 -73 366zM409 1891h317l192 -299h-206zM749 1474zM749 1474z" />
|
||||
<glyph unicode="Ú" horiz-adv-x="1479" d="M156 568v906h313v-906q0 -152 36 -222q56 -124 244 -124q187 0 243 124q36 70 36 222v906h313v-906q0 -235 -73 -366q-136 -240 -519 -240t-520 240q-73 131 -73 366zM580 1592l192 299h318l-304 -299h-206zM749 1474zM749 1474z" />
|
||||
<glyph unicode="Û" horiz-adv-x="1479" d="M156 568v906h313v-906q0 -152 36 -222q56 -124 244 -124q187 0 243 124q36 70 36 222v906h313v-906q0 -235 -73 -366q-136 -240 -519 -240t-520 240q-73 131 -73 366zM386 1592l235 299h256l234 -299h-232l-130 168l-131 -168h-232zM749 1474zM749 1474z" />
|
||||
<glyph unicode="Ü" horiz-adv-x="1479" d="M156 568v906h313v-906q0 -152 36 -222q56 -124 244 -124q187 0 243 124q36 70 36 222v906h313v-906q0 -235 -73 -366q-136 -240 -519 -240t-520 240q-73 131 -73 366zM418 1611v237h261v-237h-261zM749 1474zM749 1474zM818 1611v237h261v-237h-261z" />
|
||||
<glyph unicode="Ý" horiz-adv-x="1366" d="M35 1474h363l306 -642l293 642h349l-493 -920v-554h-308v554zM522 1592l192 299h318l-304 -299h-206zM691 1474zM691 1474z" />
|
||||
<glyph unicode="Þ" horiz-adv-x="1366" d="M128 0v1472h299v-221h282q256 0 386.5 -114t130.5 -307q0 -292 -226 -399q-121 -57 -322 -57h-251v-374h-299zM427 611h216q124 0 183 26q106 47 106 183q0 126 -95 168q-54 24 -178 24h-232v-401z" />
|
||||
<glyph unicode="ß" horiz-adv-x="1251" d="M137 0v1035q0 188 60 286q108 177 418 177q216 0 348 -104t132 -282q0 -67 -19 -118q-36 -95 -133 -153q125 -53 180 -147.5t55 -223.5q0 -184 -113.5 -340.5t-393.5 -156.5q-14 0 -43.5 2.5t-63.5 9.5v228q22 -2 37 -2.5t27 -0.5q158 0 221 92q40 60 40 160 q0 148 -103 204q-61 33 -208 45v199q107 1 151 23q72 38 72 152q0 96 -56.5 139.5t-136.5 43.5q-126 0 -165 -85q-24 -50 -24 -181v-1002h-282z" />
|
||||
<glyph unicode="à" d="M59 290q0 201 155 291q85 49 250 70l97 12q79 10 113 25q61 26 61 81q0 67 -46.5 92.5t-136.5 25.5q-101 0 -143 -50q-30 -37 -40 -100h-275q9 143 80 235q113 144 388 144q179 0 318 -71t139 -268v-500q0 -52 2 -126q3 -56 17 -76t42 -33v-42h-310q-13 33 -18 62t-8 66 q-59 -64 -136 -109q-92 -53 -208 -53q-148 0 -244.5 84.5t-96.5 239.5zM236 1536h317l192 -299h-206zM345 311q0 -73 40.5 -105.5t98.5 -32.5q92 0 169.5 54t80.5 197v106q-27 -17 -54.5 -27.5t-75.5 -19.5l-64 -12q-90 -16 -129 -39q-66 -39 -66 -121zM576 1119zM576 1119z " />
|
||||
<glyph unicode="á" d="M59 290q0 201 155 291q85 49 250 70l97 12q79 10 113 25q61 26 61 81q0 67 -46.5 92.5t-136.5 25.5q-101 0 -143 -50q-30 -37 -40 -100h-275q9 143 80 235q113 144 388 144q179 0 318 -71t139 -268v-500q0 -52 2 -126q3 -56 17 -76t42 -33v-42h-310q-13 33 -18 62t-8 66 q-59 -64 -136 -109q-92 -53 -208 -53q-148 0 -244.5 84.5t-96.5 239.5zM345 311q0 -73 40.5 -105.5t98.5 -32.5q92 0 169.5 54t80.5 197v106q-27 -17 -54.5 -27.5t-75.5 -19.5l-64 -12q-90 -16 -129 -39q-66 -39 -66 -121zM407 1237l192 299h318l-304 -299h-206zM576 1119z M576 1119z" />
|
||||
<glyph unicode="â" d="M59 290q0 201 155 291q85 49 250 70l97 12q79 10 113 25q61 26 61 81q0 67 -46.5 92.5t-136.5 25.5q-101 0 -143 -50q-30 -37 -40 -100h-275q9 143 80 235q113 144 388 144q179 0 318 -71t139 -268v-500q0 -52 2 -126q3 -56 17 -76t42 -33v-42h-310q-13 33 -18 62t-8 66 q-59 -64 -136 -109q-92 -53 -208 -53q-148 0 -244.5 84.5t-96.5 239.5zM213 1237l235 299h256l234 -299h-232l-130 168l-131 -168h-232zM345 311q0 -73 40.5 -105.5t98.5 -32.5q92 0 169.5 54t80.5 197v106q-27 -17 -54.5 -27.5t-75.5 -19.5l-64 -12q-90 -16 -129 -39 q-66 -39 -66 -121zM576 1119zM576 1119z" />
|
||||
<glyph unicode="ã" d="M59 290q0 201 155 291q85 49 250 70l97 12q79 10 113 25q61 26 61 81q0 67 -46.5 92.5t-136.5 25.5q-101 0 -143 -50q-30 -37 -40 -100h-275q9 143 80 235q113 144 388 144q179 0 318 -71t139 -268v-500q0 -52 2 -126q3 -56 17 -76t42 -33v-42h-310q-13 33 -18 62t-8 66 q-59 -64 -136 -109q-92 -53 -208 -53q-148 0 -244.5 84.5t-96.5 239.5zM200 1251q22 103 57 156q64 95 190 95q27 0 53 -6t44 -13l94 -35q42 -14 55 -18t29 -4q48 0 67.5 25.5t28.5 60.5h133q-18 -105 -71.5 -176t-156.5 -71q-31 0 -88 15q-33 8 -63 18l-81 27 q-17 6 -33 8.5t-32 2.5q-38 0 -62 -22q-24 -23 -34 -63h-130zM345 311q0 -73 40.5 -105.5t98.5 -32.5q92 0 169.5 54t80.5 197v106q-27 -17 -54.5 -27.5t-75.5 -19.5l-64 -12q-90 -16 -129 -39q-66 -39 -66 -121zM576 1119zM576 1119z" />
|
||||
<glyph unicode="ä" d="M59 290q0 201 155 291q85 49 250 70l97 12q79 10 113 25q61 26 61 81q0 67 -46.5 92.5t-136.5 25.5q-101 0 -143 -50q-30 -37 -40 -100h-275q9 143 80 235q113 144 388 144q179 0 318 -71t139 -268v-500q0 -52 2 -126q3 -56 17 -76t42 -33v-42h-310q-13 33 -18 62t-8 66 q-59 -64 -136 -109q-92 -53 -208 -53q-148 0 -244.5 84.5t-96.5 239.5zM245 1256v237h261v-237h-261zM345 311q0 -73 40.5 -105.5t98.5 -32.5q92 0 169.5 54t80.5 197v106q-27 -17 -54.5 -27.5t-75.5 -19.5l-64 -12q-90 -16 -129 -39q-66 -39 -66 -121zM576 1119zM576 1119z M645 1256v237h261v-237h-261z" />
|
||||
<glyph unicode="å" d="M59 290q0 201 155 291q85 49 250 70l97 12q79 10 113 25q61 26 61 81q0 67 -46.5 92.5t-136.5 25.5q-101 0 -143 -50q-30 -37 -40 -100h-275q9 143 80 235q113 144 388 144q179 0 318 -71t139 -268v-500q0 -52 2 -126q3 -56 17 -76t42 -33v-42h-310q-13 33 -18 62t-8 66 q-59 -64 -136 -109q-92 -53 -208 -53q-148 0 -244.5 84.5t-96.5 239.5zM345 311q0 -73 40.5 -105.5t98.5 -32.5q92 0 169.5 54t80.5 197v106q-27 -17 -54.5 -27.5t-75.5 -19.5l-64 -12q-90 -16 -129 -39q-66 -39 -66 -121zM358 1443q0 90 64 154t154 64t154 -64t64 -154 t-64 -154t-154 -64t-154 64t-64 154zM457 1443q0 -49 35 -83.5t84 -34.5t83.5 34.5t34.5 83.5t-34.5 84t-83.5 35t-84 -35t-35 -84zM576 1119zM576 1119z" />
|
||||
<glyph unicode="æ" horiz-adv-x="1821" d="M56 295q0 185 137 270q76 46 231 70l175 26q68 10 99 27q48 26 48 78q0 79 -80 108q-43 15 -115 15q-110 0 -153 -62q-23 -33 -26 -93h-278q11 225 187 318q117 62 298 62q129 0 228 -44q55 -24 115 -73q61 52 140 84.5t183 32.5q332 0 449 -273q62 -145 57 -367h-746 q0 -113 27 -173q50 -110 192 -110q80 0 139 27.5t87 108.5h289q-12 -100 -99 -200q-143 -163 -406 -163q-135 0 -231.5 51t-149.5 131q-74 -95 -177.5 -139t-237.5 -44q-202 0 -292 98t-90 234zM341 299q0 -47 35 -88t119 -41q87 0 145 32q104 58 104 210v109 q-21 -15 -38 -21.5t-76 -18.5l-109 -22q-94 -19 -126 -41q-54 -36 -54 -119zM1009 658h446q-7 105 -60 167.5t-160 62.5q-108 0 -164 -56.5t-62 -173.5z" />
|
||||
<glyph unicode="ç" d="M71 523q0 281 137 437t378 156q205 0 335.5 -92t154.5 -325h-292q-8 61 -41 110q-48 66 -149 66q-144 0 -197 -143q-28 -76 -28 -202q0 -120 28 -193q51 -136 192 -136q100 0 142 54t51 140h291q-10 -130 -94 -246q-134 -187 -366 -187l-63 -93q33 7 47 9.5t30 2.5 q81 0 129 -39.5t48 -113.5q0 -92 -75 -145.5t-193 -53.5q-51 0 -123 21q-33 10 -93 32l38 86q57 -17 78 -22q48 -12 78 -12q60 0 86 25.5t26 53.5q0 42 -29 59t-62 17q-19 0 -39 -4.5t-45 -12.5l-43 40l99 150q-188 0 -312 156t-124 405z" />
|
||||
<glyph unicode="è" d="M47 534q0 283 143.5 434t372.5 151q136 0 245 -51t180 -161q64 -97 83 -225q11 -75 9 -216h-746q6 -164 103 -230q59 -41 142 -41q88 0 143 50q30 27 53 75h291q-11 -97 -101 -197q-140 -159 -392 -159q-208 0 -367 134t-159 436zM243 1536h317l192 -299h-206zM341 654 h443q-7 113 -68.5 171.5t-152.5 58.5q-99 0 -153.5 -62t-68.5 -168zM583 1119zM583 1119z" />
|
||||
<glyph unicode="é" d="M47 534q0 283 143.5 434t372.5 151q136 0 245 -51t180 -161q64 -97 83 -225q11 -75 9 -216h-746q6 -164 103 -230q59 -41 142 -41q88 0 143 50q30 27 53 75h291q-11 -97 -101 -197q-140 -159 -392 -159q-208 0 -367 134t-159 436zM341 654h443q-7 113 -68.5 171.5 t-152.5 58.5q-99 0 -153.5 -62t-68.5 -168zM414 1237l192 299h318l-304 -299h-206zM583 1119zM583 1119z" />
|
||||
<glyph unicode="ê" d="M47 534q0 283 143.5 434t372.5 151q136 0 245 -51t180 -161q64 -97 83 -225q11 -75 9 -216h-746q6 -164 103 -230q59 -41 142 -41q88 0 143 50q30 27 53 75h291q-11 -97 -101 -197q-140 -159 -392 -159q-208 0 -367 134t-159 436zM220 1237l235 299h256l234 -299h-232 l-130 168l-131 -168h-232zM341 654h443q-7 113 -68.5 171.5t-152.5 58.5q-99 0 -153.5 -62t-68.5 -168zM583 1119zM583 1119z" />
|
||||
<glyph unicode="ë" d="M47 534q0 283 143.5 434t372.5 151q136 0 245 -51t180 -161q64 -97 83 -225q11 -75 9 -216h-746q6 -164 103 -230q59 -41 142 -41q88 0 143 50q30 27 53 75h291q-11 -97 -101 -197q-140 -159 -392 -159q-208 0 -367 134t-159 436zM252 1256v237h261v-237h-261zM341 654 h443q-7 113 -68.5 171.5t-152.5 58.5q-99 0 -153.5 -62t-68.5 -168zM583 1119zM583 1119zM652 1256v237h261v-237h-261z" />
|
||||
<glyph unicode="ì" horiz-adv-x="569" d="M-50 1536h317l192 -299h-206zM137 0v1090h289v-1090h-289zM282 1119zM290 1119z" />
|
||||
<glyph unicode="í" horiz-adv-x="569" d="M118 1237l192 299h318l-304 -299h-206zM137 0v1090h289v-1090h-289zM282 1119zM287 1119z" />
|
||||
<glyph unicode="î" horiz-adv-x="569" d="M-74 1237l235 299h256l234 -299h-232l-130 168l-131 -168h-232zM137 0v1090h289v-1090h-289zM282 1119zM289 1119z" />
|
||||
<glyph unicode="ï" horiz-adv-x="569" d="M-43 1256v237h261v-237h-261zM137 0v1090h289v-1090h-289zM282 1119zM288 1119zM357 1256v237h261v-237h-261z" />
|
||||
<glyph unicode="ð" horiz-adv-x="1251" d="M109 499q0 222 132.5 365t323.5 143q38 0 64.5 -3t76.5 -16q-77 84 -107.5 113.5t-84.5 76.5l-221 -100l-102 103l226 99q-55 39 -70.5 53t-55.5 46l235 104q33 -22 56.5 -39.5t69.5 -52.5l182 79l102 -103l-178 -73q113 -118 156 -169q68 -79 109 -148 q83 -141 111.5 -250.5t28.5 -225.5q0 -225 -136.5 -377.5t-382.5 -152.5q-255 0 -395 149t-140 379zM395 493q0 -152 69.5 -226t172.5 -74q117 0 180.5 83t63.5 233q0 115 -56 204t-184 89q-111 0 -178.5 -76.5t-67.5 -232.5z" />
|
||||
<glyph unicode="ñ" horiz-adv-x="1251" d="M135 0v1088h275v-159q55 84 104 121q88 66 223 66q169 0 276.5 -88.5t107.5 -293.5v-734h-292v663q0 86 -23 132q-42 84 -160 84q-145 0 -199 -123q-28 -65 -28 -166v-590h-284zM256 1251q22 103 57 156q64 95 190 95q27 0 53 -6t44 -13l94 -35q42 -14 55 -18t29 -4 q48 0 67.5 25.5t28.5 60.5h133q-18 -105 -71.5 -176t-156.5 -71q-31 0 -88 15q-33 8 -63 18l-81 27q-17 6 -33 8.5t-32 2.5q-38 0 -62 -22q-24 -23 -34 -63h-130zM632 1119zM632 1119z" />
|
||||
<glyph unicode="ò" horiz-adv-x="1251" d="M66 543q0 236 138 409t419 173t419 -173t138 -409q0 -240 -138 -410.5t-419 -170.5t-419 170.5t-138 410.5zM283 1536h317l192 -299h-206zM362 543q0 -164 67.5 -253t192.5 -89t192 89t67 253t-67 252.5t-192 88.5t-192.5 -88.5t-67.5 -252.5zM623 1119zM623 1119z" />
|
||||
<glyph unicode="ó" horiz-adv-x="1251" d="M66 543q0 236 138 409t419 173t419 -173t138 -409q0 -240 -138 -410.5t-419 -170.5t-419 170.5t-138 410.5zM362 543q0 -164 67.5 -253t192.5 -89t192 89t67 253t-67 252.5t-192 88.5t-192.5 -88.5t-67.5 -252.5zM454 1237l192 299h318l-304 -299h-206zM623 1119z M623 1119z" />
|
||||
<glyph unicode="ô" horiz-adv-x="1251" d="M66 543q0 236 138 409t419 173t419 -173t138 -409q0 -240 -138 -410.5t-419 -170.5t-419 170.5t-138 410.5zM260 1237l235 299h256l234 -299h-232l-130 168l-131 -168h-232zM362 543q0 -164 67.5 -253t192.5 -89t192 89t67 253t-67 252.5t-192 88.5t-192.5 -88.5 t-67.5 -252.5zM623 1119zM623 1119z" />
|
||||
<glyph unicode="õ" horiz-adv-x="1251" d="M66 543q0 236 138 409t419 173t419 -173t138 -409q0 -240 -138 -410.5t-419 -170.5t-419 170.5t-138 410.5zM247 1251q22 103 57 156q64 95 190 95q27 0 53 -6t44 -13l94 -35q42 -14 55 -18t29 -4q48 0 67.5 25.5t28.5 60.5h133q-18 -105 -71.5 -176t-156.5 -71 q-31 0 -88 15q-33 8 -63 18l-81 27q-17 6 -33 8.5t-32 2.5q-38 0 -62 -22q-24 -23 -34 -63h-130zM362 543q0 -164 67.5 -253t192.5 -89t192 89t67 253t-67 252.5t-192 88.5t-192.5 -88.5t-67.5 -252.5zM623 1119zM623 1119z" />
|
||||
<glyph unicode="ö" horiz-adv-x="1251" d="M66 543q0 236 138 409t419 173t419 -173t138 -409q0 -240 -138 -410.5t-419 -170.5t-419 170.5t-138 410.5zM292 1256v237h261v-237h-261zM362 543q0 -164 67.5 -253t192.5 -89t192 89t67 253t-67 252.5t-192 88.5t-192.5 -88.5t-67.5 -252.5zM623 1119zM623 1119z M692 1256v237h261v-237h-261z" />
|
||||
<glyph unicode="÷" horiz-adv-x="1124" d="M73 412v261h1083v-261h-1083zM462 0v298h306v-298h-306zM462 786v297h306v-297h-306z" />
|
||||
<glyph unicode="ø" horiz-adv-x="1251" d="M42 0l142 144q-69 93 -93.5 200.5t-24.5 197.5q0 250 146 416.5t390 166.5q142 0 230 -30.5t163 -92.5l138 145l71 -67l-143 -149q66 -87 92.5 -185.5t26.5 -193.5q0 -264 -151.5 -428.5t-417.5 -164.5q-132 0 -235 44q-58 25 -125 77l-135 -142zM362 549q0 -49 7 -98 t24 -84l415 441q-36 44 -106 64q-43 12 -84 12q-119 0 -187.5 -89.5t-68.5 -245.5zM445 279q42 -41 70 -56q46 -24 116 -24q123 0 186.5 96t63.5 244q0 50 -4.5 81.5t-18.5 97.5z" />
|
||||
<glyph unicode="ù" horiz-adv-x="1251" d="M125 433v657h292v-657q0 -93 22 -140q39 -83 153 -83q146 0 200 118q28 64 28 169v593h289v-1090h-277v154q-4 -5 -20 -30t-38 -44q-67 -60 -129.5 -82t-146.5 -22q-242 0 -326 174q-47 96 -47 283zM277 1536h317l192 -299h-206zM617 1119zM617 1119z" />
|
||||
<glyph unicode="ú" horiz-adv-x="1251" d="M125 433v657h292v-657q0 -93 22 -140q39 -83 153 -83q146 0 200 118q28 64 28 169v593h289v-1090h-277v154q-4 -5 -20 -30t-38 -44q-67 -60 -129.5 -82t-146.5 -22q-242 0 -326 174q-47 96 -47 283zM448 1237l192 299h318l-304 -299h-206zM617 1119zM617 1119z" />
|
||||
<glyph unicode="û" horiz-adv-x="1251" d="M125 433v657h292v-657q0 -93 22 -140q39 -83 153 -83q146 0 200 118q28 64 28 169v593h289v-1090h-277v154q-4 -5 -20 -30t-38 -44q-67 -60 -129.5 -82t-146.5 -22q-242 0 -326 174q-47 96 -47 283zM254 1237l235 299h256l234 -299h-232l-130 168l-131 -168h-232z M617 1119zM617 1119z" />
|
||||
<glyph unicode="ü" horiz-adv-x="1251" d="M125 433v657h292v-657q0 -93 22 -140q39 -83 153 -83q146 0 200 118q28 64 28 169v593h289v-1090h-277v154q-4 -5 -20 -30t-38 -44q-67 -60 -129.5 -82t-146.5 -22q-242 0 -326 174q-47 96 -47 283zM286 1256v237h261v-237h-261zM617 1119zM617 1119zM686 1256v237h261 v-237h-261z" />
|
||||
<glyph unicode="ý" d="M21 1090h317l238 -804l225 804h303l-374 -1072q-108 -310 -171 -384.5t-252 -74.5q-38 0 -61 0.5t-69 3.5v228l36 -2q42 -2 80 3t64 23q25 17 46.5 71t17.5 66zM394 1237l192 299h318l-304 -299h-206zM563 1119zM563 1119z" />
|
||||
<glyph unicode="þ" horiz-adv-x="1251" d="M128 -427v1899h284v-529q51 89 128.5 132.5t179.5 43.5q210 0 335 -141.5t125 -425.5q0 -245 -117.5 -413t-338.5 -168q-87 0 -146 23q-102 39 -166 150v-571h-284zM405 543q0 -156 61 -245t182 -89q154 0 211 150q30 78 30 194q0 146 -65 230t-181 84q-97 0 -167.5 -77 t-70.5 -247z" />
|
||||
<glyph unicode="ÿ" d="M21 1090h317l238 -804l225 804h303l-374 -1072q-108 -310 -171 -384.5t-252 -74.5q-38 0 -61 0.5t-69 3.5v228l36 -2q42 -2 80 3t64 23q25 17 46.5 71t17.5 66zM232 1256v237h261v-237h-261zM563 1119zM563 1119zM632 1256v237h261v-237h-261z" />
|
||||
<glyph unicode="Œ" horiz-adv-x="2048" d="M75 734q0 343 185 588q163 183 413 183q127 0 220 -48q51 -26 112 -85v97h962v-256h-683v-322h636v-247h-636v-384h683v-260h-962v101q-52 -78 -138 -108.5t-192 -30.5q-252 0 -415 184q-185 245 -185 588zM376 720q0 -209 87 -359.5t262 -150.5q112 0 186.5 60.5 t74.5 129.5v654q0 78 -68 135t-196 57q-178 0 -262 -155t-84 -371z" />
|
||||
<glyph unicode="œ" horiz-adv-x="1933" d="M63 536q0 273 149 425.5t392 152.5q144 0 237 -44t154 -115q80 78 138 109q95 50 233 50q127 0 229 -51t174 -147q58 -77 78 -200q16 -80 16 -242h-745q6 -127 63.5 -203.5t163.5 -76.5q89 0 144 28.5t75 99.5h284q-19 -141 -146.5 -248.5t-363.5 -107.5q-135 0 -235 55 q-58 32 -127 102q-55 -64 -116 -98q-108 -61 -268 -61q-244 0 -386.5 159t-142.5 413zM357 542q0 -172 61 -261t180 -89q144 0 203 98t59 247q0 162 -57 254.5t-200 92.5q-157 0 -215 -145q-31 -76 -31 -197zM1121 658h452q-2 83 -32 136q-56 99 -201 99q-66 0 -117 -29 q-96 -57 -102 -206z" />
|
||||
<glyph unicode="Ÿ" horiz-adv-x="1366" d="M35 1474h363l306 -642l293 642h349l-493 -920v-554h-308v554zM360 1611v237h261v-237h-261zM691 1474zM691 1474zM760 1611v237h261v-237h-261z" />
|
||||
<glyph unicode="ˆ" horiz-adv-x="682" d="M-74 1237l235 299h256l234 -299h-232l-130 168l-131 -168h-232zM289 1119z" />
|
||||
<glyph unicode="˜" horiz-adv-x="682" d="M-88 1251q22 103 57 156q64 95 190 95q27 0 53 -6t44 -13l94 -35q42 -14 55 -18t29 -4q48 0 67.5 25.5t28.5 60.5h133q-18 -105 -71.5 -176t-156.5 -71q-31 0 -88 15q-33 8 -63 18l-81 27q-17 6 -33 8.5t-32 2.5q-38 0 -62 -22q-24 -23 -34 -63h-130zM288 1119z" />
|
||||
<glyph unicode=" " horiz-adv-x="983" />
|
||||
<glyph unicode=" " horiz-adv-x="1966" />
|
||||
<glyph unicode=" " horiz-adv-x="983" />
|
||||
<glyph unicode=" " horiz-adv-x="1966" />
|
||||
<glyph unicode=" " horiz-adv-x="655" />
|
||||
<glyph unicode=" " horiz-adv-x="491" />
|
||||
<glyph unicode=" " horiz-adv-x="327" />
|
||||
<glyph unicode=" " horiz-adv-x="327" />
|
||||
<glyph unicode=" " horiz-adv-x="245" />
|
||||
<glyph unicode=" " horiz-adv-x="393" />
|
||||
<glyph unicode=" " horiz-adv-x="109" />
|
||||
<glyph unicode="‐" horiz-adv-x="682" d="M47 436v270h574v-270h-574z" />
|
||||
<glyph unicode="‑" horiz-adv-x="682" d="M47 436v270h574v-270h-574z" />
|
||||
<glyph unicode="‒" horiz-adv-x="682" d="M47 436v270h574v-270h-574z" />
|
||||
<glyph unicode="–" d="M-5 464v218h1147v-218h-1147z" />
|
||||
<glyph unicode="—" horiz-adv-x="2048" d="M241 464v218h1565v-218h-1565z" />
|
||||
<glyph unicode="‘" horiz-adv-x="569" d="M137 926v211q0 153 72.5 238.5t207.5 112.5v-104q-103 -30 -137 -112q-19 -44 -15 -83h156v-263h-284z" />
|
||||
<glyph unicode="’" horiz-adv-x="569" d="M132 1206v263h285v-211q0 -151 -73.5 -238t-206.5 -113v105q98 31 135 105q20 44 17 89h-157z" />
|
||||
<glyph unicode="‚" horiz-adv-x="569" d="M146 0v289h290v-237q-1 -116 -24 -180q-38 -99 -118 -151q-47 -30 -143 -58v109q84 28 118 75t34 153h-157z" />
|
||||
<glyph unicode="“" horiz-adv-x="1024" d="M139 926v211q0 150 71.5 237t208.5 114v-104q-102 -32 -137 -110q-18 -41 -15 -85h157v-263h-285zM613 926v211q0 152 73.5 238t206.5 113v-104q-101 -31 -136 -112q-20 -43 -16 -83h157v-263h-285z" />
|
||||
<glyph unicode="”" horiz-adv-x="1024" d="M151 1206v263h285v-211q0 -147 -71.5 -236t-208.5 -115v105q101 32 136 110q19 41 16 84h-157zM623 1206v263h284v-211q0 -143 -69.5 -233.5t-209.5 -117.5v105q103 31 137 114q14 33 14 80h-156z" />
|
||||
<glyph unicode="„" horiz-adv-x="1024" d="M146 0v289h290v-237q-1 -116 -24 -180q-38 -99 -118 -151q-47 -30 -143 -58v109q84 28 118 75t34 153h-157zM594 0v289h290v-237q-4 -124 -24 -185q-24 -70 -93.5 -126.5t-167.5 -77.5v109q99 28 133 105q19 44 19 123h-157z" />
|
||||
<glyph unicode="•" horiz-adv-x="717" d="M145 734q0 96 62.5 158t158.5 62t158.5 -62t62.5 -158t-62.5 -159t-158.5 -63t-158.5 63t-62.5 159z" />
|
||||
<glyph unicode="…" horiz-adv-x="2048" d="M189 0v298h306v-298h-306zM872 0v298h306v-298h-306zM1554 0v298h306v-298h-306z" />
|
||||
<glyph unicode=" " horiz-adv-x="393" />
|
||||
<glyph unicode="‹" horiz-adv-x="682" d="M170 444v238l342 294v-238l-204 -175l204 -174v-238z" />
|
||||
<glyph unicode="›" horiz-adv-x="682" d="M170 151v238l204 174l-204 175v238l342 -294v-238z" />
|
||||
<glyph unicode=" " horiz-adv-x="491" />
|
||||
<glyph unicode="€" horiz-adv-x="1524" d="M68 419l42 201h247q-4 50 -4 105q0 48 3 94h-288l42 201h274q42 179 143 300q151 182 385 182q312 0 457 -244q80 -137 86 -275h-259q-25 106 -65 160q-70 96 -209 96q-141 0 -223 -136q-22 -37 -38 -83h397l-42 -201h-395q-3 -47 -3 -99q0 -53 3 -100h370l-42 -201h-283 q16 -39 38 -71q86 -123 219 -123q136 0 207 106q40 57 66 171h256q-34 -241 -172 -392t-354 -151q-267 0 -420 204q-80 107 -118 256h-320z" />
|
||||
<glyph unicode="™" horiz-adv-x="2048" d="M203 1296v178h655v-178h-221v-564h-216v564h-218zM924 732v742h308l135 -427l133 427h308v-742h-197v538l-161 -538h-168l-161 538v-538h-197z" />
|
||||
<hkern u1=" " u2="Y" k="36" />
|
||||
<hkern u1=" " u2="A" k="75" />
|
||||
<hkern u1="1" u2="1" k="112" />
|
||||
<hkern u1="A" u2="’" k="112" />
|
||||
<hkern u1="A" u2="y" k="75" />
|
||||
<hkern u1="A" u2="w" k="36" />
|
||||
<hkern u1="A" u2="v" k="75" />
|
||||
<hkern u1="A" u2="Y" k="188" />
|
||||
<hkern u1="A" u2="W" k="112" />
|
||||
<hkern u1="A" u2="V" k="151" />
|
||||
<hkern u1="A" u2="T" k="151" />
|
||||
<hkern u1="A" u2=" " k="75" />
|
||||
<hkern u1="F" u2="A" k="112" />
|
||||
<hkern u1="F" u2="." k="227" />
|
||||
<hkern u1="F" u2="," k="227" />
|
||||
<hkern u1="L" u2="’" k="112" />
|
||||
<hkern u1="L" u2="y" k="75" />
|
||||
<hkern u1="L" u2="Y" k="188" />
|
||||
<hkern u1="L" u2="W" k="112" />
|
||||
<hkern u1="L" u2="V" k="151" />
|
||||
<hkern u1="L" u2="T" k="151" />
|
||||
<hkern u1="L" u2=" " k="36" />
|
||||
<hkern u1="P" u2="A" k="151" />
|
||||
<hkern u1="P" u2="." k="264" />
|
||||
<hkern u1="P" u2="," k="264" />
|
||||
<hkern u1="P" u2=" " k="36" />
|
||||
<hkern u1="R" u2="Y" k="75" />
|
||||
<hkern u1="R" u2="W" k="36" />
|
||||
<hkern u1="R" u2="V" k="36" />
|
||||
<hkern u1="T" u2="y" k="151" />
|
||||
<hkern u1="T" u2="w" k="151" />
|
||||
<hkern u1="T" u2="u" k="151" />
|
||||
<hkern u1="T" u2="s" k="151" />
|
||||
<hkern u1="T" u2="r" k="112" />
|
||||
<hkern u1="T" u2="o" k="151" />
|
||||
<hkern u1="T" u2="i" k="36" />
|
||||
<hkern u1="T" u2="e" k="151" />
|
||||
<hkern u1="T" u2="c" k="151" />
|
||||
<hkern u1="T" u2="a" k="151" />
|
||||
<hkern u1="T" u2="O" k="36" />
|
||||
<hkern u1="T" u2="A" k="151" />
|
||||
<hkern u1="T" u2=";" k="227" />
|
||||
<hkern u1="T" u2=":" k="227" />
|
||||
<hkern u1="T" u2="." k="227" />
|
||||
<hkern u1="T" u2="-" k="112" />
|
||||
<hkern u1="T" u2="," k="227" />
|
||||
<hkern u1="V" u2="y" k="75" />
|
||||
<hkern u1="V" u2="u" k="75" />
|
||||
<hkern u1="V" u2="r" k="112" />
|
||||
<hkern u1="V" u2="o" k="151" />
|
||||
<hkern u1="V" u2="i" k="36" />
|
||||
<hkern u1="V" u2="e" k="112" />
|
||||
<hkern u1="V" u2="a" k="112" />
|
||||
<hkern u1="V" u2="A" k="151" />
|
||||
<hkern u1="V" u2=";" k="112" />
|
||||
<hkern u1="V" u2=":" k="112" />
|
||||
<hkern u1="V" u2="." k="188" />
|
||||
<hkern u1="V" u2="-" k="112" />
|
||||
<hkern u1="V" u2="," k="188" />
|
||||
<hkern u1="W" u2="y" k="36" />
|
||||
<hkern u1="W" u2="u" k="36" />
|
||||
<hkern u1="W" u2="r" k="36" />
|
||||
<hkern u1="W" u2="o" k="36" />
|
||||
<hkern u1="W" u2="i" k="18" />
|
||||
<hkern u1="W" u2="e" k="36" />
|
||||
<hkern u1="W" u2="a" k="75" />
|
||||
<hkern u1="W" u2="A" k="112" />
|
||||
<hkern u1="W" u2=";" k="36" />
|
||||
<hkern u1="W" u2=":" k="36" />
|
||||
<hkern u1="W" u2="." k="112" />
|
||||
<hkern u1="W" u2="-" k="40" />
|
||||
<hkern u1="W" u2="," k="112" />
|
||||
<hkern u1="Y" u2="v" k="112" />
|
||||
<hkern u1="Y" u2="u" k="112" />
|
||||
<hkern u1="Y" u2="q" k="151" />
|
||||
<hkern u1="Y" u2="p" k="112" />
|
||||
<hkern u1="Y" u2="o" k="151" />
|
||||
<hkern u1="Y" u2="i" k="75" />
|
||||
<hkern u1="Y" u2="e" k="112" />
|
||||
<hkern u1="Y" u2="a" k="112" />
|
||||
<hkern u1="Y" u2="A" k="188" />
|
||||
<hkern u1="Y" u2=";" k="151" />
|
||||
<hkern u1="Y" u2=":" k="151" />
|
||||
<hkern u1="Y" u2="." k="227" />
|
||||
<hkern u1="Y" u2="-" k="112" />
|
||||
<hkern u1="Y" u2="," k="227" />
|
||||
<hkern u1="Y" u2=" " k="36" />
|
||||
<hkern u1="f" u2="’" k="-37" />
|
||||
<hkern u1="r" u2="’" k="-76" />
|
||||
<hkern u1="r" u2="." k="112" />
|
||||
<hkern u1="r" u2="," k="112" />
|
||||
<hkern u1="v" u2="." k="151" />
|
||||
<hkern u1="v" u2="," k="151" />
|
||||
<hkern u1="w" u2="." k="75" />
|
||||
<hkern u1="w" u2="," k="75" />
|
||||
<hkern u1="y" u2="." k="151" />
|
||||
<hkern u1="y" u2="," k="151" />
|
||||
<hkern u1="‘" u2="‘" k="75" />
|
||||
<hkern u1="’" u2="’" k="75" />
|
||||
<hkern u1="’" u2="s" k="75" />
|
||||
<hkern u1="’" u2=" " k="112" />
|
||||
</font>
|
||||
</defs></svg>
|
After Width: | Height: | Size: 58 KiB |
BIN
app/assets/fonts/helvetica-bold.ttf
Executable file
BIN
app/assets/fonts/helvetica-bold.woff
Executable file
BIN
app/assets/fonts/helvetica.eot
Executable file
349
app/assets/fonts/helvetica.svg
Executable file
@ -0,0 +1,349 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata></metadata>
|
||||
<defs>
|
||||
<font id="helveticaregular" horiz-adv-x="1139" >
|
||||
<font-face units-per-em="2048" ascent="1638" descent="-410" />
|
||||
<missing-glyph horiz-adv-x="569" />
|
||||
<glyph unicode="fi" horiz-adv-x="1024" d="M28 924v142h149v168q4 112 39 164q63 92 243 92q17 0 35 -1t41 -3v-164q-28 2 -40.5 2.5t-23.5 0.5q-82 0 -98 -42.5t-16 -216.5h178v-142h-180v-924h-178v924h-149zM708 0v1066h180v-1066h-180zM708 1265v204h180v-204h-180z" />
|
||||
<glyph unicode="fl" horiz-adv-x="1024" d="M28 924v142h149v190q0 119 73.5 176.5t196.5 57.5q24 0 43.5 -1.5t44.5 -5.5v-161q-28 2 -40.5 2.5t-23.5 0.5q-76 0 -101 -44q-15 -25 -15 -82v-133h180v-142h-180v-924h-178v924h-149zM704 0v1469h180v-1469h-180z" />
|
||||
<glyph horiz-adv-x="0" />
|
||||
<glyph horiz-adv-x="0" />
|
||||
<glyph horiz-adv-x="0" />
|
||||
<glyph unicode="	" horiz-adv-x="569" />
|
||||
<glyph unicode="
" horiz-adv-x="569" />
|
||||
<glyph unicode="
" horiz-adv-x="569" />
|
||||
<glyph unicode=" " horiz-adv-x="569" />
|
||||
<glyph unicode="	" horiz-adv-x="569" />
|
||||
<glyph unicode=" " horiz-adv-x="569" />
|
||||
<glyph unicode="!" horiz-adv-x="569" d="M237 0v208h199v-208h-199zM237 986v483h203v-483l-49 -636h-102z" />
|
||||
<glyph unicode=""" horiz-adv-x="727" d="M82 1469h181l-29 -588h-121zM424 1469h182l-30 -588h-121z" />
|
||||
<glyph unicode="#" d="M0 445l30 116h233l94 344h-232l31 116h232l119 448h149l-121 -448h221l123 448h147l-121 -448h232l-31 -116h-232l-95 -344h233l-31 -116h-230l-123 -445h-147l121 445h-223l-119 -445h-149l121 445h-232zM412 561h218l95 344h-221z" />
|
||||
<glyph unicode="$" d="M64 436h177q8 -137 43 -200q62 -113 230 -127v545q-216 41 -319 137t-103 266q0 152 111.5 274t312.5 124v133h95v-131q199 -14 305.5 -117.5t111.5 -273.5h-175q-7 76 -41 131q-63 101 -201 106v-486q232 -65 315 -122q135 -94 135 -278q0 -266 -173 -378 q-96 -62 -277 -82v-194h-95v194q-291 19 -395 206q-57 101 -57 273zM272 1069q0 -99 65.5 -155t176.5 -78v470q-131 -5 -186.5 -80t-55.5 -157zM611 104q171 8 236 125q34 60 34 139q0 125 -92 190q-53 38 -178 72v-526z" />
|
||||
<glyph unicode="%" horiz-adv-x="1821" d="M66 1040q0 144 102 246.5t246 102.5q145 0 247 -102.5t102 -246.5t-102 -246t-247 -102q-144 0 -246 102t-102 246zM208 1040q0 -85 60.5 -145.5t145.5 -60.5q86 0 146.5 60.5t60.5 145.5t-60.5 145.5t-146.5 60.5q-85 0 -145.5 -60t-60.5 -146zM450 -38l801 1464h111 l-801 -1464h-111zM1047 348q0 144 102 246t247 102q144 0 246 -102t102 -246t-102 -246t-246 -102q-145 0 -247 102t-102 246zM1189 348q0 -85 60.5 -145.5t146.5 -60.5q85 0 145.5 60.5t60.5 145.5t-60.5 145.5t-145.5 60.5q-86 0 -146.5 -60.5t-60.5 -145.5z" />
|
||||
<glyph unicode="&" horiz-adv-x="1366" d="M89 368q0 167 101 279q62 68 231 170q-93 107 -124.5 180t-31.5 141q0 142 96 235.5t257 93.5q153 0 239 -87t86 -208q0 -141 -89 -247q-52 -62 -174 -143l268 -320q27 80 37.5 119.5t21.5 110.5h171q-17 -141 -68 -270.5t-51 -104.5l261 -317h-232l-138 168 q-82 -89 -150 -130q-119 -72 -274 -72q-229 0 -333 123.5t-104 278.5zM271 367q0 -117 85.5 -180t182.5 -63q111 0 191 51t123 114l-332 405q-141 -94 -184 -144q-66 -75 -66 -183zM440 1160q0 -61 33.5 -117t111.5 -145q95 67 131 109q59 68 59 151q0 65 -43 112t-116 47 q-111 0 -154 -74q-22 -38 -22 -83z" />
|
||||
<glyph unicode="'" horiz-adv-x="391" d="M156 1469h182l-33 -588h-116z" />
|
||||
<glyph unicode="(" horiz-adv-x="682" d="M142 526q0 296 93 527q59 147 246 440h125q-157 -305 -204 -449q-71 -219 -71 -506q0 -290 81 -530q50 -148 197 -426h-121q-146 228 -181 291t-76 171q-56 148 -78 316q-11 87 -11 166z" />
|
||||
<glyph unicode=")" horiz-adv-x="682" d="M68 1493h121q154 -246 186.5 -303.5t70.5 -158.5q48 -125 68.5 -247t20.5 -235q0 -296 -94 -528q-59 -149 -245 -439h-125q159 310 205 452q70 215 70 504t-81 529q-50 148 -197 426z" />
|
||||
<glyph unicode="*" horiz-adv-x="797" d="M78 1211l40 111l216 -78v225h116v-223l218 76l40 -111l-218 -71l135 -188l-99 -71l-131 195l-132 -195l-102 71l137 188z" />
|
||||
<glyph unicode="+" horiz-adv-x="1196" d="M92 438v168h436v439h171v-439h436v-168h-436v-438h-171v438h-436z" />
|
||||
<glyph unicode="," horiz-adv-x="569" d="M170 0v218h214v-202q0 -119 -48 -209t-166 -111v95q69 12 97 97q15 45 15 87q0 7 -0.5 12.5t-2.5 12.5h-109z" />
|
||||
<glyph unicode="-" horiz-adv-x="682" d="M85 478v185h502v-185h-502z" />
|
||||
<glyph unicode="." horiz-adv-x="569" d="M175 0v218h209v-218h-209z" />
|
||||
<glyph unicode="/" horiz-adv-x="569" d="M0 0l466 1469h152l-466 -1469h-152z" />
|
||||
<glyph unicode="0" d="M64 687q0 244 63 419q118 326 427 326q278 0 402 -229q96 -177 96 -485q0 -292 -87 -483q-126 -274 -412 -274q-258 0 -384 224q-105 187 -105 502zM259 680q0 -219 47 -352q72 -203 246 -203q140 0 223 124t83 462q0 244 -60 401.5t-233 157.5q-159 0 -232.5 -149.5 t-73.5 -440.5z" />
|
||||
<glyph unicode="1" d="M196 1014v138q195 19 272 63.5t115 210.5h142v-1426h-192v1014h-337z" />
|
||||
<glyph unicode="2" d="M64 0q10 185 76.5 322t259.5 249l192 111q129 75 181 128q82 83 82 190q0 125 -75 198.5t-200 73.5q-185 0 -256 -140q-38 -75 -42 -208h-183q3 187 69 305q117 208 413 208q246 0 359.5 -133t113.5 -296q0 -172 -121 -294q-70 -71 -251 -172l-137 -76q-98 -54 -154 -103 q-100 -87 -126 -193h782v-170h-983z" />
|
||||
<glyph unicode="3" d="M49 440h188q12 -139 52 -202q70 -113 253 -113q142 0 228 76t86 196q0 148 -90.5 207t-251.5 59q-18 0 -36.5 -0.5t-37.5 -1.5v159q28 -3 47 -4t41 -1q101 0 166 32q114 56 114 200q0 107 -76 165t-177 58q-180 0 -249 -120q-38 -66 -43 -188h-178q0 160 64 272 q110 200 387 200q219 0 339 -97.5t120 -282.5q0 -132 -71 -214q-44 -51 -114 -80q113 -31 176.5 -119.5t63.5 -216.5q0 -205 -135 -334t-383 -129q-254 0 -368.5 139.5t-114.5 339.5z" />
|
||||
<glyph unicode="4" d="M52 350v176l656 910h152v-929h211v-157h-211v-350h-180v350h-628zM218 507h459v649z" />
|
||||
<glyph unicode="5" d="M66 365h187q18 -154 143 -213q64 -30 148 -30q160 0 237 102t77 226q0 150 -91.5 232t-219.5 82q-93 0 -159.5 -36t-113.5 -100l-156 9l109 771h744v-174h-609l-61 -398q50 38 95 57q80 33 185 33q197 0 334 -127t137 -322q0 -203 -125.5 -358t-400.5 -155 q-175 0 -309.5 98.5t-150.5 302.5z" />
|
||||
<glyph unicode="6" d="M77 629q0 267 65 453q125 356 457 356q240 0 334.5 -124.5t94.5 -256.5h-178q-16 85 -51 133q-65 90 -197 90q-151 0 -240 -139.5t-99 -399.5q62 91 156 136q86 40 192 40q180 0 314 -115t134 -343q0 -195 -127 -345.5t-362 -150.5q-201 0 -347 152.5t-146 513.5z M286 444q0 -136 79.5 -228.5t220.5 -92.5q142 0 212.5 95.5t70.5 225.5q0 110 -63 209.5t-229 99.5q-116 0 -203.5 -77t-87.5 -232z" />
|
||||
<glyph unicode="7" d="M75 1227v181h996v-157q-69 -67 -183.5 -233t-202.5 -358q-87 -187 -132 -341q-29 -99 -75 -319h-199q68 410 300 816q137 238 288 411h-792z" />
|
||||
<glyph unicode="8" d="M66 402q0 127 62 219.5t184 141.5q-75 32 -117 75q-79 80 -79 208q0 160 116 275t329 115q206 0 323 -108.5t117 -253.5q0 -134 -68 -217q-38 -47 -118 -92q89 -41 140 -94q95 -100 95 -260q0 -189 -127 -320.5t-359 -131.5q-209 0 -353.5 113.5t-144.5 329.5zM263 398 q0 -112 74.5 -193.5t230.5 -81.5q125 0 207.5 67.5t82.5 201.5q0 139 -85 211t-218 72q-129 0 -210.5 -73.5t-81.5 -203.5zM305 1047q0 -101 75 -158t177 -57q119 0 186 66.5t67 158.5q0 80 -64 147t-195 67q-130 0 -188 -67t-58 -157z" />
|
||||
<glyph unicode="9" d="M73 943q0 195 119 343t351 148q313 0 432 -282q66 -155 66 -388q0 -263 -79 -466q-131 -338 -444 -338q-210 0 -319 110t-109 276h182q8 -149 115 -206q55 -30 124 -30q129 0 220 107.5t129 436.5q-60 -95 -148.5 -133.5t-190.5 -38.5q-207 0 -327.5 129t-120.5 332z M260 945q0 -140 68 -222.5t217 -82.5q107 0 195.5 70.5t88.5 246.5q0 158 -79.5 235.5t-202.5 77.5q-132 0 -209.5 -88.5t-77.5 -236.5z" />
|
||||
<glyph unicode=":" horiz-adv-x="569" d="M227 0v218h209v-218h-209zM227 839v218h209v-218h-209z" />
|
||||
<glyph unicode=";" horiz-adv-x="569" d="M227 0v218h213v-202q0 -107 -31 -179q-52 -118 -182 -141v95q70 13 97 93q14 42 14 92q0 5 -0.5 8.5t-1.5 15.5h-109zM227 839v218h213v-218h-213z" />
|
||||
<glyph unicode="<" horiz-adv-x="1196" d="M28 440v166l1169 458v-180l-956 -361l956 -362v-180z" />
|
||||
<glyph unicode="=" horiz-adv-x="1196" d="M92 222v171h1043v-171h-1043zM92 654v168h1043v-168h-1043z" />
|
||||
<glyph unicode=">" horiz-adv-x="1196" d="M28 -19v180l955 362l-955 361v180l1169 -458v-168z" />
|
||||
<glyph unicode="?" d="M156 1009q0 216 122 347.5t335 131.5q197 0 315.5 -112.5t118.5 -287.5q0 -106 -43.5 -172t-175.5 -194q-96 -93 -124.5 -157.5t-28.5 -190.5h-178q0 143 34 230.5t149 200.5l80 79q36 34 58 71q40 65 40 135q0 98 -58.5 170t-193.5 72q-167 0 -231 -124 q-36 -69 -41 -199h-178zM493 0v208h199v-208h-199z" />
|
||||
<glyph unicode="@" horiz-adv-x="2079" d="M225 701q0 326 220 554q244 254 655 254q356 0 560 -180q191 -170 191 -441q0 -228 -136.5 -389.5t-305.5 -161.5q-99 0 -146 47.5t-47 114.5q0 11 2 23t5 25q-53 -115 -134 -162.5t-167 -47.5q-123 0 -199.5 89t-76.5 229q0 199 130.5 351t280.5 152q102 0 168.5 -59 t70.5 -142l50 168h147l-133 -438q-15 -51 -22 -82t-7 -55q0 -45 27.5 -65.5t62.5 -20.5q114 0 204.5 119t90.5 311q0 232 -162 364.5t-436 132.5q-380 0 -581 -222q-172 -189 -172 -475q0 -250 164 -420q192 -201 547 -201q166 0 309 52.5t262 141.5l66 -90 q-90 -80 -269 -150t-394 -70q-418 0 -644 261q-181 209 -181 483zM812 652q0 -98 43 -149.5t108 -51.5q135 0 210.5 157.5t75.5 284.5q0 62 -41.5 111.5t-114.5 49.5q-114 0 -197.5 -134.5t-83.5 -267.5z" />
|
||||
<glyph unicode="A" horiz-adv-x="1366" d="M30 0l553 1469h225l533 -1469h-218l-149 440h-581l-159 -440h-204zM450 602h460l-223 649zM686 1469z" />
|
||||
<glyph unicode="B" horiz-adv-x="1366" d="M151 0v1469h631q258 0 367 -154q64 -91 64 -210q0 -139 -79 -228q-41 -47 -118 -86q113 -43 169 -97q99 -96 99 -265q0 -142 -89 -257q-133 -172 -423 -172h-621zM346 170h429q183 0 261 106q49 67 49 162q0 160 -143 218q-76 31 -201 31h-395v-517zM346 848h362 q126 0 196 35q110 55 110 198q0 144 -117 194q-66 28 -196 28h-355v-455z" />
|
||||
<glyph unicode="C" horiz-adv-x="1479" d="M90 750q0 325 172 533q186 226 513 226q279 0 433 -147t171 -334h-194q-33 142 -131.5 225t-276.5 83q-217 0 -350.5 -152.5t-133.5 -467.5q0 -258 120.5 -418.5t359.5 -160.5q220 0 335 169q61 89 91 234h194q-26 -232 -172 -389q-175 -189 -472 -189q-256 0 -430 155 q-229 205 -229 633zM735 1509z" />
|
||||
<glyph unicode="D" horiz-adv-x="1479" d="M165 0v1469h595q303 0 470 -215q149 -194 149 -497q0 -234 -88 -423q-155 -334 -533 -334h-593zM365 170h355q101 0 166 21q116 39 190 150q59 89 85 228q15 83 15 154q0 273 -108.5 424t-349.5 151h-353v-1128z" />
|
||||
<glyph unicode="E" horiz-adv-x="1366" d="M175 0v1469h1071v-180h-877v-446h811v-170h-811v-498h892v-175h-1086zM718 1469z" />
|
||||
<glyph unicode="F" horiz-adv-x="1251" d="M175 0v1469h1019v-180h-820v-446h721v-175h-721v-668h-199z" />
|
||||
<glyph unicode="G" horiz-adv-x="1593" d="M99 712q0 369 200 587q190 208 492 208q207 0 358 -80q219 -115 268 -403h-197q-36 161 -149 234.5t-285 73.5q-204 0 -343.5 -153t-139.5 -456q0 -262 115 -426.5t375 -164.5q199 0 329.5 115.5t133.5 373.5h-460v165h645v-786h-128l-48 189q-101 -111 -179 -154 q-131 -74 -333 -74q-261 0 -449 169q-205 212 -205 582zM758 1509z" />
|
||||
<glyph unicode="H" horiz-adv-x="1479" d="M161 0v1469h201v-607h764v607h201v-1469h-201v687h-764v-687h-201z" />
|
||||
<glyph unicode="I" horiz-adv-x="569" d="M201 0v1469h201v-1469h-201z" />
|
||||
<glyph unicode="J" horiz-adv-x="1024" d="M35 369v105h187v-105q0 -120 53.5 -180.5t166.5 -60.5q159 0 208 109q30 67 30 253v979h197v-1031q0 -186 -55 -289q-102 -188 -388 -188q-165 0 -282 89.5t-117 318.5z" />
|
||||
<glyph unicode="K" horiz-adv-x="1366" d="M156 0v1469h194v-716l716 716h275l-611 -592l628 -877h-259l-514 737l-235 -225v-512h-194z" />
|
||||
<glyph unicode="L" d="M156 0v1469h199v-1294h744v-175h-943z" />
|
||||
<glyph unicode="M" horiz-adv-x="1706" d="M151 0v1469h285l422 -1242l419 1242h282v-1469h-189v867q0 45 2 149t2 223l-419 -1239h-197l-422 1239v-45q0 -54 2.5 -164.5t2.5 -162.5v-867h-190z" />
|
||||
<glyph unicode="N" horiz-adv-x="1479" d="M156 0v1469h235l742 -1190v1190h189v-1469h-223l-753 1189v-1189h-190zM726 1469z" />
|
||||
<glyph unicode="O" horiz-adv-x="1593" d="M80 727q0 298 148 510q190 272 562 272q389 0 576 -250q146 -195 146 -499q0 -329 -167 -547q-196 -256 -559 -256q-339 0 -533 224q-173 216 -173 546zM286 714q0 -244 123.5 -411.5t400.5 -167.5q263 0 380.5 188.5t117.5 433.5q0 259 -135.5 417t-370.5 158 q-228 0 -372 -156.5t-144 -461.5zM796 1509z" />
|
||||
<glyph unicode="P" horiz-adv-x="1366" d="M175 0v1469h661q196 0 316 -110.5t120 -310.5q0 -172 -107 -299.5t-329 -127.5h-462v-621h-199zM374 789h396q134 0 217.5 57t83.5 201q0 162 -120 220q-66 31 -181 31h-396v-509z" />
|
||||
<glyph unicode="Q" horiz-adv-x="1593" d="M80 727q0 298 148 510q190 272 562 272q389 0 576 -250q146 -195 146 -499q0 -142 -35 -273q-53 -200 -179 -326l202 -157l-100 -121l-227 173q-82 -45 -177.5 -72t-208.5 -27q-342 0 -536 224q-171 218 -171 546zM286 714q0 -265 133.5 -422t391.5 -157q62 0 116 8.5 t94 33.5l-161 126l100 123l192 -149q91 104 123.5 233t32.5 247q0 259 -135.5 417t-370.5 158q-238 0 -377 -151.5t-139 -466.5z" />
|
||||
<glyph unicode="R" horiz-adv-x="1479" d="M180 0v1469h680q168 0 277 -49q207 -94 207 -347q0 -132 -54.5 -216t-152.5 -135q86 -35 129.5 -92t48.5 -185l7 -197q3 -84 14 -125q18 -70 64 -90v-33h-244q-10 19 -16 49t-10 116l-12 245q-7 144 -107 193q-57 27 -179 27h-453v-630h-199zM379 796h460q140 0 221.5 56 t81.5 202q0 157 -114 214q-61 30 -163 30h-486v-502z" />
|
||||
<glyph unicode="S" horiz-adv-x="1366" d="M99 474h187q7 -125 59 -203q99 -146 349 -146q112 0 204 32q178 62 178 222q0 120 -75 171q-76 50 -238 87l-199 45q-195 44 -276 97q-140 92 -140 275q0 198 137 325t388 127q231 0 392.5 -111.5t161.5 -356.5h-187q-15 118 -64 181q-91 115 -309 115q-176 0 -253 -74 t-77 -172q0 -108 90 -158q59 -32 267 -80l206 -47q149 -34 230 -93q140 -103 140 -299q0 -244 -177.5 -349t-412.5 -105q-274 0 -429 140q-152 136 -152 368v9zM688 1509z" />
|
||||
<glyph unicode="T" horiz-adv-x="1251" d="M33 1294v175h1192v-175h-495v-1294h-202v1294h-495z" />
|
||||
<glyph unicode="U" horiz-adv-x="1479" d="M170 644v825h202v-908q0 -160 60 -266q89 -160 300 -160q253 0 344 173q49 94 49 253v908h202v-825q0 -271 -73 -417q-134 -266 -506 -266t-505 266q-73 146 -73 417zM749 1469z" />
|
||||
<glyph unicode="V" horiz-adv-x="1366" d="M52 1469h220l422 -1251l417 1251h223l-536 -1469h-211z" />
|
||||
<glyph unicode="W" horiz-adv-x="1933" d="M37 1469h216l277 -1195l332 1195h216l332 -1195l277 1195h218l-386 -1469h-209l-339 1218l-341 -1218h-209z" />
|
||||
<glyph unicode="X" horiz-adv-x="1366" d="M42 0l526 753l-493 716h249l375 -562l372 562h237l-493 -716l517 -753h-247l-396 604l-407 -604h-240z" />
|
||||
<glyph unicode="Y" horiz-adv-x="1366" d="M42 1469h232l422 -706l422 706h233l-555 -877v-592h-199v592zM699 1469z" />
|
||||
<glyph unicode="Z" horiz-adv-x="1251" d="M47 0v165l901 1129h-835v175h1091v-171l-906 -1123h906v-175h-1157zM659 1469z" />
|
||||
<glyph unicode="[" horiz-adv-x="569" d="M128 -403v1882h384v-147h-214v-1588h214v-147h-384z" />
|
||||
<glyph unicode="\" horiz-adv-x="569" d="M-69 1469h156l571 -1469h-156z" />
|
||||
<glyph unicode="]" horiz-adv-x="569" d="M47 -256h213v1588h-213v147h384v-1882h-384v147z" />
|
||||
<glyph unicode="^" horiz-adv-x="961" d="M120 606l351 863h154l353 -863h-163l-266 662l-265 -662h-164z" />
|
||||
<glyph unicode="_" d="M0 -155h1139v-101h-1139v101z" />
|
||||
<glyph unicode="`" horiz-adv-x="682" d="M38 1502h223l182 -289h-137z" />
|
||||
<glyph unicode="a" d="M82 281q0 149 93 231t244 101l287 36q62 8 83 52q12 24 12 69q0 92 -65.5 133.5t-187.5 41.5q-141 0 -200 -76q-33 -42 -43 -125h-168q5 198 128.5 275.5t286.5 77.5q189 0 307 -72q117 -72 117 -224v-617q0 -28 11.5 -45t48.5 -17q12 0 27 1.5t32 4.5v-133 q-42 -12 -64 -15t-60 -3q-93 0 -135 66q-22 35 -31 99q-55 -72 -158 -125t-227 -53q-149 0 -243.5 90.5t-94.5 226.5zM270 285q0 -78 57 -123t135 -45q95 0 184 44q150 73 150 239v145q-33 -21 -85 -35t-102 -20l-109 -14q-98 -13 -147 -41q-83 -47 -83 -150zM557 1097z" />
|
||||
<glyph unicode="b" d="M118 0v1474h175v-533q59 77 141 117.5t178 40.5q200 0 324.5 -137.5t124.5 -405.5q0 -254 -123 -422t-341 -168q-122 0 -206 59q-50 35 -107 112v-137h-166zM283 547q0 -151 38 -245q71 -177 265 -177q146 0 218.5 116t72.5 306q0 169 -72.5 280t-213.5 111 q-123 0 -215.5 -91t-92.5 -300z" />
|
||||
<glyph unicode="c" horiz-adv-x="1024" d="M59 506q0 282 137 439t349 157q181 0 294.5 -88t136.5 -303h-175q-16 99 -73 164.5t-183 65.5q-172 0 -246 -168q-48 -109 -48 -269q0 -161 68 -271t214 -110q112 0 177.5 68.5t90.5 187.5h175q-30 -213 -150 -311.5t-307 -98.5q-210 0 -335 153.5t-125 383.5zM517 1097z " />
|
||||
<glyph unicode="d" d="M56 513q0 234 119.5 405.5t341.5 171.5q123 0 206 -52q48 -30 109 -105v541h173v-1474h-162v149q-63 -99 -149 -143t-197 -44q-179 0 -310 150.5t-131 400.5zM246 523q0 -172 73 -288t234 -116q125 0 205.5 107.5t80.5 308.5q0 203 -83 300.5t-205 97.5 q-136 0 -220.5 -104t-84.5 -306z" />
|
||||
<glyph unicode="e" d="M72 515q0 258 140 419t366 161q114 0 221 -53.5t163 -138.5q54 -81 72 -189q16 -74 16 -236h-785q5 -163 77 -261.5t223 -98.5q141 0 225 93q48 54 68 125h177q-7 -59 -46.5 -131.5t-88.5 -118.5q-82 -80 -203 -108q-65 -16 -147 -16q-200 0 -339 145.5t-139 407.5z M270 621h595q-11 117 -51 187q-74 130 -247 130q-124 0 -208 -89.5t-89 -227.5zM561 1097z" />
|
||||
<glyph unicode="f" horiz-adv-x="569" d="M28 924v142h149v168q4 112 39 164q63 92 243 92q17 0 35 -1t41 -3v-164q-28 2 -40.5 2.5t-23.5 0.5q-82 0 -98 -42.5t-16 -216.5h178v-142h-180v-924h-178v924h-149z" />
|
||||
<glyph unicode="g" d="M61 519q0 269 131.5 420t317.5 151q126 0 220 -62q51 -35 104 -102v135h166v-974q0 -204 -60 -322q-112 -218 -423 -218q-173 0 -291 77.5t-132 242.5h183q13 -72 52 -111q61 -60 192 -60q207 0 271 146q35 80 35 275v32q-54 -82 -130 -122t-201 -40q-174 0 -304.5 123.5 t-130.5 408.5zM246 504q0 -181 73.5 -275.5t197.5 -94.5q194 0 273 175q44 99 44 231q0 199 -82 295t-209 96q-190 0 -260 -178q-37 -95 -37 -249zM531 1097z" />
|
||||
<glyph unicode="h" d="M132 0v1474h180v-548q64 81 115 114q87 57 217 57q233 0 316 -163q45 -89 45 -247v-687h-185v675q0 118 -30 173q-49 88 -184 88q-112 0 -203 -77t-91 -291v-568h-180z" />
|
||||
<glyph unicode="i" horiz-adv-x="455" d="M132 0v1066h183v-1066h-183zM132 1265v204h183v-204h-183z" />
|
||||
<glyph unicode="j" horiz-adv-x="455" d="M-38 -271q121 4 145.5 21.5t24.5 109.5v1206h180v-1225q0 -117 -38 -175q-63 -98 -239 -98q-13 0 -27.5 1t-45.5 4v156zM132 1261v208h180v-208h-180z" />
|
||||
<glyph unicode="k" horiz-adv-x="1024" d="M128 0v1469h173v-853l462 455h230l-410 -401l433 -670h-230l-334 540l-151 -138v-402h-173z" />
|
||||
<glyph unicode="l" horiz-adv-x="455" d="M137 0v1469h180v-1469h-180z" />
|
||||
<glyph unicode="m" horiz-adv-x="1706" d="M132 0v1071h178v-152q64 79 116 115q89 61 202 61q128 0 206 -63q44 -36 80 -106q60 86 141 127.5t182 41.5q216 0 294 -156q42 -84 42 -226v-713h-187v744q0 107 -53.5 147t-130.5 40q-106 0 -182.5 -71t-76.5 -237v-623h-183v699q0 109 -26 159q-41 75 -153 75 q-102 0 -185.5 -79t-83.5 -286v-568h-180z" />
|
||||
<glyph unicode="n" d="M132 0v1071h171v-152q76 94 161 135t189 41q228 0 308 -159q44 -87 44 -249v-687h-183v675q0 98 -29 158q-48 100 -174 100q-64 0 -105 -13q-74 -22 -130 -88q-45 -53 -58.5 -109.5t-13.5 -161.5v-561h-180zM555 1097z" />
|
||||
<glyph unicode="o" d="M59 512q0 270 137 430t368 160q207 0 350 -138t143 -406q0 -259 -126 -428t-391 -169q-221 0 -351 149.5t-130 401.5zM244 515q0 -171 75 -285t238 -114q179 0 245.5 135.5t66.5 301.5q0 150 -48 244q-76 148 -262 148q-165 0 -240 -126t-75 -304zM558 1097z" />
|
||||
<glyph unicode="p" d="M118 -427v1493h175v-142q54 73 118 113q91 60 214 60q182 0 309 -139.5t127 -398.5q0 -350 -183 -500q-116 -95 -270 -95q-121 0 -203 53q-48 30 -107 103v-547h-180zM291 498q0 -124 37 -211q70 -166 256 -166q126 0 209.5 105.5t83.5 315.5q0 128 -37 220 q-70 177 -256 177q-187 0 -256 -187q-37 -100 -37 -254z" />
|
||||
<glyph unicode="q" d="M60 508q0 257 126.5 422t327.5 165q133 0 224 -67q50 -36 96 -106v149h171v-1498h-181v550q-45 -72 -124.5 -114.5t-198.5 -42.5q-171 0 -306 134t-135 408zM248 521q0 -139 39 -233q69 -167 247 -167q188 0 259 176q39 97 39 248q0 139 -43 232q-73 159 -257 159 q-117 0 -200.5 -101.5t-83.5 -313.5z" />
|
||||
<glyph unicode="r" horiz-adv-x="682" d="M137 0v1071h171v-185q21 54 103 131.5t189 77.5q5 0 17 -1t41 -4v-190q-16 3 -29.5 4t-29.5 1q-136 0 -209 -87.5t-73 -201.5v-616h-180z" />
|
||||
<glyph unicode="s" horiz-adv-x="1024" d="M66 336h173q8 -90 45 -138q68 -87 236 -87q100 0 176 43.5t76 134.5q0 69 -61 105q-39 22 -154 51l-143 36q-137 34 -202 76q-116 73 -116 202q0 152 109.5 246t294.5 94q242 0 349 -142q65 -87 65 -188v-6h-170q-5 61 -43 111q-62 71 -215 71q-102 0 -154.5 -39 t-52.5 -103q0 -70 69 -112q40 -25 118 -44l119 -29q194 -47 260 -91q105 -69 105 -217q0 -143 -108.5 -247t-330.5 -104q-239 0 -338.5 108.5t-106.5 268.5zM505 1097z" />
|
||||
<glyph unicode="t" horiz-adv-x="569" d="M23 924v147h145v299h182v-299h171v-147h-171v-699q0 -56 38 -75q21 -11 70 -11q13 0 28 0.5t35 2.5v-142q-31 -9 -64.5 -13t-72.5 -4q-126 0 -171 64.5t-45 167.5v709h-145z" />
|
||||
<glyph unicode="u" d="M128 343v728h184v-711q0 -82 26 -134q48 -96 179 -96q188 0 256 168q37 90 37 247v526h180v-1071h-170l2 158q-35 -61 -87 -103q-103 -84 -250 -84q-229 0 -312 153q-45 82 -45 219zM559 1097z" />
|
||||
<glyph unicode="v" horiz-adv-x="1024" d="M11 1071h209l286 -872l299 872h197l-404 -1071h-192z" />
|
||||
<glyph unicode="w" horiz-adv-x="1479" d="M18 1071h197l206 -844l209 844h202l210 -839l219 839h180l-311 -1071h-187l-218 829l-211 -829h-187z" />
|
||||
<glyph unicode="x" horiz-adv-x="1024" d="M11 0l377 549l-358 522h233l246 -377l249 377l219 -5l-361 -517l377 -549h-230l-266 402l-258 -402h-228z" />
|
||||
<glyph unicode="y" horiz-adv-x="1024" d="M21 1071h204l287 -872l289 872h199q-38 -103 -169 -470q-98 -276 -164 -450q-156 -410 -220 -500t-220 -90q-38 0 -58.5 3t-50.5 11v164q47 -13 68 -16t37 -3q50 0 73.5 16.5t39.5 40.5q5 8 36 82t45 110zM511 1097z" />
|
||||
<glyph unicode="z" horiz-adv-x="1024" d="M52 0v142l635 768h-588v161h830v-147l-631 -763h650v-161h-896zM515 1097z" />
|
||||
<glyph unicode="{" horiz-adv-x="684" d="M-43 483v114q177 21 238 131q34 61 34 175v163q0 188 81.5 298t329.5 131v-114q-161 -14 -218 -142q-31 -70 -31 -194v-112q0 -150 -37 -230q-67 -145 -260 -163q192 -17 260 -168q37 -83 37 -226v-151q0 -154 78 -219.5t171 -76.5v-117q-178 18 -294.5 104.5 t-116.5 284.5v206q0 109 -34 172q-62 115 -238 134z" />
|
||||
<glyph unicode="|" horiz-adv-x="532" d="M144 0v1490h171v-1490h-171z" />
|
||||
<glyph unicode="}" horiz-adv-x="684" d="M42 -301q107 14 178 85.5t71 210.5v151q0 144 37 226q68 151 259 168q-192 18 -259 162q-37 80 -37 231v112q0 132 -31 200q-56 122 -218 136v114q258 -21 350 -160q60 -89 60 -269v-163q0 -112 34 -174q62 -113 239 -132v-114q-176 -18 -239 -135q-34 -64 -34 -171v-206 q0 -202 -116.5 -286t-293.5 -103v117z" />
|
||||
<glyph unicode="~" horiz-adv-x="1196" d="M18 320q17 83 37 141.5t70 132.5q42 50 90.5 74t113.5 24q29 0 61 -5q57 -8 110 -29l222 -87q51 -20 84 -30q53 -15 93 -15q73 0 124 57.5t69 141.5h116q-25 -142 -98.5 -259t-222.5 -117q-45 0 -107 18q-36 11 -107 38l-204 78q-38 15 -78.5 23t-66.5 8q-84 0 -132 -65 q-28 -38 -57 -129h-117z" />
|
||||
<glyph unicode="¡" horiz-adv-x="682" d="M232 85l52 635h101l51 -635v-484h-204v484zM232 862v209h204v-209h-204z" />
|
||||
<glyph unicode="¢" d="M104 521q0 256 132.5 418.5t369.5 162.5q21 0 44 -2.5t46 -7.5l53 183h83l-55 -202q119 -49 186 -141.5t79 -225.5h-168q-10 59 -40 117q-35 62 -102 87l-223 -785q19 -6 35 -9t46 -3q136 0 211 94q44 55 76 167h173q-31 -149 -104 -247q-129 -170 -372 -170 q-37 0 -60 3.5t-50 10.5l-62 -208h-85l69 232q-154 71 -218 211.5t-64 314.5zM286 523q0 -156 53 -254q32 -66 94 -111l221 775q-12 4 -28 7t-41 3q-126 0 -212.5 -115t-86.5 -305z" />
|
||||
<glyph unicode="£" d="M56 649v104h157q0 -5 -33.5 62.5t-44.5 98.5q-10 29 -17 67.5t-7 82.5q0 156 127 279.5t364 123.5q223 0 337.5 -122t117.5 -345h-185q0 151 -70.5 229.5t-214.5 78.5q-140 0 -212 -73.5t-72 -178.5q0 -52 22.5 -107t95.5 -196h328v-104h-283q10 -46 14.5 -72t4.5 -54 q0 -100 -60 -197.5t-188 -193.5q69 35 136 55.5t131 20.5q72 0 190.5 -35.5t155.5 -35.5q47 0 86 18q24 11 73 46l83 -135q-56 -45 -100 -67q-73 -35 -155 -35q-60 0 -201.5 46t-223.5 46q-76 0 -144 -26q-40 -16 -103 -54l-99 142q113 79 182 174.5t69 207.5q0 32 -13 75 q-8 27 -27 74h-221z" />
|
||||
<glyph unicode="¤" d="M75 315l140 137q-42 54 -63.5 116t-21.5 130q0 85 24 147t61 115l-140 135l95 94l138 -137q56 42 115.5 63.5t128.5 21.5q83 0 145 -22.5t116 -64.5l137 139l95 -94l-140 -140q46 -58 68.5 -121t22.5 -137q0 -58 -19.5 -121.5t-71.5 -123.5l140 -137l-95 -95l-137 135 q-57 -43 -119 -64.5t-130 -21.5q-62 0 -123.5 18t-132.5 70l-138 -139zM267 704q0 -120 85.5 -206t208.5 -86q119 0 205.5 83.5t86.5 208.5t-86.5 209t-205.5 84q-122 0 -208 -85t-86 -208z" />
|
||||
<glyph unicode="¥" d="M-31 1405h223l365 -675l367 675h223l-265 -445h175v-136h-253l-129 -218h349v-135h-373v-471h-189v471h-363v135h339l-128 218h-258v136h180z" />
|
||||
<glyph unicode="¦" horiz-adv-x="532" d="M144 0v578h171v-578h-171zM144 912v578h171v-578h-171z" />
|
||||
<glyph unicode="§" d="M75 607q0 96 59 173.5t155 136.5q-44 40 -68 86q-27 58 -27 123q0 145 99.5 244.5t262.5 99.5q240 0 331 -159q48 -83 51 -216h-175q-7 95 -33 140q-47 82 -165 82q-94 0 -143.5 -44.5t-49.5 -118.5q0 -43 18.5 -77.5t55.5 -60.5q74 -51 263 -157q336 -188 336 -398 q0 -119 -72 -208q-41 -51 -139 -121q53 -49 82 -107t29 -125q0 -135 -105 -233.5t-283 -98.5q-235 0 -329 152q-52 82 -63 232h178q8 -98 35 -144q48 -83 167 -83q78 0 125 21q88 39 88 147q0 46 -27 86q-16 22 -45 46q-16 13 -104 73q-52 35 -99 67l-178 119 q-106 71 -151 123q-79 89 -79 200zM251 638q0 -43 13 -76q25 -61 93 -105l375 -242q59 34 87 68q50 59 50 146q0 78 -53 133q-33 34 -134 96l-291 178q-59 -32 -87 -62q-53 -56 -53 -136z" />
|
||||
<glyph unicode="¨" horiz-adv-x="682" d="M82 1237v208h187v-208h-187zM412 1237v208h187v-208h-187z" />
|
||||
<glyph unicode="©" horiz-adv-x="1509" d="M18 737q0 304 215 518t520 214t520 -214t215 -518q0 -305 -215 -521t-520 -216t-520 216t-215 521zM125 737q0 -264 182 -450q184 -186 446 -186t446 186q182 186 182 450q0 262 -183 447q-183 186 -445 186q-261 0 -445 -186q-183 -185 -183 -447zM373 742 q0 183 105.5 306t275.5 123q107 0 193 -43q149 -77 162 -256h-121q-9 75 -63 130t-157 55q-145 0 -210 -130q-42 -83 -42 -179q0 -137 67.5 -230.5t195.5 -93.5q82 0 137 43.5t77 126.5h121q-23 -135 -117 -209.5t-225 -74.5q-165 0 -282 118t-117 314z" />
|
||||
<glyph unicode="ª" horiz-adv-x="758" d="M59 1021q0 106 89 158q49 30 131 41l159 22q25 4 42 14.5t17 43.5q0 53 -31 78t-104 25q-72 0 -103.5 -28.5t-36.5 -76.5h-128q8 101 71 156t219 55q155 0 216 -72q40 -48 40 -134v-315q0 -21 7.5 -33t36.5 -12q6 0 34 2v-106q-22 -6 -42 -9t-42 -3q-52 0 -77.5 28.5 t-30.5 73.5q-50 -59 -119 -80.5t-127 -21.5q-111 0 -166 59t-55 135zM210 1023q0 -41 25.5 -64.5t76.5 -23.5q82 0 132.5 37t50.5 120v76q-46 -21 -159 -36q-126 -26 -126 -109z" />
|
||||
<glyph unicode="«" d="M194 464v190l322 251v-180l-215 -166l215 -166v-180zM613 464v190l323 251v-180l-216 -166l216 -166v-180z" />
|
||||
<glyph unicode="¬" horiz-adv-x="1196" d="M92 654v168h1043v-600h-168v432h-875z" />
|
||||
<glyph unicode="­" horiz-adv-x="682" d="M85 478v185h502v-185h-502z" />
|
||||
<glyph unicode="®" horiz-adv-x="1509" d="M21 737q0 303 215 518q214 214 517 214q305 0 520 -214t215 -518q0 -305 -215 -521t-520 -216t-519 216q-213 215 -213 521zM123 737q0 -264 183 -450q184 -186 447 -186t447 186t184 450q0 262 -184 447q-185 186 -447 186q-261 0 -446 -186q-184 -185 -184 -447z M457 336v806h282q150 0 220 -29q125 -52 125 -204q0 -108 -79 -159q-42 -27 -117 -39q95 -15 139 -79t44 -125v-59q0 -28 2 -60t7 -42l5 -10h-133l-2 8t-2 9l-3 26v64q0 140 -76 185q-45 26 -158 26h-112v-318h-142zM599 753h128q90 0 135 18q83 33 83 126q0 88 -53.5 118 t-171.5 30h-121v-292z" />
|
||||
<glyph unicode="¯" horiz-adv-x="682" d="M21 1282v118h640v-118h-640z" />
|
||||
<glyph unicode="°" horiz-adv-x="819" d="M111 1127q0 128 89.5 216t213.5 88q127 0 214 -87.5t87 -213.5q0 -130 -90.5 -216.5t-210.5 -86.5q-133 0 -218 90t-85 210zM220 1128q0 -78 57 -135t137 -57q77 0 134.5 56.5t57.5 137.5q0 78 -56.5 135t-135.5 57t-136.5 -56.5t-57.5 -137.5z" />
|
||||
<glyph unicode="±" horiz-adv-x="1124" d="M92 0v161h1043v-161h-1043zM92 557v158h436v330h171v-330h436v-158h-436v-318h-171v318h-436z" />
|
||||
<glyph unicode="²" horiz-adv-x="682" d="M11 571q0 145 70 234t174 141q149 74 193.5 110t44.5 96q0 66 -37 106t-118 40t-113 -51t-33 -124h-157q0 150 85.5 229.5t222.5 79.5q139 0 223.5 -67t84.5 -196q0 -119 -61.5 -180t-194.5 -125q-171 -77 -201 -153h457v-140h-640z" />
|
||||
<glyph unicode="³" horiz-adv-x="682" d="M7 832h147q7 -82 29 -114q37 -55 138 -55q97 0 138.5 42t41.5 103q0 96 -102 128q-55 17 -141 14v121q96 -1 137 13q74 25 74 105q0 48 -33.5 83.5t-105.5 35.5q-69 0 -112.5 -37.5t-44.5 -126.5h-145q0 136 82 211.5t219 75.5q132 0 212 -67t80 -165q0 -69 -31.5 -114 t-89.5 -61q84 -21 119 -75.5t35 -141.5q0 -127 -98.5 -196t-233.5 -69q-129 0 -220 65t-95 225z" />
|
||||
<glyph unicode="´" horiz-adv-x="682" d="M138 1213l183 289h222l-267 -289h-138z" />
|
||||
<glyph unicode="µ" horiz-adv-x="1180" d="M-76 -422l324 1491h185l-163 -757q-4 -17 -5.5 -29.5t-1.5 -27.5q0 -48 19 -76q35 -51 132 -51q145 0 245.5 106.5t131.5 248.5l128 586h183l-230 -1069h-173l42 180q-22 -44 -94 -105q-123 -103 -273 -103q-47 0 -96 17t-72 39l-97 -450h-185z" />
|
||||
<glyph unicode="¶" horiz-adv-x="1100" d="M-11 995q0 148 72 264q130 210 428 210h576v-116h-125v-1716h-147v1716h-231v-1716h-147v889q-213 3 -319.5 148.5t-106.5 320.5z" />
|
||||
<glyph unicode="·" horiz-adv-x="569" d="M151 701q0 53 37 90.5t91 37.5t91 -37.5t37 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
|
||||
<glyph unicode="¸" horiz-adv-x="682" d="M121 -418l35 81q38 -14 59 -20q41 -11 74 -11q37 0 64 11q52 21 52 76q0 32 -26.5 55.5t-70.5 23.5q-22 0 -39.5 -4t-41.5 -13l-35 41l130 178h97l-94 -128q29 9 75 9q70 0 115.5 -40.5t45.5 -115.5q0 -76 -60 -131t-184 -55q-53 0 -110 15q-32 8 -86 28z" />
|
||||
<glyph unicode="¹" horiz-adv-x="682" d="M87 1154v107q126 11 166 32q62 32 85 133h131v-855h-161v583h-221z" />
|
||||
<glyph unicode="º" horiz-adv-x="748" d="M49 1163q0 113 56 205q87 141 277 141q143 0 231 -85t88 -253q0 -149 -83.5 -246.5t-245.5 -97.5q-185 0 -268 134q-55 88 -55 202zM194 1158q0 -89 41.5 -152t131.5 -63q112 0 159 95q28 57 28 134q0 110 -50.5 165.5t-122.5 55.5q-88 0 -137.5 -60.5t-49.5 -174.5z" />
|
||||
<glyph unicode="»" d="M194 213v180l211 166l-211 166v180l322 -251v-190zM613 213v180l211 166l-211 166v180l323 -251v-190z" />
|
||||
<glyph unicode="¼" horiz-adv-x="1708" d="M163 1154v107q125 11 166 32q62 32 85 133h131v-855h-161v583h-221zM384 -38l877 1469h135l-877 -1469h-135zM950 194v135l427 531h135v-543h114v-123h-114v-194h-154v194h-408zM1085 317h270v344z" />
|
||||
<glyph unicode="½" horiz-adv-x="1708" d="M90 1154v107q124 11 165 32q64 33 86 133h130v-855h-161v583h-220zM272 -38l849 1469h135l-849 -1469h-135zM950 0q11 134 61.5 221t182.5 153q149 74 193.5 111t44.5 96q0 70 -38.5 108t-116.5 38q-90 0 -124 -65q-19 -37 -23 -110h-156q0 125 74 216.5t240 91.5 q138 0 220 -69.5t82 -186.5q0 -103 -49.5 -168t-183.5 -132q-193 -89 -224 -165h457v-139h-640z" />
|
||||
<glyph unicode="¾" horiz-adv-x="1708" d="M75 832h147q0 -72 34 -118q37 -51 133 -51t138 41t42 101q0 98 -101 131q-55 17 -141 14v121q97 -1 138 13q73 26 73 107q0 43 -32 80t-108 37q-69 0 -111.5 -37t-45.5 -127h-144q0 144 85.5 215.5t215.5 71.5q131 0 211 -67t80 -165q0 -60 -30.5 -108.5t-90.5 -66.5 q100 -32 135 -105q19 -41 19 -105q0 -133 -97.5 -202.5t-233.5 -69.5q-192 0 -269 119q-47 77 -47 171zM421 -38l896 1469h136l-896 -1469h-136zM969 194v135l427 531h135v-543h114v-123h-114v-194h-154v194h-408zM1104 317h270v344z" />
|
||||
<glyph unicode="¿" horiz-adv-x="1251" d="M186 -25q0 101 47 177t146 175l47 47q91 91 113 152t22 175h178q0 -152 -30 -224t-167 -217l-78 -83q-52 -54 -70 -101t-18 -90q0 -102 64.5 -172t201.5 -70q151 0 215 111q36 64 46 211h173q4 -247 -127.5 -363t-316.5 -116t-315.5 103t-130.5 285zM545 867v209h199 v-209h-199z" />
|
||||
<glyph unicode="À" horiz-adv-x="1366" d="M30 0l553 1469h225l533 -1469h-218l-149 440h-581l-159 -440h-204zM401 1874h223l182 -289h-137zM450 602h460l-223 649zM686 1469z" />
|
||||
<glyph unicode="Á" horiz-adv-x="1366" d="M30 0l553 1469h225l533 -1469h-218l-149 440h-581l-159 -440h-204zM450 602h460l-223 649zM496 1585l183 289h222l-267 -289h-138zM686 1469z" />
|
||||
<glyph unicode="Â" horiz-adv-x="1366" d="M30 0l553 1469h225l533 -1469h-218l-149 440h-581l-159 -440h-204zM403 1585l203 289h190l204 -289h-164l-135 192l-135 -192h-163zM450 602h460l-223 649zM686 1469z" />
|
||||
<glyph unicode="Ã" horiz-adv-x="1366" d="M30 0l553 1469h225l533 -1469h-218l-149 440h-581l-159 -440h-204zM353 1604q13 79 43 129q57 92 169 92q34 0 75.5 -10t111.5 -40q28 -12 51 -19t47 -7q56 0 80 35q13 19 18 57h105q-21 -127 -80.5 -175t-130.5 -48q-22 0 -56 8t-60 18l-53 19q-47 17 -76.5 25.5 t-57.5 8.5q-35 0 -57.5 -23t-30.5 -70h-98zM450 602h460l-223 649zM686 1469z" />
|
||||
<glyph unicode="Ä" horiz-adv-x="1366" d="M30 0l553 1469h225l533 -1469h-218l-149 440h-581l-159 -440h-204zM427 1609v208h187v-208h-187zM450 602h460l-223 649zM686 1469zM757 1609v208h187v-208h-187z" />
|
||||
<glyph unicode="Å" horiz-adv-x="1366" d="M30 0l553 1469h225l533 -1469h-218l-149 440h-581l-159 -440h-204zM450 602h460l-223 649zM493 1737q0 86 61 147.5t147 61.5t147.5 -61.5t61.5 -147.5t-61.5 -147.5t-147.5 -61.5t-147 61.5t-61 147.5zM576 1737q0 -52 37 -89t88 -37q52 0 89 37t37 89t-37 89t-89 37 q-51 0 -88 -37t-37 -89zM686 1469z" />
|
||||
<glyph unicode="Æ" horiz-adv-x="2048" d="M16 0l597 1469h1316v-175h-796v-451h730v-166h-730v-502h815v-175h-1012v436h-541l-163 -436h-216zM464 604h472v694h-199z" />
|
||||
<glyph unicode="Ç" horiz-adv-x="1479" d="M90 750q0 325 172 533q186 226 513 226q279 0 433 -147t171 -334h-194q-33 142 -131.5 225t-276.5 83q-217 0 -350.5 -152.5t-133.5 -467.5q0 -258 120.5 -418.5t359.5 -160.5q220 0 335 169q61 89 91 234h194q-26 -232 -172 -389q-175 -189 -451 -189l-66 -90q29 9 75 9 q70 0 115.5 -40.5t45.5 -115.5q0 -76 -60 -131t-184 -55q-53 0 -110 15q-32 8 -86 28l35 81q38 -14 59 -20q41 -11 74 -11q37 0 64 11q52 21 52 76q0 32 -26.5 55.5t-70.5 23.5q-22 0 -39.5 -4t-41.5 -13l-35 41l102 140q-175 0 -350 139q-233 221 -233 649z" />
|
||||
<glyph unicode="È" horiz-adv-x="1366" d="M175 0v1469h1071v-180h-877v-446h811v-170h-811v-498h892v-175h-1086zM433 1874h223l182 -289h-137zM718 1469z" />
|
||||
<glyph unicode="É" horiz-adv-x="1366" d="M175 0v1469h1071v-180h-877v-446h811v-170h-811v-498h892v-175h-1086zM538 1585l183 289h222l-267 -289h-138zM718 1469z" />
|
||||
<glyph unicode="Ê" horiz-adv-x="1366" d="M175 0v1469h1071v-180h-877v-446h811v-170h-811v-498h892v-175h-1086zM435 1585l203 289h190l204 -289h-164l-135 192l-135 -192h-163zM718 1469z" />
|
||||
<glyph unicode="Ë" horiz-adv-x="1366" d="M175 0v1469h1071v-180h-877v-446h811v-170h-811v-498h892v-175h-1086zM472 1609v208h187v-208h-187zM718 1469zM802 1609v208h187v-208h-187z" />
|
||||
<glyph unicode="Ì" horiz-adv-x="569" d="M2 1873h223l182 -289h-137zM184 0v1469h201v-1469h-201z" />
|
||||
<glyph unicode="Í" horiz-adv-x="569" d="M107 1581l183 289h222l-267 -289h-138zM201 0v1469h201v-1469h-201z" />
|
||||
<glyph unicode="Î" horiz-adv-x="569" d="M-7 1589l203 289h190l204 -289h-164l-135 192l-135 -192h-163zM201 0v1469h201v-1469h-201z" />
|
||||
<glyph unicode="Ï" horiz-adv-x="569" d="M32 1605v208h187v-208h-187zM201 0v1469h201v-1469h-201zM362 1605v208h187v-208h-187z" />
|
||||
<glyph unicode="Ð" horiz-adv-x="1479" d="M33 687v178h132v604h562q365 0 531 -251q121 -183 121 -459q0 -244 -93 -436q-156 -323 -528 -323h-593v687h-132zM365 170h355q101 0 166 21q116 39 190 150q59 89 85 228q15 83 15 154q0 273 -108.5 424t-349.5 151h-353v-433h419v-178h-419v-517z" />
|
||||
<glyph unicode="Ñ" horiz-adv-x="1479" d="M156 0v1469h235l742 -1190v1190h189v-1469h-223l-753 1189v-1189h-190zM403 1604q13 79 43 129q57 92 169 92q34 0 75.5 -10t111.5 -40q28 -12 51 -19t47 -7q56 0 80 35q13 19 18 57h105q-21 -127 -80.5 -175t-130.5 -48q-22 0 -56 8t-60 18l-53 19q-47 17 -76.5 25.5 t-57.5 8.5q-35 0 -57.5 -23t-30.5 -70h-98zM726 1469z" />
|
||||
<glyph unicode="Ò" horiz-adv-x="1593" d="M80 727q0 298 148 510q190 272 562 272q389 0 576 -250q146 -195 146 -499q0 -329 -167 -547q-196 -256 -559 -256q-339 0 -533 224q-173 216 -173 546zM286 714q0 -244 123.5 -411.5t400.5 -167.5q263 0 380.5 188.5t117.5 433.5q0 259 -135.5 417t-370.5 158 q-228 0 -372 -156.5t-144 -461.5zM521 1914h223l182 -289h-137zM796 1509z" />
|
||||
<glyph unicode="Ó" horiz-adv-x="1593" d="M80 727q0 298 148 510q190 272 562 272q389 0 576 -250q146 -195 146 -499q0 -329 -167 -547q-196 -256 -559 -256q-339 0 -533 224q-173 216 -173 546zM286 714q0 -244 123.5 -411.5t400.5 -167.5q263 0 380.5 188.5t117.5 433.5q0 259 -135.5 417t-370.5 158 q-228 0 -372 -156.5t-144 -461.5zM606 1625l183 289h222l-267 -289h-138zM796 1509z" />
|
||||
<glyph unicode="Ô" horiz-adv-x="1593" d="M80 727q0 298 148 510q190 272 562 272q389 0 576 -250q146 -195 146 -499q0 -329 -167 -547q-196 -256 -559 -256q-339 0 -533 224q-173 216 -173 546zM286 714q0 -244 123.5 -411.5t400.5 -167.5q263 0 380.5 188.5t117.5 433.5q0 259 -135.5 417t-370.5 158 q-228 0 -372 -156.5t-144 -461.5zM513 1625l203 289h190l204 -289h-164l-135 192l-135 -192h-163zM796 1509z" />
|
||||
<glyph unicode="Õ" horiz-adv-x="1593" d="M80 727q0 298 148 510q190 272 562 272q389 0 576 -250q146 -195 146 -499q0 -329 -167 -547q-196 -256 -559 -256q-339 0 -533 224q-173 216 -173 546zM286 714q0 -244 123.5 -411.5t400.5 -167.5q263 0 380.5 188.5t117.5 433.5q0 259 -135.5 417t-370.5 158 q-228 0 -372 -156.5t-144 -461.5zM463 1644q13 79 43 129q57 92 169 92q34 0 75.5 -10t111.5 -40q28 -12 51 -19t47 -7q56 0 80 35q13 19 18 57h105q-21 -127 -80.5 -175t-130.5 -48q-22 0 -56 8t-60 18l-53 19q-47 17 -76.5 25.5t-57.5 8.5q-35 0 -57.5 -23t-30.5 -70h-98z M796 1509z" />
|
||||
<glyph unicode="Ö" horiz-adv-x="1593" d="M80 727q0 298 148 510q190 272 562 272q389 0 576 -250q146 -195 146 -499q0 -329 -167 -547q-196 -256 -559 -256q-339 0 -533 224q-173 216 -173 546zM286 714q0 -244 123.5 -411.5t400.5 -167.5q263 0 380.5 188.5t117.5 433.5q0 259 -135.5 417t-370.5 158 q-228 0 -372 -156.5t-144 -461.5zM560 1649v208h187v-208h-187zM796 1509zM890 1649v208h187v-208h-187z" />
|
||||
<glyph unicode="×" horiz-adv-x="1196" d="M116 144l379 379l-379 380l118 118l379 -379l380 379l121 -118l-380 -380l380 -379l-121 -121l-380 379l-379 -379z" />
|
||||
<glyph unicode="Ø" horiz-adv-x="1593" d="M66 26l175 180q-82 107 -121.5 240.5t-39.5 280.5q0 304 156 520q190 263 545 263q177 0 300.5 -44.5t205.5 -121.5l154 165l64 -61l-157 -173q57 -70 104 -177q60 -147 60 -338q0 -364 -205 -586q-200 -217 -513 -217q-187 0 -324 63q-87 40 -169 117l-169 -173z M286 714q0 -95 20 -191t73 -175l775 846q-67 59 -124 87q-103 51 -235 51q-225 0 -367 -157.5t-142 -460.5zM438 279q67 -70 149 -107t225 -37q268 0 399 224q97 166 97 398q0 130 -38 239q-21 59 -62 129z" />
|
||||
<glyph unicode="Ù" horiz-adv-x="1479" d="M170 644v825h202v-908q0 -160 60 -266q89 -160 300 -160q253 0 344 173q49 94 49 253v908h202v-825q0 -271 -73 -417q-134 -266 -506 -266t-505 266q-73 146 -73 417zM474 1874h223l182 -289h-137zM749 1469z" />
|
||||
<glyph unicode="Ú" horiz-adv-x="1479" d="M170 644v825h202v-908q0 -160 60 -266q89 -160 300 -160q253 0 344 173q49 94 49 253v908h202v-825q0 -271 -73 -417q-134 -266 -506 -266t-505 266q-73 146 -73 417zM569 1585l183 289h222l-267 -289h-138zM749 1469z" />
|
||||
<glyph unicode="Û" horiz-adv-x="1479" d="M170 644v825h202v-908q0 -160 60 -266q89 -160 300 -160q253 0 344 173q49 94 49 253v908h202v-825q0 -271 -73 -417q-134 -266 -506 -266t-505 266q-73 146 -73 417zM466 1585l203 289h190l204 -289h-164l-135 192l-135 -192h-163zM749 1469z" />
|
||||
<glyph unicode="Ü" horiz-adv-x="1479" d="M170 644v825h202v-908q0 -160 60 -266q89 -160 300 -160q253 0 344 173q49 94 49 253v908h202v-825q0 -271 -73 -417q-134 -266 -506 -266t-505 266q-73 146 -73 417zM513 1609v208h187v-208h-187zM749 1469zM843 1609v208h187v-208h-187z" />
|
||||
<glyph unicode="Ý" horiz-adv-x="1366" d="M42 1469h232l422 -706l422 706h233l-555 -877v-592h-199v592zM509 1585l183 289h222l-267 -289h-138zM699 1469z" />
|
||||
<glyph unicode="Þ" horiz-adv-x="1366" d="M128 0v1467h194v-234h456q227 0 337.5 -116.5t110.5 -307.5q0 -168 -118.5 -294t-336.5 -126h-449v-389h-194zM322 564h390q128 1 192 34q117 58 117 222q0 69 -33 129q-62 111 -212 111h-454v-496z" />
|
||||
<glyph unicode="ß" horiz-adv-x="1251" d="M199 0v1024q0 286 153 397q102 70 254 70q207 0 318 -100.5t111 -265.5q0 -116 -46 -192t-120 -113q91 -23 153 -99q84 -96 84 -270q0 -198 -112.5 -339t-318.5 -141q-48 0 -71.5 2t-58.5 8v156q24 -3 44 -5t45 -2q108 0 196.5 68t88.5 242q0 169 -114 241 q-71 44 -166 44q-17 0 -39.5 -2t-45.5 -5v161q18 -3 27.5 -4t20.5 -1q145 0 200.5 73.5t55.5 154.5q0 102 -60.5 167t-180.5 65q-155 0 -208 -112q-30 -63 -30 -198v-1024h-180z" />
|
||||
<glyph unicode="à" d="M82 281q0 149 93 231t244 101l287 36q62 8 83 52q12 24 12 69q0 92 -65.5 133.5t-187.5 41.5q-141 0 -200 -76q-33 -42 -43 -125h-168q5 198 128.5 275.5t286.5 77.5q189 0 307 -72q117 -72 117 -224v-617q0 -28 11.5 -45t48.5 -17q12 0 27 1.5t32 4.5v-133 q-42 -12 -64 -15t-60 -3q-93 0 -135 66q-22 35 -31 99q-55 -72 -158 -125t-227 -53q-149 0 -243.5 90.5t-94.5 226.5zM270 285q0 -78 57 -123t135 -45q95 0 184 44q150 73 150 239v145q-33 -21 -85 -35t-102 -20l-109 -14q-98 -13 -147 -41q-83 -47 -83 -150zM282 1502h223 l182 -289h-137zM557 1097z" />
|
||||
<glyph unicode="á" d="M82 281q0 149 93 231t244 101l287 36q62 8 83 52q12 24 12 69q0 92 -65.5 133.5t-187.5 41.5q-141 0 -200 -76q-33 -42 -43 -125h-168q5 198 128.5 275.5t286.5 77.5q189 0 307 -72q117 -72 117 -224v-617q0 -28 11.5 -45t48.5 -17q12 0 27 1.5t32 4.5v-133 q-42 -12 -64 -15t-60 -3q-93 0 -135 66q-22 35 -31 99q-55 -72 -158 -125t-227 -53q-149 0 -243.5 90.5t-94.5 226.5zM270 285q0 -78 57 -123t135 -45q95 0 184 44q150 73 150 239v145q-33 -21 -85 -35t-102 -20l-109 -14q-98 -13 -147 -41q-83 -47 -83 -150zM377 1213 l183 289h222l-267 -289h-138zM557 1097z" />
|
||||
<glyph unicode="â" d="M82 281q0 149 93 231t244 101l287 36q62 8 83 52q12 24 12 69q0 92 -65.5 133.5t-187.5 41.5q-141 0 -200 -76q-33 -42 -43 -125h-168q5 198 128.5 275.5t286.5 77.5q189 0 307 -72q117 -72 117 -224v-617q0 -28 11.5 -45t48.5 -17q12 0 27 1.5t32 4.5v-133 q-42 -12 -64 -15t-60 -3q-93 0 -135 66q-22 35 -31 99q-55 -72 -158 -125t-227 -53q-149 0 -243.5 90.5t-94.5 226.5zM270 285q0 -78 57 -123t135 -45q95 0 184 44q150 73 150 239v145q-33 -21 -85 -35t-102 -20l-109 -14q-98 -13 -147 -41q-83 -47 -83 -150zM284 1213 l203 289h190l204 -289h-164l-135 192l-135 -192h-163zM557 1097z" />
|
||||
<glyph unicode="ã" d="M82 281q0 149 93 231t244 101l287 36q62 8 83 52q12 24 12 69q0 92 -65.5 133.5t-187.5 41.5q-141 0 -200 -76q-33 -42 -43 -125h-168q5 198 128.5 275.5t286.5 77.5q189 0 307 -72q117 -72 117 -224v-617q0 -28 11.5 -45t48.5 -17q12 0 27 1.5t32 4.5v-133 q-42 -12 -64 -15t-60 -3q-93 0 -135 66q-22 35 -31 99q-55 -72 -158 -125t-227 -53q-149 0 -243.5 90.5t-94.5 226.5zM234 1232q13 79 43 129q57 92 169 92q34 0 75.5 -10t111.5 -40q28 -12 51 -19t47 -7q56 0 80 35q13 19 18 57h105q-21 -127 -80.5 -175t-130.5 -48 q-22 0 -56 8t-60 18l-53 19q-47 17 -76.5 25.5t-57.5 8.5q-35 0 -57.5 -23t-30.5 -70h-98zM270 285q0 -78 57 -123t135 -45q95 0 184 44q150 73 150 239v145q-33 -21 -85 -35t-102 -20l-109 -14q-98 -13 -147 -41q-83 -47 -83 -150zM557 1097z" />
|
||||
<glyph unicode="ä" d="M82 281q0 149 93 231t244 101l287 36q62 8 83 52q12 24 12 69q0 92 -65.5 133.5t-187.5 41.5q-141 0 -200 -76q-33 -42 -43 -125h-168q5 198 128.5 275.5t286.5 77.5q189 0 307 -72q117 -72 117 -224v-617q0 -28 11.5 -45t48.5 -17q12 0 27 1.5t32 4.5v-133 q-42 -12 -64 -15t-60 -3q-93 0 -135 66q-22 35 -31 99q-55 -72 -158 -125t-227 -53q-149 0 -243.5 90.5t-94.5 226.5zM270 285q0 -78 57 -123t135 -45q95 0 184 44q150 73 150 239v145q-33 -21 -85 -35t-102 -20l-109 -14q-98 -13 -147 -41q-83 -47 -83 -150zM321 1237v208 h187v-208h-187zM557 1097zM651 1237v208h187v-208h-187z" />
|
||||
<glyph unicode="å" d="M82 281q0 149 93 231t244 101l287 36q62 8 83 52q12 24 12 69q0 92 -65.5 133.5t-187.5 41.5q-141 0 -200 -76q-33 -42 -43 -125h-168q5 198 128.5 275.5t286.5 77.5q189 0 307 -72q117 -72 117 -224v-617q0 -28 11.5 -45t48.5 -17q12 0 27 1.5t32 4.5v-133 q-42 -12 -64 -15t-60 -3q-93 0 -135 66q-22 35 -31 99q-55 -72 -158 -125t-227 -53q-149 0 -243.5 90.5t-94.5 226.5zM270 285q0 -78 57 -123t135 -45q95 0 184 44q150 73 150 239v145q-33 -21 -85 -35t-102 -20l-109 -14q-98 -13 -147 -41q-83 -47 -83 -150zM373 1417 q0 86 61 147.5t147 61.5t147.5 -61.5t61.5 -147.5t-61.5 -147.5t-147.5 -61.5t-147 61.5t-61 147.5zM456 1417q0 -52 37 -89t88 -37q52 0 89 37t37 89t-37 89t-89 37q-51 0 -88 -37t-37 -89zM557 1097z" />
|
||||
<glyph unicode="æ" horiz-adv-x="1821" d="M73 272q0 178 121 266q77 56 206 73l285 38q51 7 76 36t25 82q0 86 -56 131t-179 45q-100 0 -160 -32q-100 -59 -100 -170h-173q10 226 177 309q96 47 264 47q133 0 228 -49q80 -43 122 -112q59 77 147.5 119t199.5 42q117 0 216 -41.5t165 -138.5q59 -80 78.5 -184.5 t19.5 -254.5h-787q5 -166 82 -263t216 -97q130 0 198 57t94 161h182q-9 -80 -67 -164.5t-122 -126.5q-70 -46 -142.5 -63.5t-149.5 -17.5q-147 0 -260 76q-104 77 -133 152q-82 -121 -186.5 -174.5t-226.5 -53.5q-172 0 -266 86t-94 222zM257 287q0 -84 63.5 -129t149.5 -45 q49 0 114 25t120 77q49 46 64 94q9 30 14 101v135q-25 -17 -49 -26.5t-85 -19.5l-153 -23q-111 -18 -159 -45q-79 -46 -79 -144zM950 621h593q-3 157 -86.5 237.5t-203.5 80.5t-207 -80.5t-96 -237.5z" />
|
||||
<glyph unicode="ç" horiz-adv-x="1024" d="M59 506q0 282 137 439t349 157q181 0 294.5 -88t136.5 -303h-175q-16 99 -73 164.5t-183 65.5q-172 0 -246 -168q-48 -109 -48 -269q0 -161 68 -271t214 -110q112 0 177.5 68.5t90.5 187.5h175q-30 -213 -150 -311.5t-279 -98.5l-71 -97q29 9 75 9q70 0 115.5 -40.5 t45.5 -115.5q0 -76 -60 -131t-184 -55q-53 0 -110 15q-32 8 -86 28l35 81q38 -14 59 -20q41 -11 74 -11q37 0 64 11q52 21 52 76q0 32 -26.5 55.5t-70.5 23.5q-22 0 -39.5 -4t-41.5 -13l-35 41l108 147q-142 0 -248 114q-144 163 -144 423z" />
|
||||
<glyph unicode="è" d="M72 515q0 258 140 419t366 161q114 0 221 -53.5t163 -138.5q54 -81 72 -189q16 -74 16 -236h-785q5 -163 77 -261.5t223 -98.5q141 0 225 93q48 54 68 125h177q-7 -59 -46.5 -131.5t-88.5 -118.5q-82 -80 -203 -108q-65 -16 -147 -16q-200 0 -339 145.5t-139 407.5z M270 621h595q-11 117 -51 187q-74 130 -247 130q-124 0 -208 -89.5t-89 -227.5zM286 1502h223l182 -289h-137zM561 1097z" />
|
||||
<glyph unicode="é" d="M72 515q0 258 140 419t366 161q114 0 221 -53.5t163 -138.5q54 -81 72 -189q16 -74 16 -236h-785q5 -163 77 -261.5t223 -98.5q141 0 225 93q48 54 68 125h177q-7 -59 -46.5 -131.5t-88.5 -118.5q-82 -80 -203 -108q-65 -16 -147 -16q-200 0 -339 145.5t-139 407.5z M270 621h595q-11 117 -51 187q-74 130 -247 130q-124 0 -208 -89.5t-89 -227.5zM381 1213l183 289h222l-267 -289h-138zM561 1097z" />
|
||||
<glyph unicode="ê" d="M72 515q0 258 140 419t366 161q114 0 221 -53.5t163 -138.5q54 -81 72 -189q16 -74 16 -236h-785q5 -163 77 -261.5t223 -98.5q141 0 225 93q48 54 68 125h177q-7 -59 -46.5 -131.5t-88.5 -118.5q-82 -80 -203 -108q-65 -16 -147 -16q-200 0 -339 145.5t-139 407.5z M270 621h595q-11 117 -51 187q-74 130 -247 130q-124 0 -208 -89.5t-89 -227.5zM288 1213l203 289h190l204 -289h-164l-135 192l-135 -192h-163zM561 1097z" />
|
||||
<glyph unicode="ë" d="M72 515q0 258 140 419t366 161q114 0 221 -53.5t163 -138.5q54 -81 72 -189q16 -74 16 -236h-785q5 -163 77 -261.5t223 -98.5q141 0 225 93q48 54 68 125h177q-7 -59 -46.5 -131.5t-88.5 -118.5q-82 -80 -203 -108q-65 -16 -147 -16q-200 0 -339 145.5t-139 407.5z M270 621h595q-11 117 -51 187q-74 130 -247 130q-124 0 -208 -89.5t-89 -227.5zM325 1237v208h187v-208h-187zM561 1097zM655 1237v208h187v-208h-187z" />
|
||||
<glyph unicode="ì" horiz-adv-x="569" d="M8 1502h223l182 -289h-137zM189 0v1066h183v-1066h-183zM281 1097z" />
|
||||
<glyph unicode="í" horiz-adv-x="569" d="M103 1213l183 289h222l-267 -289h-138zM189 0v1066h183v-1066h-183zM281 1097z" />
|
||||
<glyph unicode="î" horiz-adv-x="569" d="M0 1213l203 289h190l204 -289h-164l-135 192l-135 -192h-163zM189 0v1066h183v-1066h-183zM281 1097z" />
|
||||
<glyph unicode="ï" horiz-adv-x="569" d="M37 1237v208h187v-208h-187zM189 0v1066h183v-1066h-183zM281 1097zM367 1237v208h187v-208h-187z" />
|
||||
<glyph unicode="ð" d="M61 525q0 263 133 407t330 144q73 0 120 -13q44 -12 83 -37q-58 89 -112 146t-165 160l-161 -112l-79 67l164 116l-149 123l132 97q43 -33 75 -58.5t84 -69.5l150 105l75 -67l-151 -107q230 -217 339 -400q132 -224 132 -470q0 -248 -133 -420.5t-383 -172.5 q-237 0 -360.5 158t-123.5 404zM253 540q0 -153 40 -246q74 -174 278 -174q123 0 210.5 111t87.5 319q0 177 -76 286.5t-237 109.5q-130 0 -216.5 -107t-86.5 -299z" />
|
||||
<glyph unicode="ñ" d="M132 0v1071h171v-152q76 94 161 135t189 41q228 0 308 -159q44 -87 44 -249v-687h-183v675q0 98 -29 158q-48 100 -174 100q-64 0 -105 -13q-74 -22 -130 -88q-45 -53 -58.5 -109.5t-13.5 -161.5v-561h-180zM262 1232q13 79 43 129q57 92 169 92q34 0 75.5 -10t111.5 -40 q28 -12 51 -19t47 -7q56 0 80 35q13 19 18 57h105q-21 -127 -80.5 -175t-130.5 -48q-22 0 -56 8t-60 18l-53 19q-47 17 -76.5 25.5t-57.5 8.5q-35 0 -57.5 -23t-30.5 -70h-98zM555 1097z" />
|
||||
<glyph unicode="ò" d="M59 512q0 270 137 430t368 160q207 0 350 -138t143 -406q0 -259 -126 -428t-391 -169q-221 0 -351 149.5t-130 401.5zM244 515q0 -171 75 -285t238 -114q179 0 245.5 135.5t66.5 301.5q0 150 -48 244q-76 148 -262 148q-165 0 -240 -126t-75 -304zM273 1502h223l182 -289 h-137zM558 1097z" />
|
||||
<glyph unicode="ó" d="M59 512q0 270 137 430t368 160q207 0 350 -138t143 -406q0 -259 -126 -428t-391 -169q-221 0 -351 149.5t-130 401.5zM244 515q0 -171 75 -285t238 -114q179 0 245.5 135.5t66.5 301.5q0 150 -48 244q-76 148 -262 148q-165 0 -240 -126t-75 -304zM368 1213l183 289h222 l-267 -289h-138zM558 1097z" />
|
||||
<glyph unicode="ô" d="M59 512q0 270 137 430t368 160q207 0 350 -138t143 -406q0 -259 -126 -428t-391 -169q-221 0 -351 149.5t-130 401.5zM244 515q0 -171 75 -285t238 -114q179 0 245.5 135.5t66.5 301.5q0 150 -48 244q-76 148 -262 148q-165 0 -240 -126t-75 -304zM275 1213l203 289h190 l204 -289h-164l-135 192l-135 -192h-163zM558 1097z" />
|
||||
<glyph unicode="õ" d="M59 512q0 270 137 430t368 160q207 0 350 -138t143 -406q0 -259 -126 -428t-391 -169q-221 0 -351 149.5t-130 401.5zM225 1232q13 79 43 129q57 92 169 92q34 0 75.5 -10t111.5 -40q28 -12 51 -19t47 -7q56 0 80 35q13 19 18 57h105q-21 -127 -80.5 -175t-130.5 -48 q-22 0 -56 8t-60 18l-53 19q-47 17 -76.5 25.5t-57.5 8.5q-35 0 -57.5 -23t-30.5 -70h-98zM244 515q0 -171 75 -285t238 -114q179 0 245.5 135.5t66.5 301.5q0 150 -48 244q-76 148 -262 148q-165 0 -240 -126t-75 -304zM558 1097z" />
|
||||
<glyph unicode="ö" d="M59 512q0 270 137 430t368 160q207 0 350 -138t143 -406q0 -259 -126 -428t-391 -169q-221 0 -351 149.5t-130 401.5zM244 515q0 -171 75 -285t238 -114q179 0 245.5 135.5t66.5 301.5q0 150 -48 244q-76 148 -262 148q-165 0 -240 -126t-75 -304zM312 1237v208h187v-208 h-187zM558 1097zM642 1237v208h187v-208h-187z" />
|
||||
<glyph unicode="÷" horiz-adv-x="1124" d="M92 438v168h1043v-168h-1043zM509 21v220h211v-220h-211zM509 803v221h211v-221h-211z" />
|
||||
<glyph unicode="ø" horiz-adv-x="1251" d="M92 4l128 135q-50 74 -77 166t-27 218q0 227 126.5 403.5t368.5 176.5q126 0 221 -46q56 -27 128 -88l125 142l52 -50l-128 -144q63 -92 90 -211q17 -77 17 -154q0 -258 -139 -425.5t-370 -167.5q-110 0 -196 32.5t-139 88.5l-121 -128zM298 511q0 -72 15 -138 q9 -37 30 -94l503 564q-28 43 -90 72.5t-138 29.5q-145 0 -232.5 -121.5t-87.5 -312.5zM388 213q49 -57 106 -77t116 -20q189 0 268 178q48 107 48 246q0 90 -15 155q-8 35 -27 82z" />
|
||||
<glyph unicode="ù" d="M128 343v728h184v-711q0 -82 26 -134q48 -96 179 -96q188 0 256 168q37 90 37 247v526h180v-1071h-170l2 158q-35 -61 -87 -103q-103 -84 -250 -84q-229 0 -312 153q-45 82 -45 219zM284 1502h223l182 -289h-137zM559 1097z" />
|
||||
<glyph unicode="ú" d="M128 343v728h184v-711q0 -82 26 -134q48 -96 179 -96q188 0 256 168q37 90 37 247v526h180v-1071h-170l2 158q-35 -61 -87 -103q-103 -84 -250 -84q-229 0 -312 153q-45 82 -45 219zM369 1213l183 289h222l-267 -289h-138zM559 1097z" />
|
||||
<glyph unicode="û" d="M128 343v728h184v-711q0 -82 26 -134q48 -96 179 -96q188 0 256 168q37 90 37 247v526h180v-1071h-170l2 158q-35 -61 -87 -103q-103 -84 -250 -84q-229 0 -312 153q-45 82 -45 219zM276 1213l203 289h190l204 -289h-164l-135 192l-135 -192h-163zM559 1097z" />
|
||||
<glyph unicode="ü" d="M128 343v728h184v-711q0 -82 26 -134q48 -96 179 -96q188 0 256 168q37 90 37 247v526h180v-1071h-170l2 158q-35 -61 -87 -103q-103 -84 -250 -84q-229 0 -312 153q-45 82 -45 219zM313 1237v208h187v-208h-187zM559 1097zM643 1237v208h187v-208h-187z" />
|
||||
<glyph unicode="ý" horiz-adv-x="1024" d="M21 1071h204l287 -872l289 872h199q-38 -103 -169 -470q-98 -276 -164 -450q-156 -410 -220 -500t-220 -90q-38 0 -58.5 3t-50.5 11v164q47 -13 68 -16t37 -3q50 0 73.5 16.5t39.5 40.5q5 8 36 82t45 110zM360 1209l183 289h222l-267 -289h-138zM511 1097z" />
|
||||
<glyph unicode="þ" d="M128 -437v1892h170v-545q57 76 107 111q90 62 217 62q209 0 326 -150.5t117 -391.5q0 -302 -138 -444.5t-327 -142.5q-131 0 -215 62q-46 34 -82 93v-546h-175zM298 540q0 -171 37 -262q66 -167 255 -167q133 0 211 108.5t78 302.5q0 134 -36 225q-69 175 -254 175 q-113 0 -202 -92.5t-89 -289.5z" />
|
||||
<glyph unicode="ÿ" horiz-adv-x="1024" d="M21 1071h204l287 -872l289 872h199q-38 -103 -169 -470q-98 -276 -164 -450q-156 -410 -220 -500t-220 -90q-38 0 -58.5 3t-50.5 11v164q47 -13 68 -16t37 -3q50 0 73.5 16.5t39.5 40.5q5 8 36 82t45 110zM265 1237v208h187v-208h-187zM511 1097zM595 1237v208h187v-208 h-187z" />
|
||||
<glyph unicode="Œ" horiz-adv-x="2048" d="M73 720q0 295 125 505q164 277 502 277q128 0 222.5 -48.5t148.5 -133.5v149h901v-175h-711v-451h677v-170h-677v-498h715v-175h-907v154q-45 -79 -146 -133.5t-266 -54.5q-222 0 -404 189q-180 208 -180 565zM274 713q0 -255 106 -420t336 -165q126 0 234.5 83 t108.5 279v517q0 154 -101 243t-250 89q-255 0 -364 -242q-70 -157 -70 -384z" />
|
||||
<glyph unicode="œ" horiz-adv-x="1933" d="M71 523q0 247 133 411.5t374 164.5q169 0 280 -81q62 -45 116 -130q64 99 167 154t232 55q119 0 215.5 -48.5t162.5 -143.5q61 -87 81 -203q12 -71 14 -224h-794q5 -132 46 -213q76 -154 269 -154q135 0 214 91q44 49 73 134h180q-42 -177 -169.5 -278t-301.5 -101 q-118 0 -221.5 47t-186.5 171q-70 -122 -174 -169t-217 -47q-208 0 -350.5 142.5t-142.5 421.5zM256 512q0 -184 89.5 -291.5t230.5 -107.5q113 0 210.5 95t97.5 341q0 197 -88 295.5t-224 98.5q-134 0 -225 -106t-91 -325zM1054 616h605q-8 116 -49 188q-75 134 -253 134 q-89 0 -165 -53q-118 -83 -138 -269z" />
|
||||
<glyph unicode="Ÿ" horiz-adv-x="1366" d="M42 1469h232l422 -706l422 706h233l-555 -877v-592h-199v592zM453 1609v208h187v-208h-187zM699 1469zM783 1609v208h187v-208h-187z" />
|
||||
<glyph unicode="ˆ" horiz-adv-x="682" d="M42 1213l203 289h190l204 -289h-164l-135 192l-135 -192h-163z" />
|
||||
<glyph unicode="˜" horiz-adv-x="682" d="M-9 1232q13 79 43 129q57 92 169 92q34 0 75.5 -10t111.5 -40q28 -12 51 -19t47 -7q56 0 80 35q13 19 18 57h105q-21 -127 -80.5 -175t-130.5 -48q-22 0 -56 8t-60 18l-53 19q-47 17 -76.5 25.5t-57.5 8.5q-35 0 -57.5 -23t-30.5 -70h-98z" />
|
||||
<glyph unicode=" " horiz-adv-x="973" />
|
||||
<glyph unicode=" " horiz-adv-x="1946" />
|
||||
<glyph unicode=" " horiz-adv-x="973" />
|
||||
<glyph unicode=" " horiz-adv-x="1946" />
|
||||
<glyph unicode=" " horiz-adv-x="648" />
|
||||
<glyph unicode=" " horiz-adv-x="486" />
|
||||
<glyph unicode=" " horiz-adv-x="324" />
|
||||
<glyph unicode=" " horiz-adv-x="324" />
|
||||
<glyph unicode=" " horiz-adv-x="243" />
|
||||
<glyph unicode=" " horiz-adv-x="389" />
|
||||
<glyph unicode=" " horiz-adv-x="108" />
|
||||
<glyph unicode="‐" horiz-adv-x="682" d="M85 478v185h502v-185h-502z" />
|
||||
<glyph unicode="‑" horiz-adv-x="682" d="M85 478v185h502v-185h-502z" />
|
||||
<glyph unicode="‒" horiz-adv-x="682" d="M85 478v185h502v-185h-502z" />
|
||||
<glyph unicode="–" d="M-5 493v147h1147v-147h-1147z" />
|
||||
<glyph unicode="—" horiz-adv-x="2048" d="M241 493v147h1565v-147h-1565z" />
|
||||
<glyph unicode="‘" horiz-adv-x="455" d="M132 962v201q0 119 50 212.5t164 107.5v-94q-55 -9 -83.5 -62t-28.5 -123q0 -6 0.5 -11.5t2.5 -12.5h109v-218h-214z" />
|
||||
<glyph unicode="’" horiz-adv-x="455" d="M170 948v94q55 9 83.5 62t28.5 122q0 7 -0.5 12.5t-2.5 12.5h-109v218h214v-201q0 -128 -53 -217.5t-161 -102.5z" />
|
||||
<glyph unicode="‚" horiz-adv-x="455" d="M170 0v218h214v-202q0 -119 -48 -209t-166 -111v95q69 12 97 97q15 45 15 87q0 7 -0.5 12.5t-2.5 12.5h-109z" />
|
||||
<glyph unicode="“" horiz-adv-x="682" d="M78 962v201q0 148 59 228t154 92v-94q-69 -13 -97 -100q-14 -43 -14 -85q0 -5 0.5 -8.5t1.5 -15.5h109v-218h-213zM414 962v201q0 119 50 212.5t164 107.5v-94q-55 -9 -83.5 -62t-28.5 -122q0 -6 0.5 -12t2.5 -13h109v-218h-214z" />
|
||||
<glyph unicode="”" horiz-adv-x="682" d="M78 948v94q75 14 100 110q14 57 9 99h-109v218h213v-201q0 -119 -49 -211.5t-164 -108.5zM414 948v94q75 14 99 110q14 57 10 99h-109v218h214v-201q0 -119 -49 -212.5t-165 -107.5z" />
|
||||
<glyph unicode="„" horiz-adv-x="682" d="M78 0v218h213v-202q0 -115 -44.5 -206t-168.5 -114v95q61 12 89 72.5t20 136.5h-109zM414 0v218h214v-202q0 -116 -46.5 -207t-167.5 -113v95q69 12 97 97q15 45 15 87q0 7 -0.5 12.5t-2.5 12.5h-109z" />
|
||||
<glyph unicode="•" horiz-adv-x="717" d="M149 734q0 96 62.5 158t158.5 62t158.5 -62t62.5 -158t-62.5 -159t-158.5 -63t-158.5 63t-62.5 159z" />
|
||||
<glyph unicode="…" horiz-adv-x="2048" d="M237 0v220h208v-220h-208zM919 0v220h209v-220h-209zM1602 0v220h208v-220h-208z" />
|
||||
<glyph unicode=" " horiz-adv-x="389" />
|
||||
<glyph unicode="‹" horiz-adv-x="682" d="M180 464v190l322 251v-180l-216 -166l216 -166v-180z" />
|
||||
<glyph unicode="›" horiz-adv-x="682" d="M170 213v180l216 166l-216 166v180l323 -251v-190z" />
|
||||
<glyph unicode=" " horiz-adv-x="486" />
|
||||
<glyph unicode="€" horiz-adv-x="1524" d="M96 524l42 142h196q-2 41 -2 84q0 37 2 74h-238l42 142h212q34 183 127 317q156 226 431 226q234 0 363.5 -147t143.5 -334h-163q-27 142 -110 225t-232 83q-183 0 -295 -153q-62 -84 -89 -217h558l-42 -142h-536q-3 -51 -3 -108q0 -26 1 -50h580l-42 -142h-523 q24 -131 85 -227q101 -160 302 -160q185 0 282 169q51 89 76 234h163q-22 -232 -145 -389q-147 -189 -396 -189q-215 0 -361 155q-138 146 -177 407h-252z" />
|
||||
<glyph unicode="™" horiz-adv-x="2048" d="M237 1348v121h618v-121h-237v-604h-144v604h-237zM978 744v725h207l185 -519l187 519h206v-725h-133v585l-201 -585h-116l-202 585v-585h-133z" />
|
||||
<hkern u1=" " u2="Y" k="36" />
|
||||
<hkern u1=" " u2="T" k="36" />
|
||||
<hkern u1=" " u2="A" k="112" />
|
||||
<hkern u1="1" u2="1" k="151" />
|
||||
<hkern u1="A" u2="’" k="151" />
|
||||
<hkern u1="A" u2="y" k="36" />
|
||||
<hkern u1="A" u2="w" k="36" />
|
||||
<hkern u1="A" u2="v" k="36" />
|
||||
<hkern u1="A" u2="Y" k="151" />
|
||||
<hkern u1="A" u2="W" k="75" />
|
||||
<hkern u1="A" u2="V" k="151" />
|
||||
<hkern u1="A" u2="T" k="151" />
|
||||
<hkern u1="A" u2=" " k="112" />
|
||||
<hkern u1="F" u2="A" k="112" />
|
||||
<hkern u1="F" u2="." k="227" />
|
||||
<hkern u1="F" u2="," k="227" />
|
||||
<hkern u1="L" u2="’" k="112" />
|
||||
<hkern u1="L" u2="y" k="75" />
|
||||
<hkern u1="L" u2="Y" k="151" />
|
||||
<hkern u1="L" u2="W" k="151" />
|
||||
<hkern u1="L" u2="V" k="151" />
|
||||
<hkern u1="L" u2="T" k="151" />
|
||||
<hkern u1="L" u2=" " k="75" />
|
||||
<hkern u1="P" u2="A" k="151" />
|
||||
<hkern u1="P" u2="." k="264" />
|
||||
<hkern u1="P" u2="," k="264" />
|
||||
<hkern u1="P" u2=" " k="36" />
|
||||
<hkern u1="R" u2="Y" k="36" />
|
||||
<hkern u1="R" u2="W" k="36" />
|
||||
<hkern u1="R" u2="V" k="36" />
|
||||
<hkern u1="R" u2="T" k="36" />
|
||||
<hkern u1="T" u2="y" k="112" />
|
||||
<hkern u1="T" u2="w" k="112" />
|
||||
<hkern u1="T" u2="u" k="75" />
|
||||
<hkern u1="T" u2="s" k="227" />
|
||||
<hkern u1="T" u2="r" k="75" />
|
||||
<hkern u1="T" u2="o" k="227" />
|
||||
<hkern u1="T" u2="i" k="75" />
|
||||
<hkern u1="T" u2="e" k="227" />
|
||||
<hkern u1="T" u2="c" k="227" />
|
||||
<hkern u1="T" u2="a" k="227" />
|
||||
<hkern u1="T" u2="O" k="36" />
|
||||
<hkern u1="T" u2="A" k="151" />
|
||||
<hkern u1="T" u2=";" k="227" />
|
||||
<hkern u1="T" u2=":" k="227" />
|
||||
<hkern u1="T" u2="." k="227" />
|
||||
<hkern u1="T" u2="-" k="112" />
|
||||
<hkern u1="T" u2="," k="227" />
|
||||
<hkern u1="T" u2=" " k="36" />
|
||||
<hkern u1="V" u2="y" k="75" />
|
||||
<hkern u1="V" u2="u" k="75" />
|
||||
<hkern u1="V" u2="r" k="75" />
|
||||
<hkern u1="V" u2="o" k="112" />
|
||||
<hkern u1="V" u2="i" k="36" />
|
||||
<hkern u1="V" u2="e" k="112" />
|
||||
<hkern u1="V" u2="a" k="151" />
|
||||
<hkern u1="V" u2="A" k="151" />
|
||||
<hkern u1="V" u2=";" k="75" />
|
||||
<hkern u1="V" u2=":" k="75" />
|
||||
<hkern u1="V" u2="." k="188" />
|
||||
<hkern u1="V" u2="-" k="112" />
|
||||
<hkern u1="V" u2="," k="188" />
|
||||
<hkern u1="W" u2="y" k="18" />
|
||||
<hkern u1="W" u2="u" k="36" />
|
||||
<hkern u1="W" u2="r" k="36" />
|
||||
<hkern u1="W" u2="o" k="36" />
|
||||
<hkern u1="W" u2="e" k="36" />
|
||||
<hkern u1="W" u2="a" k="75" />
|
||||
<hkern u1="W" u2="A" k="75" />
|
||||
<hkern u1="W" u2=";" k="36" />
|
||||
<hkern u1="W" u2=":" k="36" />
|
||||
<hkern u1="W" u2="." k="112" />
|
||||
<hkern u1="W" u2="-" k="36" />
|
||||
<hkern u1="W" u2="," k="112" />
|
||||
<hkern u1="Y" u2="v" k="112" />
|
||||
<hkern u1="Y" u2="u" k="112" />
|
||||
<hkern u1="Y" u2="q" k="188" />
|
||||
<hkern u1="Y" u2="p" k="151" />
|
||||
<hkern u1="Y" u2="o" k="188" />
|
||||
<hkern u1="Y" u2="i" k="75" />
|
||||
<hkern u1="Y" u2="e" k="188" />
|
||||
<hkern u1="Y" u2="a" k="151" />
|
||||
<hkern u1="Y" u2="A" k="151" />
|
||||
<hkern u1="Y" u2=";" k="133" />
|
||||
<hkern u1="Y" u2=":" k="112" />
|
||||
<hkern u1="Y" u2="." k="264" />
|
||||
<hkern u1="Y" u2="-" k="188" />
|
||||
<hkern u1="Y" u2="," k="264" />
|
||||
<hkern u1="Y" u2=" " k="36" />
|
||||
<hkern u1="f" u2="’" k="-37" />
|
||||
<hkern u1="f" u2="f" k="36" />
|
||||
<hkern u1="r" u2="’" k="-76" />
|
||||
<hkern u1="r" u2="." k="112" />
|
||||
<hkern u1="r" u2="," k="112" />
|
||||
<hkern u1="v" u2="." k="151" />
|
||||
<hkern u1="v" u2="," k="151" />
|
||||
<hkern u1="w" u2="." k="112" />
|
||||
<hkern u1="w" u2="," k="112" />
|
||||
<hkern u1="y" u2="." k="151" />
|
||||
<hkern u1="y" u2="," k="151" />
|
||||
<hkern u1="‘" u2="‘" k="36" />
|
||||
<hkern u1="’" u2="’" k="36" />
|
||||
<hkern u1="’" u2="s" k="36" />
|
||||
<hkern u1="’" u2=" " k="75" />
|
||||
</font>
|
||||
</defs></svg>
|
After Width: | Height: | Size: 58 KiB |
BIN
app/assets/fonts/helvetica.ttf
Executable file
BIN
app/assets/fonts/helvetica.woff
Executable file
BIN
app/assets/images/alphamarker.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
app/assets/images/avatars/avatar_ghost_green.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
app/assets/images/avatars/avatar_ghost_orange.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
app/assets/images/avatars/avatar_ghost_red.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
app/assets/images/avatars/avatar_ghost_yellow.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
app/assets/images/avatars/avatar_heart_green.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
app/assets/images/avatars/avatar_heart_orange.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
app/assets/images/avatars/avatar_heart_red.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
app/assets/images/avatars/avatar_heart_yellow.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
app/assets/images/avatars/avatar_marker_green.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
app/assets/images/avatars/avatar_marker_orange.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
app/assets/images/avatars/avatar_marker_red.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
app/assets/images/avatars/avatar_marker_yellow.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
app/assets/images/avatars/avatar_mountain_green.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
app/assets/images/avatars/avatar_mountain_orange.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
app/assets/images/avatars/avatar_mountain_red.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
app/assets/images/avatars/avatar_mountain_yellow.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
app/assets/images/avatars/avatar_pacman_green.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
app/assets/images/avatars/avatar_pacman_orange.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
app/assets/images/avatars/avatar_pacman_red.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
app/assets/images/avatars/avatar_pacman_yellow.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
app/assets/images/avatars/avatar_planet_green.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
app/assets/images/avatars/avatar_planet_orange.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
app/assets/images/avatars/avatar_planet_red.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
app/assets/images/avatars/avatar_planet_yellow.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
app/assets/images/avatars/avatar_star_green.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
app/assets/images/avatars/avatar_star_orange.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
app/assets/images/avatars/avatar_star_red.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
app/assets/images/avatars/avatar_star_yellow.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
app/assets/images/avatars/mobile_app_default_avatar.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
app/assets/images/backgrounds/lockout.png
Normal file
After Width: | Height: | Size: 643 KiB |
BIN
app/assets/images/backgrounds/sessions.png
Normal file
After Width: | Height: | Size: 250 KiB |
BIN
app/assets/images/carto.png
Executable file
After Width: | Height: | Size: 985 B |
BIN
app/assets/images/google-maps-basemap-icons/gray_roadmap.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
app/assets/images/google-maps-basemap-icons/hybrid.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
app/assets/images/google-maps-basemap-icons/roadmap.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 9.8 KiB |
BIN
app/assets/images/google-maps-basemap-icons/roadmap_icy_blue.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 10 KiB |
BIN
app/assets/images/google-maps-basemap-icons/roadmap_red_hues.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 8.4 KiB |
BIN
app/assets/images/google-maps-basemap-icons/satellite.jpg
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
app/assets/images/google-maps-basemap-icons/terrain.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
app/assets/images/layout/add_feature_cursor.png
Normal file
After Width: | Height: | Size: 348 B |
BIN
app/assets/images/layout/administrative.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
app/assets/images/layout/align_center.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
app/assets/images/layout/align_left.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
app/assets/images/layout/align_right.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
app/assets/images/layout/alpha_bkg.png
Normal file
After Width: | Height: | Size: 234 B |
BIN
app/assets/images/layout/avatar_bkg.png
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
app/assets/images/layout/bkg.jpg
Normal file
After Width: | Height: | Size: 790 B |
11
app/assets/images/layout/carto-logo-darkblue.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg width="92px" height="36px" viewBox="0 0 92 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="Carto-Framework" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g transform="translate(-162.000000, -282.000000)" >
|
||||
<g transform="translate(162.000000, 282.000000)">
|
||||
<path d="M74,36 C83.9411255,36 92,27.9411255 92,18 C92,8.0588745 83.9411255,0 74,0 C64.0588745,0 56,8.0588745 56,18 C56,27.9411255 64.0588745,36 74,36 Z" id="halo" fill-opacity="0.200000018" fill="#162945"></path>
|
||||
<path d="m2.18002,12.66472l8.62353,0l0,2.38605l-5.12022,0l0,1.93914l4.37337,0l0,2.24214l-4.37337,0l0,4.53729l-3.50331,0l0,-11.10463l0,0.00001zm22.70606,9.27153l-3.97299,0l-0.54667,1.8331l-3.5649,0l4.24248,-11.10464l3.80359,0l4.24246,11.10464l-3.6496,0l-0.55437,-1.8331zm-0.73147,-2.4012l-1.24734,-3.99192l-1.23963,3.99192l2.48697,0zm10.70241,0.56054l3.3185,-0.20453c0.07188,0.53024 0.21817,0.93422 0.4389,1.21197c0.35933,0.44944 0.8726,0.67416 1.53991,0.67416c0.4979,0 0.88161,-0.11487 1.1511,-0.34465c0.26947,-0.22977 0.40423,-0.49614 0.40423,-0.79914c0,-0.28785 -0.12831,-0.54539 -0.38498,-0.77263c-0.25667,-0.22723 -0.85208,-0.44187 -1.7863,-0.64386c-1.52965,-0.33833 -2.62042,-0.78778 -3.27232,-1.34831c-0.65703,-0.56054 -0.98555,-1.27507 -0.98555,-2.14367c0,-0.57064 0.16809,-1.10971 0.50432,-1.61722c0.3362,-0.50751 0.84183,-0.90645 1.51682,-1.19681c0.675,-0.29038 1.60021,-0.43556 2.7757,-0.43556c1.44239,0 2.54213,0.26385 3.29927,0.79153c0.75713,0.5277 1.20753,1.36727 1.35125,2.51861l-3.2877,0.18937c-0.08727,-0.49993 -0.27078,-0.86353 -0.55052,-1.09077c-0.27975,-0.22724 -0.66602,-0.34086 -1.15879,-0.34086c-0.40552,0 -0.71094,0.08457 -0.91625,0.25376c-0.20534,0.16918 -0.30798,0.37497 -0.30798,0.61737c0,0.17676 0.08467,0.33581 0.25408,0.47722c0.16425,0.14645 0.55437,0.28277 1.17034,0.40904c1.52453,0.32318 2.61657,0.65017 3.27617,0.98093c0.65959,0.33075 1.13954,0.74107 1.43981,1.23091c0.30029,0.48982 0.45043,1.03772 0.45043,1.64372c0,0.71203 -0.20019,1.3685 -0.60056,1.96944c-0.40038,0.60094 -0.95988,1.05667 -1.67851,1.36726c-0.71863,0.31057 -1.62463,0.46585 -2.71796,0.46585c-1.91978,0 -3.24922,-0.3636 -3.98838,-1.09077c-0.73917,-0.72719 -1.1575,-1.6513 -1.25502,-2.77237l0,0.00002l-0.00001,-0.00001zm16.46169,-7.43087l10.60232,0l0,2.74207l-3.55719,0l0,8.36256l-3.4879,0l0,-8.36256l-3.55722,0l0,-2.74207l0,0l-0.00002,0l0.00001,0z" id="logotype" fill="#162945"></path>
|
||||
<ellipse id="svg_3" ry="5.8843" rx="5.98124" cy="17.88506" cx="74.14399" stroke="null" fill="#162945"></ellipse>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
11
app/assets/images/layout/carto-logo-grey.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg width="92px" height="36px" viewBox="0 0 92 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g transform="translate(-162.000000, -282.000000)" fill="#B1B8C1">
|
||||
<g transform="translate(162.000000, 282.000000)">
|
||||
<path d="M74,36 C83.9411255,36 92,27.9411255 92,18 C92,8.0588745 83.9411255,0 74,0 C64.0588745,0 56,8.0588745 56,18 C56,27.9411255 64.0588745,36 74,36 Z" id="halo" fill-opacity="0.200000018"></path>
|
||||
<path d="m2.18002,12.66472l8.62353,0l0,2.38605l-5.12022,0l0,1.93914l4.37337,0l0,2.24214l-4.37337,0l0,4.53729l-3.50331,0l0,-11.10463l0,0.00001zm22.70606,9.27153l-3.97299,0l-0.54667,1.8331l-3.5649,0l4.24248,-11.10464l3.80359,0l4.24246,11.10464l-3.6496,0l-0.55437,-1.8331zm-0.73147,-2.4012l-1.24734,-3.99192l-1.23963,3.99192l2.48697,0zm10.70241,0.56054l3.3185,-0.20453c0.07188,0.53024 0.21817,0.93422 0.4389,1.21197c0.35933,0.44944 0.8726,0.67416 1.53991,0.67416c0.4979,0 0.88161,-0.11487 1.1511,-0.34465c0.26947,-0.22977 0.40423,-0.49614 0.40423,-0.79914c0,-0.28785 -0.12831,-0.54539 -0.38498,-0.77263c-0.25667,-0.22723 -0.85208,-0.44187 -1.7863,-0.64386c-1.52965,-0.33833 -2.62042,-0.78778 -3.27232,-1.34831c-0.65703,-0.56054 -0.98555,-1.27507 -0.98555,-2.14367c0,-0.57064 0.16809,-1.10971 0.50432,-1.61722c0.3362,-0.50751 0.84183,-0.90645 1.51682,-1.19681c0.675,-0.29038 1.60021,-0.43556 2.7757,-0.43556c1.44239,0 2.54213,0.26385 3.29927,0.79153c0.75713,0.5277 1.20753,1.36727 1.35125,2.51861l-3.2877,0.18937c-0.08727,-0.49993 -0.27078,-0.86353 -0.55052,-1.09077c-0.27975,-0.22724 -0.66602,-0.34086 -1.15879,-0.34086c-0.40552,0 -0.71094,0.08457 -0.91625,0.25376c-0.20534,0.16918 -0.30798,0.37497 -0.30798,0.61737c0,0.17676 0.08467,0.33581 0.25408,0.47722c0.16425,0.14645 0.55437,0.28277 1.17034,0.40904c1.52453,0.32318 2.61657,0.65017 3.27617,0.98093c0.65959,0.33075 1.13954,0.74107 1.43981,1.23091c0.30029,0.48982 0.45043,1.03772 0.45043,1.64372c0,0.71203 -0.20019,1.3685 -0.60056,1.96944c-0.40038,0.60094 -0.95988,1.05667 -1.67851,1.36726c-0.71863,0.31057 -1.62463,0.46585 -2.71796,0.46585c-1.91978,0 -3.24922,-0.3636 -3.98838,-1.09077c-0.73917,-0.72719 -1.1575,-1.6513 -1.25502,-2.77237l0,0.00002l-0.00001,-0.00001zm16.46169,-7.43087l10.60232,0l0,2.74207l-3.55719,0l0,8.36256l-3.4879,0l0,-8.36256l-3.55722,0l0,-2.74207l0,0l-0.00002,0l0.00001,0z" id="logotype"></path>
|
||||
<ellipse id="svg_3" ry="5.8843" rx="5.98124" cy="17.88506" cx="74.14399" stroke="null"></ellipse>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
11
app/assets/images/layout/carto-logo.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg width="92px" height="36px" viewBox="0 0 92 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g transform="translate(-162.000000, -282.000000)" fill="#FFFFFF">
|
||||
<g transform="translate(162.000000, 282.000000)">
|
||||
<path d="M74,36 C83.9411255,36 92,27.9411255 92,18 C92,8.0588745 83.9411255,0 74,0 C64.0588745,0 56,8.0588745 56,18 C56,27.9411255 64.0588745,36 74,36 Z" id="halo" fill-opacity="0.200000018"></path>
|
||||
<path d="m2.18002,12.66472l8.62353,0l0,2.38605l-5.12022,0l0,1.93914l4.37337,0l0,2.24214l-4.37337,0l0,4.53729l-3.50331,0l0,-11.10463l0,0.00001zm22.70606,9.27153l-3.97299,0l-0.54667,1.8331l-3.5649,0l4.24248,-11.10464l3.80359,0l4.24246,11.10464l-3.6496,0l-0.55437,-1.8331zm-0.73147,-2.4012l-1.24734,-3.99192l-1.23963,3.99192l2.48697,0zm10.70241,0.56054l3.3185,-0.20453c0.07188,0.53024 0.21817,0.93422 0.4389,1.21197c0.35933,0.44944 0.8726,0.67416 1.53991,0.67416c0.4979,0 0.88161,-0.11487 1.1511,-0.34465c0.26947,-0.22977 0.40423,-0.49614 0.40423,-0.79914c0,-0.28785 -0.12831,-0.54539 -0.38498,-0.77263c-0.25667,-0.22723 -0.85208,-0.44187 -1.7863,-0.64386c-1.52965,-0.33833 -2.62042,-0.78778 -3.27232,-1.34831c-0.65703,-0.56054 -0.98555,-1.27507 -0.98555,-2.14367c0,-0.57064 0.16809,-1.10971 0.50432,-1.61722c0.3362,-0.50751 0.84183,-0.90645 1.51682,-1.19681c0.675,-0.29038 1.60021,-0.43556 2.7757,-0.43556c1.44239,0 2.54213,0.26385 3.29927,0.79153c0.75713,0.5277 1.20753,1.36727 1.35125,2.51861l-3.2877,0.18937c-0.08727,-0.49993 -0.27078,-0.86353 -0.55052,-1.09077c-0.27975,-0.22724 -0.66602,-0.34086 -1.15879,-0.34086c-0.40552,0 -0.71094,0.08457 -0.91625,0.25376c-0.20534,0.16918 -0.30798,0.37497 -0.30798,0.61737c0,0.17676 0.08467,0.33581 0.25408,0.47722c0.16425,0.14645 0.55437,0.28277 1.17034,0.40904c1.52453,0.32318 2.61657,0.65017 3.27617,0.98093c0.65959,0.33075 1.13954,0.74107 1.43981,1.23091c0.30029,0.48982 0.45043,1.03772 0.45043,1.64372c0,0.71203 -0.20019,1.3685 -0.60056,1.96944c-0.40038,0.60094 -0.95988,1.05667 -1.67851,1.36726c-0.71863,0.31057 -1.62463,0.46585 -2.71796,0.46585c-1.91978,0 -3.24922,-0.3636 -3.98838,-1.09077c-0.73917,-0.72719 -1.1575,-1.6513 -1.25502,-2.77237l0,0.00002l-0.00001,-0.00001zm16.46169,-7.43087l10.60232,0l0,2.74207l-3.55719,0l0,8.36256l-3.4879,0l0,-8.36256l-3.55722,0l0,-2.74207l0,0l-0.00002,0l0.00001,0z" id="logotype"></path>
|
||||
<ellipse id="svg_3" ry="5.8843" rx="5.98124" cy="17.88506" cx="74.14399" stroke="null"></ellipse>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
32
app/assets/images/layout/carto-spinner.svg
Normal file
@ -0,0 +1,32 @@
|
||||
<svg width="92px" height="36px" viewBox="0 0 92 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<style>
|
||||
/* <![CDATA[ */
|
||||
#Halo {
|
||||
animation: pound 2s infinite;
|
||||
transform-origin: center;
|
||||
}
|
||||
@keyframes pound {
|
||||
from {
|
||||
transform: none;
|
||||
opacity: 0.20
|
||||
}
|
||||
50% {
|
||||
transform: scale(0.7);
|
||||
opacity: 0.05
|
||||
}
|
||||
to {
|
||||
transform: none;
|
||||
opacity: 0.20
|
||||
}
|
||||
}
|
||||
/* ]]> */
|
||||
</style>
|
||||
<g id="New" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="00---01-Sign-Up" transform="translate(-674.000000, -352.000000)" fill="#FFFFFF">
|
||||
<g id="Logo" transform="translate(674.000000, 352.000000)">
|
||||
<path d="M74,36 C83.9411255,36 92,27.9411255 92,18 C92,8.0588745 83.9411255,0 74,0 C64.0588745,0 56,8.0588745 56,18 C56,27.9411255 64.0588745,36 74,36 Z" id="Halo" opacity="0.199999988"></path>
|
||||
<path d="M6.25280899,23.981602 C8.76747566,23.981602 10.220757,22.882802 11.2984713,21.390402 L8.9144367,19.684802 C8.22861851,20.521202 7.52647133,21.078802 6.33445401,21.078802 C4.73421159,21.078802 3.60751029,19.734002 3.60751029,18.012002 L3.60751029,17.979202 C3.60751029,16.306402 4.73421159,14.928802 6.33445401,14.928802 C7.4284973,14.928802 8.1796315,15.470002 8.83279168,16.273602 L11.2168263,14.420402 C10.204428,13.026402 8.70215964,12.042402 6.36711202,12.042402 C2.9053631,12.042402 0.358038428,14.666402 0.358038428,18.012002 L0.358038428,18.044802 C0.358038428,21.472402 2.98700813,23.981602 6.25280899,23.981602 L6.25280899,23.981602 Z M16.732047,23.752002 L20.0468349,23.752002 L20.8632851,21.685602 L25.2884453,21.685602 L26.1048955,23.752002 L29.5013284,23.752002 L24.6352851,12.190002 L21.5817613,12.190002 L16.732047,23.752002 Z M21.7940384,19.209202 L23.0840297,15.962002 L24.357692,19.209202 L21.7940384,19.209202 Z M35.6697093,23.752002 L38.8375361,23.752002 L38.8375361,20.275202 L40.2418305,20.275202 L42.5442201,23.752002 L46.1855881,23.752002 L43.4586443,19.750402 C44.8792677,19.143602 45.810021,17.979202 45.810021,16.208002 L45.810021,16.175202 C45.810021,15.043602 45.4671119,14.174402 44.7976227,13.502002 C44.0301595,12.731202 42.8218132,12.272002 41.0746097,12.272002 L35.6697093,12.272002 L35.6697093,23.752002 Z M38.8375361,17.782402 L38.8375361,15.010802 L40.9276487,15.010802 C41.9727049,15.010802 42.6421941,15.470002 42.6421941,16.388402 L42.6421941,16.421202 C42.6421941,17.257602 42.005363,17.782402 40.9439777,17.782402 L38.8375361,17.782402 Z M55.2605317,23.752002 L58.4283585,23.752002 L58.4283585,15.060002 L61.8574495,15.060002 L61.8574495,12.272002 L51.8477698,12.272002 L51.8477698,15.060002 L55.2605317,15.060002 L55.2605317,23.752002 Z M74,24 C77.3137085,24 80,21.3137085 80,18 C80,14.6862915 77.3137085,12 74,12 C70.6862915,12 68,14.6862915 68,18 C68,21.3137085 70.6862915,24 74,24 Z"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
BIN
app/assets/images/layout/cartodb.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
app/assets/images/layout/cartodb20.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
app/assets/images/layout/cartodb@2x.png
Normal file
After Width: | Height: | Size: 4.5 KiB |