Initial commit

This commit is contained in:
Mac Siri 2018-02-28 16:11:08 -05:00
commit 301c6080e3
1211 changed files with 122986 additions and 0 deletions

37
.babelrc Normal file
View file

@ -0,0 +1,37 @@
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": "> 1%",
"uglify": true
},
"useBuiltIns": true
}],
"preact"
],
"env": {
"test": {
"plugins": [
"transform-es2015-modules-commonjs",
["transform-react-jsx", { "pragma":"h" }],
"transform-class-properties"
]
}
},
"plugins": [
"syntax-dynamic-import",
"transform-object-rest-spread",
["transform-class-properties",
{
"spec": true
}
],
[
"transform-react-jsx",
{
"pragma": "h"
}
]
]
}

9
.eslintrc.js Normal file
View file

@ -0,0 +1,9 @@
module.exports = {
"extends": "airbnb-base/legacy",
"env": {
"browser": true,
},
"plugins": [
"ignore-erb"
]
};

39
.gitignore vendored Normal file
View file

@ -0,0 +1,39 @@
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config.
/.bundle
# Ignore all logfiles and tempfiles.
/log/*
!/log/.keep
/tmp
.DS_Store
.swp
.approvals
.torus.json
coverage
/tags
#Ignore public uploads
/public/uploads/*
/public/c/*
/public/i/*
/public/assets/*
#Ignore node_modules
node_modules/
# Generated js bundles
/app/assets/javascripts/generated/*
latest.dump
.byebug_history
# Ignore application configuration
/config/application.yml
/public/packs
/public/packs-test
/node_modules

3
.postcssrc.yml Normal file
View file

@ -0,0 +1,3 @@
plugins:
postcss-smart-import: {}
postcss-cssnext: {}

2
.rspec Normal file
View file

@ -0,0 +1,2 @@
--color
--require spec_helper

652
.rubocop.yml Normal file
View file

@ -0,0 +1,652 @@
require: rubocop-rspec
# our custom config
RSpec/MultipleExpectations:
Max: 1
Exclude:
- "spec/features/*"
RSpec/DescribeClass:
Exclude:
- spec/features/*
- spec/requests/*
#############################
AllCops:
Exclude:
- db/schema.rb
TargetRubyVersion: 2.3.4
Naming/AccessorMethodName:
Description: Check the naming of accessor methods for get_/set_.
Enabled: false
Style/Alias:
Description: 'Use alias_method instead of alias.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method'
Enabled: false
Style/ArrayJoin:
Description: 'Use Array#join instead of Array#*.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#array-join'
Enabled: false
Style/AsciiComments:
Description: 'Use only ascii symbols in comments.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-comments'
Enabled: false
Naming/AsciiIdentifiers:
Description: 'Use only ascii symbols in identifiers.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-identifiers'
Enabled: false
Style/Attr:
Description: 'Checks for uses of Module#attr.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr'
Enabled: false
Metrics/BlockNesting:
Description: 'Avoid excessive block nesting'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count'
Enabled: false
Style/CaseEquality:
Description: 'Avoid explicit use of the case equality operator(===).'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-case-equality'
Enabled: false
Style/CharacterLiteral:
Description: 'Checks for uses of character literals.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-character-literals'
Enabled: false
Style/ClassAndModuleChildren:
Description: 'Checks style of children classes and modules.'
Enabled: true
EnforcedStyle: nested
Metrics/ClassLength:
Description: 'Avoid classes longer than 100 lines of code.'
Enabled: false
Metrics/ModuleLength:
Description: 'Avoid modules longer than 100 lines of code.'
Enabled: false
Style/ClassVars:
Description: 'Avoid the use of class variables.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-class-vars'
Enabled: false
Style/CollectionMethods:
Enabled: true
PreferredMethods:
find: detect
inject: reduce
collect: map
find_all: select
Style/ColonMethodCall:
Description: 'Do not use :: for method call.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#double-colons'
Enabled: false
Style/CommentAnnotation:
Description: >-
Checks formatting of special comments
(TODO, FIXME, OPTIMIZE, HACK, REVIEW).
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#annotate-keywords'
Enabled: false
Metrics/AbcSize:
Description: >-
A calculated magnitude based on number of assignments,
branches, and conditions.
Enabled: false
Metrics/BlockLength:
CountComments: true # count full line comments?
Max: 25
ExcludedMethods: []
Exclude:
- "spec/**/*"
Metrics/CyclomaticComplexity:
Description: >-
A complexity metric that is strongly correlated to the number
of test cases needed to validate a method.
Enabled: false
Rails/Delegate:
Description: 'Prefer delegate method for delegations.'
Enabled: false
Style/PreferredHashMethods:
Description: 'Checks use of `has_key?` and `has_value?` Hash methods.'
StyleGuide: '#hash-key'
Enabled: false
Style/Documentation:
Description: 'Document classes and non-namespace modules.'
Enabled: false
Style/DoubleNegation:
Description: 'Checks for uses of double negation (!!).'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-bang-bang'
Enabled: false
Style/EachWithObject:
Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
Enabled: false
Style/EmptyLiteral:
Description: 'Prefer literals to Array.new/Hash.new/String.new.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#literal-array-hash'
Enabled: false
# Checks whether the source file has a utf-8 encoding comment or not
# AutoCorrectEncodingComment must match the regex
# /#.*coding\s?[:=]\s?(?:UTF|utf)-8/
Style/Encoding:
Enabled: false
Style/EvenOdd:
Description: 'Favor the use of Fixnum#even? && Fixnum#odd?'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
Enabled: false
Naming/FileName:
Description: 'Use snake_case for source file names.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-files'
Enabled: false
Style/FrozenStringLiteralComment:
Description: >-
Add the frozen_string_literal comment to the top of files
to help transition from Ruby 2.3.0 to Ruby 3.0.
Enabled: false
Style/FlipFlop:
Description: 'Checks for flip flops'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-flip-flops'
Enabled: false
Style/FormatString:
Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#sprintf'
Enabled: false
Style/GlobalVars:
Description: 'Do not introduce global variables.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#instance-vars'
Reference: 'http://www.zenspider.com/Languages/Ruby/QuickRef.html'
Enabled: false
Style/GuardClause:
Description: 'Check for conditionals that can be replaced with guard clauses'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
Enabled: false
Style/IfUnlessModifier:
Description: >-
Favor modifier if/unless usage when you have a
single-line body.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier'
Enabled: false
Style/IfWithSemicolon:
Description: 'Do not use if x; .... Use the ternary operator instead.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs'
Enabled: false
Style/InlineComment:
Description: 'Avoid inline comments.'
Enabled: false
Style/Lambda:
Description: 'Use the new lambda literal syntax for single-line blocks.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#lambda-multi-line'
Enabled: false
Style/LambdaCall:
Description: 'Use lambda.call(...) instead of lambda.(...).'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc-call'
Enabled: false
Style/LineEndConcatenation:
Description: >-
Use \ instead of + or << to concatenate two string literals at
line end.
Enabled: false
Metrics/LineLength:
Description: 'Limit lines to 100 characters.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits'
Max: 100
Metrics/MethodLength:
Description: 'Avoid methods longer than 10 lines of code.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#short-methods'
Enabled: false
Style/ModuleFunction:
Description: 'Checks for usage of `extend self` in modules.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#module-function'
Enabled: false
Style/MultilineBlockChain:
Description: 'Avoid multi-line chains of blocks.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#single-line-blocks'
Enabled: false
Style/NegatedIf:
Description: >-
Favor unless over if for negative conditions
(or control flow or).
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#unless-for-negatives'
Enabled: false
Style/NegatedWhile:
Description: 'Favor until over while for negative conditions.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#until-for-negatives'
Enabled: false
Style/Next:
Description: 'Use `next` to skip iteration instead of a condition at the end.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
Enabled: false
Style/NilComparison:
Description: 'Prefer x.nil? to x == nil.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
Enabled: false
Style/Not:
Description: 'Use ! instead of not.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bang-not-not'
Enabled: false
Style/NumericLiterals:
Description: >-
Add underscores to large numeric literals to improve their
readability.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics'
Enabled: false
Style/OneLineConditional:
Description: >-
Favor the ternary operator(?:) over
if/then/else/end constructs.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#ternary-operator'
Enabled: false
Naming/BinaryOperatorParameterName:
Description: 'When defining binary operators, name the argument other.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#other-arg'
Enabled: false
Metrics/ParameterLists:
Description: 'Avoid parameter lists longer than three or four parameters.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#too-many-params'
Enabled: false
Style/PercentLiteralDelimiters:
Description: 'Use `%`-literal delimiters consistently'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-literal-braces'
Enabled: false
Style/PerlBackrefs:
Description: 'Avoid Perl-style regex back references.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers'
Enabled: false
Naming/PredicateName:
Description: 'Check the names of predicate methods.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark'
NamePrefixBlacklist:
- is_
Exclude:
- spec/**/*
Style/Proc:
Description: 'Use proc instead of Proc.new.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc'
Enabled: false
Style/RaiseArgs:
Description: 'Checks the arguments passed to raise/fail.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#exception-class-messages'
Enabled: false
Style/RegexpLiteral:
Description: 'Use / or %r around regular expressions.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-r'
Enabled: false
Style/SelfAssignment:
Description: >-
Checks for places where self-assignment shorthand should have
been used.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#self-assignment'
Enabled: false
Style/SingleLineBlockParams:
Description: 'Enforces the names of some block params.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#reduce-blocks'
Enabled: false
Style/SingleLineMethods:
Description: 'Avoid single-line methods.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-single-line-methods'
Enabled: false
Style/SignalException:
Description: 'Checks for proper usage of fail and raise.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#fail-method'
Enabled: false
Style/SpecialGlobalVars:
Description: 'Avoid Perl-style global variables.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms'
Enabled: false
Style/StringLiterals:
Description: 'Checks if uses of quotes match the configured preference.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-string-literals'
EnforcedStyle: double_quotes
Enabled: true
Style/TrailingCommaInArguments:
Description: 'Checks for trailing comma in argument lists.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
EnforcedStyleForMultiline: comma
SupportedStylesForMultiline:
- comma
- consistent_comma
- no_comma
Enabled: true
Style/TrailingCommaInLiteral:
Description: 'Checks for trailing comma in array and hash literals.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
EnforcedStyleForMultiline: comma
SupportedStylesForMultiline:
- comma
- consistent_comma
- no_comma
Enabled: true
Style/TrivialAccessors:
Description: 'Prefer attr_* methods to trivial readers/writers.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr_family'
Enabled: false
Style/VariableInterpolation:
Description: >-
Don't interpolate global, instance and class variables
directly in strings.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#curlies-interpolate'
Enabled: false
Style/WhenThen:
Description: 'Use when x then ... for one-line cases.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#one-line-cases'
Enabled: false
Style/WhileUntilModifier:
Description: >-
Favor modifier while/until usage when you have a
single-line body.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier'
Enabled: false
Style/WordArray:
Description: 'Use %w or %W for arrays of words.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-w'
Enabled: false
# Layout
Layout/AlignParameters:
Description: 'Here we check if the parameters on a multi-line method call or definition are aligned.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-double-indent'
Enabled: false
Layout/DotPosition:
Description: 'Checks the position of the dot in multi-line method calls.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains'
EnforcedStyle: trailing
Layout/ExtraSpacing:
Description: 'Do not use unnecessary spacing.'
Enabled: true
Layout/MultilineOperationIndentation:
Description: >-
Checks indentation of binary operations that span more than
one line.
Enabled: true
EnforcedStyle: indented
Layout/MultilineMethodCallIndentation:
Description: >-
Checks indentation of method calls with the dot operator
that span more than one line.
Enabled: true
EnforcedStyle: indented
Layout/InitialIndentation:
Description: >-
Checks the indentation of the first non-blank non-comment line in a file.
Enabled: false
# Lint
Lint/AmbiguousOperator:
Description: >-
Checks for ambiguous operators in the first argument of a
method invocation without parentheses.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-as-args'
Enabled: false
Lint/AmbiguousRegexpLiteral:
Description: >-
Checks for ambiguous regexp literals in the first argument of
a method invocation without parenthesis.
Enabled: false
Lint/AssignmentInCondition:
Description: "Don't use assignment in conditions."
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition'
Enabled: false
Lint/CircularArgumentReference:
Description: "Don't refer to the keyword argument in the default value."
Enabled: false
Lint/ConditionPosition:
Description: >-
Checks for condition placed in a confusing position relative to
the keyword.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition'
Enabled: false
Lint/DeprecatedClassMethods:
Description: 'Check for deprecated class method calls.'
Enabled: false
Lint/DuplicatedKey:
Description: 'Check for duplicate keys in hash literals.'
Enabled: false
Lint/EachWithObjectArgument:
Description: 'Check for immutable argument given to each_with_object.'
Enabled: false
Lint/ElseLayout:
Description: 'Check for odd code arrangement in an else block.'
Enabled: false
Lint/FormatParameterMismatch:
Description: 'The number of parameters to format/sprint must match the fields.'
Enabled: false
Lint/HandleExceptions:
Description: "Don't suppress exception."
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions'
Enabled: false
Lint/LiteralInInterpolation:
Description: 'Checks for literals used in interpolation.'
Enabled: false
Lint/Loop:
Description: >-
Use Kernel#loop with break rather than begin/end/until or
begin/end/while for post-loop tests.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#loop-with-break'
Enabled: false
Lint/NestedMethodDefinition:
Description: 'Do not use nested method definitions.'
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-methods'
Enabled: false
Lint/NonLocalExitFromIterator:
Description: 'Do not use return in iterator to cause non-local exit.'
Enabled: false
Lint/ParenthesesAsGroupedExpression:
Description: >-
Checks for method calls with a space before the opening
parenthesis.
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-no-spaces'
Enabled: false
Lint/RequireParentheses:
Description: >-
Use parentheses in the method call to avoid confusion
about precedence.
Enabled: false
Lint/UnderscorePrefixedVariableName:
Description: 'Do not use prefix `_` for a variable that is used.'
Enabled: false
Lint/UnneededDisable:
Description: >-
Checks for rubocop:disable comments that can be removed.
Note: this cop is not disabled when disabling all cops.
It must be explicitly disabled.
Enabled: false
Lint/Void:
Description: 'Possible use of operator/literal/variable in void context.'
Enabled: false
# Performance
Performance/CaseWhenSplat:
Description: >-
Place `when` conditions that use splat at the end
of the list of `when` branches.
Enabled: false
Performance/Count:
Description: >-
Use `count` instead of `select...size`, `reject...size`,
`select...count`, `reject...count`, `select...length`,
and `reject...length`.
Enabled: false
Performance/Detect:
Description: >-
Use `detect` instead of `select.first`, `find_all.first`,
`select.last`, and `find_all.last`.
Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code'
Enabled: false
Performance/FlatMap:
Description: >-
Use `Enumerable#flat_map`
instead of `Enumerable#map...Array#flatten(1)`
or `Enumberable#collect..Array#flatten(1)`
Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code'
Enabled: false
Performance/ReverseEach:
Description: 'Use `reverse_each` instead of `reverse.each`.'
Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code'
Enabled: false
Performance/Sample:
Description: >-
Use `sample` instead of `shuffle.first`,
`shuffle.last`, and `shuffle[Fixnum]`.
Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code'
Enabled: false
Performance/Size:
Description: >-
Use `size` instead of `count` for counting
the number of elements in `Array` and `Hash`.
Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code'
Enabled: false
Performance/StringReplacement:
Description: >-
Use `tr` instead of `gsub` when you are replacing the same
number of characters. Use `delete` instead of `gsub` when
you are deleting characters.
Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code'
Enabled: false
# Rails
Rails/ActionFilter:
Description: 'Enforces consistent use of action filter methods.'
Enabled: false
Rails/Date:
Description: >-
Checks the correct usage of date aware methods,
such as Date.today, Date.current etc.
Enabled: false
Rails/FindBy:
Description: 'Prefer find_by over where.first.'
Enabled: false
Rails/FindEach:
Description: 'Prefer all.find_each over all.find.'
Enabled: false
Rails/HasAndBelongsToMany:
Description: 'Prefer has_many :through to has_and_belongs_to_many.'
Enabled: false
Rails/Output:
Description: 'Checks for calls to puts, print, etc.'
Enabled: false
Rails/ReadWriteAttribute:
Description: >-
Checks for read_attribute(:attr) and
write_attribute(:attr, val).
Enabled: false
Rails/ScopeArgs:
Description: 'Checks the arguments of ActiveRecord scopes.'
Enabled: false
Rails/TimeZone:
Description: 'Checks the correct usage of time zone aware methods.'
StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time'
Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
Enabled: false
Rails/Validation:
Description: 'Use validates :attribute, hash of validations.'
Enabled: false

1
.ruby-version Normal file
View file

@ -0,0 +1 @@
2.5.0

9
.simplecov Normal file
View file

@ -0,0 +1,9 @@
SimpleCov.start "rails" do
add_filter "/spec/"
add_filter "/dashboards/"
add_filter "/app/controllers/admin/"
add_filter "/app/controllers/internal/"
add_filter "/app/black_box/"
add_filter "/app/fields/"
add_filter "/app/views/admin/"
end

64
.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,64 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Debug Local File",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/main.rb"
},
{
"name": "Listen for rdebug-ide",
"type": "Ruby",
"request": "attach",
"cwd": "${workspaceRoot}",
"remoteHost": "127.0.0.1",
"remotePort": "1234",
"remoteWorkspaceRoot": "${workspaceRoot}"
},
{
"name": "Rails server",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/bin/rails",
"args": [
"server"
]
},
{
"name": "RSpec - all",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/bin/rspec",
"args": [
"-I",
"${workspaceRoot}"
]
},
{
"name": "RSpec - active spec file only",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/bin/rspec",
"args": [
"-I",
"${workspaceRoot}",
"${file}"
]
},
{
"name": "Cucumber",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/bin/cucumber"
}
]
}

6
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,6 @@
{
"ruby.lint": {
"rubocop": true,
"fasterer": false,
}
}

138
Gemfile Normal file
View file

@ -0,0 +1,138 @@
source "https://rubygems.org"
ruby "2.5.0"
group :production do
gem "rails_12factor", "~> 0.0"
end
gem "actionpack-action_caching", "~> 1.2"
gem "active_record_union", "~> 1.3"
gem "acts-as-taggable-on", "~> 5.0"
gem "acts_as_follower", github: "thepracticaldev/acts_as_follower", branch: "master"
gem "administrate", "~> 0.9"
gem "ahoy_email", "~> 0.5"
gem "airbrake", "~> 5.8"
gem "algoliasearch-rails", "~> 1.20"
gem "algorithmia", "~> 1.0"
gem "ancestry", "~> 3.0"
gem "autoprefixer-rails", "~> 6.7"
gem "aws-sdk-lambda" # Installing just Lambda, if we need more we can install aws-sdk gem
gem "bourbon", "~> 1.4"
gem "buffer", github: "bufferapp/buffer-ruby"
gem "carrierwave", "~> 1.2"
gem "carrierwave-bombshelter", "~> 0.2"
gem "cloudinary", "~> 1.8"
gem "counter_culture", "~> 1.9"
gem "csv_shaper", "~> 1.3"
gem "dalli", "~> 2.7"
gem "delayed_job_active_record", "~> 4.1"
gem "delayed_job_web", "~> 1.4"
gem "devise", "~> 4.4"
gem "draper", "~> 3.0"
gem "email_validator", "~> 1.6"
gem "fastly", "~> 1.13"
gem "fastly-rails", "~> 0.8"
gem "feedjira", "~> 2.1"
gem "fetch-rails", "~> 1.0"
gem "figaro", "~> 1.1"
gem "flipflop", "~> 2.3"
gem "fog", "~> 1.41"
gem "front_matter_parser", "~> 0.1"
gem "gibbon", "~> 2.2"
gem "google-api-client", "~> 0.19"
gem "httparty", "~> 0.16"
gem "inline_svg", "~> 0.12"
gem "jbuilder", "~> 2.7"
gem "jquery-rails", "~> 4.3"
gem "kaminari", "~> 1.1"
gem "keen", "~> 0.7"
gem "liquid", "~> 4.0"
gem "nokogiri", "~> 1.8"
gem "octokit", "~> 4.8"
gem "omniauth", "~> 1.8"
gem "omniauth-github", "~> 1.3"
gem "omniauth-twitter", "~> 1.4"
gem "pg", "~> 0.21"
gem "pry", "~> 0.11"
gem "pry-rails", "~> 0.3"
gem "puma", "~> 3.11"
gem "puma_worker_killer", "~> 0.1"
gem "pundit", "~> 1.1"
gem "rack-host-redirect", "~> 1.3"
gem "rack-timeout", "~> 0.4"
gem "rails", "~> 5.1"
gem "rails-assets-airbrake-js-client", "~> 0.9", source: "https://rails-assets.org"
gem "rails-observers", "~> 0.1"
gem "recaptcha", "~> 4.6", require: "recaptcha/rails"
gem "redcarpet", "~> 3.4"
gem "reverse_markdown", "~> 1.0"
gem "rolify", "~> 5.2"
gem "rouge", "~> 3.1"
gem "sass-rails", "~> 5.0"
gem "sdoc", "~> 0.4", group: :doc
gem "selenium-webdriver", "~> 3.9"
gem "serviceworker-rails", "~> 0.5"
gem "share_meow_client", "~> 0.1"
gem "skylight", "~> 1.5"
gem "slack-notifier", "~> 1.5"
gem "sprockets", "~> 3.7"
gem "sprockets-es6", "~> 0.9"
gem "staccato", "~> 0.5"
gem "storext", "~> 2.2"
gem "stream_rails", "~> 2.5"
gem "stripe", "~> 3.9"
gem "therubyracer", "~> 0.12", platforms: :ruby
gem "timber", "~> 2.6"
gem "twitter", "~> 6.2"
gem "uglifier", "~> 3.2"
gem "validate_url", "~> 1.0"
gem "webpacker", "~> 3.2"
group :development do
gem "brakeman", "~> 3.7", require: false
gem "bullet", "~> 5.7"
gem "bundler-audit", "~> 0.6"
gem "derailed_benchmarks", "~> 1.3"
gem "guard", "~> 2.14", require: false
gem "guard-livereload", "~> 2.5", require: false
gem "guard-rspec", "~> 4.7", require: false
gem "rb-fsevent", "~> 0.10", require: false
gem "web-console", "~> 3.5"
end
group :development, :test do
gem "byebug", "~> 8.2"
gem "capybara", "~> 2.18"
gem "derailed", "~> 0.1"
gem "faker", "~> 1.8"
gem "memory_profiler", "~> 0.9"
gem "parallel_tests", "~> 2.21"
gem "rack-mini-profiler", "~> 0.10"
gem "rspec-rails", "~> 3.7"
gem "rspec-retry", "~> 0.5"
gem "rubocop", "~> 0.52", require: false
gem "rubocop-rspec", "~> 1.22"
gem "spring", "~> 2.0"
gem "spring-commands-rspec", "~> 1.0"
gem "vcr", "~> 4.0"
end
group :test do
gem "approvals", "~> 0.0"
gem "chromedriver-helper", "~> 1.2"
gem "database_cleaner", "~> 1.6"
gem "factory_bot_rails", "~> 4.8"
gem "fake_stripe", "~> 0.1"
gem "launchy", "~> 2.4"
gem "rack_session_access", "~> 0.1"
gem "rails-controller-testing", "~> 1.0"
gem "ruby-prof", "~> 0.17", require: false
gem "shoulda-matchers", "~> 3.1", require: false
gem "simplecov", "~> 0.15", require: false
gem "sinatra", "~> 2.0"
gem "stackprof", "~> 0.2", require: false
gem "stripe-ruby-mock", "~> 2.5.0", require: "stripe_mock"
gem "test-prof", "~> 0.4"
gem "timecop", "~> 0.9"
gem "webmock", "~> 3.3"
end

1005
Gemfile.lock Normal file

File diff suppressed because it is too large Load diff

96
Guardfile Normal file
View file

@ -0,0 +1,96 @@
# A sample Guardfile
# More info at https://github.com/guard/guard#readme
## Uncomment and set this to only include directories you want to watch
# directories %w(app lib config test spec features) \
# .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
## Note: if you are using the `directories` clause above and you are not
## watching the project directory ('.'), then you will want to move
## the Guardfile to a watched dir and symlink it back, e.g.
#
# $ mkdir config
# $ mv Guardfile config/
# $ ln -s config/Guardfile .
#
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
# Note: The cmd option is now required due to the increasing number of ways
# rspec may be run, below are examples of the most common uses.
# * bundler: 'bundle exec rspec'
# * bundler binstubs: 'bin/rspec'
# * spring: 'bin/rspec' (This will use spring if running and you have
# installed the spring binstubs per the docs)
# * zeus: 'zeus rspec' (requires the server to be started separately)
# * 'just' rspec: 'rspec'
ignore([%r{^bin/*}, %r{^config/*}, %r{^db/*}, %r{^lib/*}, %r{^log/*}, %r{^public/*}, %r{^tmp/*}, %r{^node_modules/*}])
rspec_options = {
results_file: File.expand_path('tmp/guard_rspec_results.txt'),
#############################
# BECAUSE spring doesn't seem to work well with simplecov, choose
# between the following two.
# slow but good coverage
# cmd: "bin/rspec -p",
# fast but no coverage
cmd: "bin/spring rspec -p",
#############################
failed_mode: :none,
bundler_env: :clean_env
}
guard :rspec, rspec_options do
require "guard/rspec/dsl"
dsl = Guard::RSpec::Dsl.new(self)
# Feel free to open issues for suggestions and improvements
# RSpec files
rspec = dsl.rspec
watch(rspec.spec_helper) { rspec.spec_dir }
watch(rspec.spec_support) { rspec.spec_dir }
watch(rspec.spec_files)
# Ruby files
ruby = dsl.ruby
dsl.watch_spec_files_for(ruby.lib_files)
# Rails files
rails = dsl.rails(view_extensions: %w(erb haml slim))
dsl.watch_spec_files_for(rails.app_files)
dsl.watch_spec_files_for(rails.views)
watch(rails.controllers) do |m|
[
rspec.spec.call("routing/#{m[1]}_routing"),
rspec.spec.call("controllers/#{m[1]}_controller"),
rspec.spec.call("acceptance/#{m[1]}")
]
end
# Rails config changes
watch(rails.spec_helper) { rspec.spec_dir }
watch(rails.routes) { "#{rspec.spec_dir}/routing" }
watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
# Capybara features specs
watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") }
watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") }
# Turnip features and steps
watch(%r{^spec/acceptance/(.+)\.feature$})
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
end
end
guard :livereload do
watch(%r{app/views/.+\.(erb|haml|slim)$})
watch(%r{app/helpers/.+\.rb})
watch(%r{public/.+\.(css|js|html)})
watch(%r{config/locales/.+\.yml})
# Rails Assets Pipeline
watch(%r{(app|vendor)(/assets/\w+/(.+\.(css|js|html|png|jpg))).*}) { |m| "/assets/#{m[3]}" }
watch(%r{(app|vendor)(/assets/\w+/(.+)\.(scss))}) { |m| "/assets/#{m[3]}.css" }
end

13
ISSUE_TEMPLATE.md Normal file
View file

@ -0,0 +1,13 @@
# _TASK or Feature_
### Request or User Story
### Definition of Done
### Notes
# _BUG_
### Current/Expected Behavior
### Additional Info (steps to replicate, device/browser, helpful links)
### Screenshots

1
Procfile Normal file
View file

@ -0,0 +1 @@
web: bundle exec puma -C config/puma.rb

3
Procfile.dev Normal file
View file

@ -0,0 +1,3 @@
web: bin/rails s -p 3000
webpacker: ./bin/webpack-dev-server
job: bin/rake jobs:work

4
Procfile.dev-hot Normal file
View file

@ -0,0 +1,4 @@
web: rails s
# TODO: MIGRATE from tutorial
client: sh -c 'rm app/assets/javascripts/generated/* || true && cd client && npm run build:dev:client'
server: sh -c 'cd client && npm run build:dev:server'

213
README.md Normal file
View file

@ -0,0 +1,213 @@
# The DEV Community 👩‍💻👨‍💻
<p align="center">
<img
alt="DEV"
src="https://thepracticaldev.s3.amazonaws.com/i/d3o5l9yiqfv1z24cn1yp.png"
height=300px
/>
</p>
<p align="center">
Where programmers share ideas and help each other grow
</p>
<p align="center">
<a href="https://www.ruby-lang.org/en/">
<img src="https://img.shields.io/badge/Ruby-v2.5.0-green.svg" alt="ruby version"/>
</a>
<a href="http://rubyonrails.org/">
<img src="https://img.shields.io/badge/Rails-v5.1.4-brightgreen.svg" alt="rails version"/>
</a>
<a href="https://app.codeship.com/projects/229274">
<img src="https://app.codeship.com/projects/6c96c1d0-3db5-0135-649e-1a9b211ca261/status?branch=master" alt="Codeship Status for thepracticaldev/dev.to_private"/>
</a>
<a href="https://codeclimate.com/repos/59725eaf1b8ee602a600022c/maintainability">
<img src="https://api.codeclimate.com/v1/badges/0d30b78a07e7eec482f7/maintainability" />
</a>
<a href="https://codeclimate.com/repos/59725eaf1b8ee602a600022c/test_coverage">
<img src="https://api.codeclimate.com/v1/badges/0d30b78a07e7eec482f7/test_coverage" />
</a>
</p>
## Introduction and Contribution Guideline
Welcome to the [dev.to](/) codebase. We are so excited to have you. Most importantly, all contributors must abide by the [code of conduct](dev.to/code-of-conduct).
With your help, we can build out the DEV Community platform to be more stable and better serve the users. The platform is built on [Ruby on Rails](http://rubyonrails.org/). When in doubt, try to do things "The Rails Way", but it is an evolving codebase and we will learn from all new contributions in order to evolve.
Before we can make the codebase fully open source, we must ensure we discover any possible vulnerabilities that could be exposed by eyes on the code, but in the long run we think that openness can do nothing but help in this way.
### How to contribute
When in doubt, ask! We are doing this for the first time and we may not be clear about everything. Creating an issue to ask about how to do something in the open is a great decision. We will try to create clear issues, but communication is the most important thing and it's hard! You may communicate _through_ a pull request. It's a fine approach, but it could result in going down the wrong path. The earlier we talk about something the better.
**Refactoring** code, e.g. improving the code without modifying the behavior is an area that can probably be done based on intuition and may not require much communication to be merged.
**Fixing bugs** may also not require a lot of communication, but the more the better. Please surround bug fixes with ample tests. Bugs are magnets for other bugs. Write tests near bugs!
**Building features** is the area which will require the most communication and/or negotiation. Every feature is subjective and open for debate. Let's talk about the features!
### Clean code with tests
Even though some of the existing code is poorly written or not tested as well as it could be, we have much more scrutiny for these things going forward, as the transition from team-only development to open development makes clean code more important than ever in order to avoid communication breakdown. Good luck writing the best code of your life!
### Non-code contributions
Improving documentation and wikis is very valuable, as is participating in any discussions about approaches or features.
### The bottom line
If a process could be improved, don't hesitate to bring it up, but there are always tradeoffs and we are humans. Mistakes happen and opinions may not always line up. Shaming anyone trying to contribute is not allowed.
# Getting Started
#### Prerequisite
- Ruby: we recommend using [rbenv](https://github.com/rbenv/rbenv) to install the Ruby version listed on the badge.
- Bundler: `gem install bundler`
- Foreman: `gem install foreman`
- Yarn: use `brew install yarn` to install yarn. It will also install node if you don't already have it.
- PostgresSQL: the easiest way to get started with this is to use [Postgres.app](https://postgresapp.com/).
#### Installation steps
1. `git clone git@github.com:benhalpern/practicaldeveloper.git`
2. `bundle install`
3. `bin/yarn`
4. `bin/setup`
6. Set up your environment variables/secrets with the either of the following two methods:
- A. create a `config/application.yml` file and paste secret keys in it.
- B. Use [Torus](http://torus.sh/) to wrap around the whole app. Refer to the [wiki](https://github.com/thepracticaldev/dev.to_private/wiki/Torus) if you are interested. *Please bear in mind that usage of Torus is experimental*.
- If you are missing `ENV` variables on bootup, `_env_checker.rb` will let you know. If you add or remove `ENV` vars to the project, you must also modify this file before they can be merged.
#### Starting the application
We're mostly a Rails app, with a bit of Webpack sprinkled in. **For most cases, simply running `bin/rails server` will do.** If you're working with Webpack though, you'll need to run the following:
- Run `bin/startup` to start the server, Webpack, and our job runner `delayed_job`. `bin/startup` runs `foreman start -f Procfile.dev` under the hood.
- `alias start="bin/startup"` makes this even faster. 😊
- If you're using `pry` for debugging in Rails, note that using `foreman` and `pry` together works, but it's not as clean as `bin/rails server`.
Here are some singleton commands you may need, usually in a separate instance/tab of your Terminal.
- Running the job server -- this is for mostly for notifications and emails: `bin/rails jobs:work`
- Clearing jobs (in case you don't want to wait for the backlog of jobs): `bin/rails jobs:clear`
Current gotchas: potential environment issues with external services need to be worked out.
## 🔑 Key App tech/services
- We use **Puma** for the server
- We rely heavily on edge caching with **Fastly**
- We use **Cloudinary** for image manipulation/serving
- We use **Keen** for event storage
- We use **Airbrake** for error monitoring
- We use **Timber** for logging
- We use **Delayed Job** for background workers
- We use **Algolia** for search
- We use **Redcarpet/Rouge** for Markdown
- We use **Carrierwave/Fog/AWS S3** for image upload/storage
- We use a modified version of **InstantClick** instead of **Turbolinks**
- We are hosted on **Heroku**
- We use **Heroku scheduler** for scheduled jobs (default)
- We use **Sendgrid** for API-triggered mailing
- We use **Mailchimp** for marketing/outreach emails
- We use **Figaro** for app configuration.
- We use **CounterCulture** to keep track of association counts (counter caches)
- We use **Rolify** for role management.
- We use **Pundit** for authorization.
There's more, but that's a decent overview of the key need-to-knows.
## Workflow Suggestion
We use [Spring](https://github.com/rails/spring) and it is already included in the project.
1. Use the provided bin stubs to automatically start Spring, i.e. `bin/rails server`, `bin/rspec spec/models/`, `bin/rake db:migrate`.
2. If Spring isn't picking up on new changes, use `spring stop`. For example, Spring should always be restarted if there's a change in environment key.
3. Check Spring's status whenever with `spring status`.
Caveat: `bin/rspec` is not equipped with Spring because it affect Simplecov's result. Instead use `bin/spring rspec`.
## Style Guide
This project follows [Bbatsov's Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide), using [Rubocop](https://github.com/bbatsov/rubocop) along with [Rubocop-Rspec](https://github.com/backus/rubocop-rspec) as the code analyzer. If you have Rubocop installed with your text editor of choice, you should be up and running. Settings can be edited in `.rubocop.yml`.
For Javascript, we follow [Airbnb's JS Style Guide](https://github.com/airbnb/javascript), using [ESLint](https://eslint.org/). If you have ESLint installed with your text editor of choice, you should be up and running.
## Testing
The following technologies are used for testing:
- **Rspec**
- **Capybara** with **selenium-webdriver**
- **chromedriver-helper** for standard JS testing.
- **Capybara-webkit** for headless JS testing.(not in use)
- **`rack_session_access`**
- **Warden**
- **guard-rspec** for automated testing
#### Installing Capybara-webkit
**This is currently commented out in the Gemfile, but if you want to experiment with it** Follow the instruction of installing Qt [here](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit) then `bundle install` normally.
#### When should I use `login_via_session_as(:user)` vs `login_as(:user)`?
- `login_as(:user)` uses Warden's stubbing actions to make the application think that a user is signed in but without all of the overhead of actually signing them in. Recommended for view test.
- `login_via_session_as(:user)` uses `rack_session_access` to modify application's session. It is integrated with Devise so current_user won't be nil. Recommended for feature test.
## Environment Variables
You need to keep your personal `config/application.yml` up-to-date in order to properly set up your environment variables. We have some "shared" environment variables, but you may need "personal" environment variables for one reason or another (such as a private Algolia instance, possibly). It is important to keep people up-to-date on changes to this protocol, as it is not checked into git. It is also important to use secure ways of passing these keys around. We currently use LastPass to store this.
## Previewing emails in development
You can modify the test in `/test/mailers/previews`
You can view the previews at (for example) `http://localhost:3000/rails/mailers/notify_mailer/new_reply_email`
## How to contribute (Internal)
1. Clone the project locally.
2. Create a branch for each separate piece of work.
3. Do the work and write [good commit messages](https://chris.beams.io/posts/git-commit/).
- If your work includes adding a new environment variable, make sure you update `_env_checker.rb`.
4. Push your branch up to this repository.
5. Create a new pull-reqest.
6. After the pull-request is approved and merged, delete your branch on github.
**Avoid pushing spike(test) branches up to the main repository**. If you must, push the spike branches up to a forked repository.
<!-- This would be how we would contribute if we are doing a fork-and-branch workflow
1. Fork the project & clone locally.
2. Create an upstream remote and sync your local copy before you branch.
3. Create a branch for each separate piece of work.
4. Do the work and write good commit messages.
5. Push to your origin repository.
6. Create a new PR in GitHub.
-->
### Branch Policies
#### Branch naming convention
Name the branch in the following manner.
`<your-name>/<type>/<github issue# (if there's one)>-<name>`
###### Examples
```
ben/feature/renderer-cookies
niko/hotfix/dockerfile-base-image
andy-and-niko/issue/#132-broken-link
```
#### Workflow
- [Here's](https://github.com/thepracticaldev/dev.to_private/wiki/Product-Workflow) a guide to our workflow using ZenHub.
- Note: if you're working on a task with no associated issue, create an issue. We do this so there's transparency and also to prevent anyone from unknowingly doing the same task.
#### Pull request guideline
- Keep the pull request small; a pull request should try it's very best to address only a single concern.
- Make sure all the tests pass and add additional tests for the code you submit.
- Document your reasoning behind the changes. Explain why you wrote the code in the way you did, not what it does.
- If there's an existing issue related to the pull request, reference to it. [More info here](https://github.com/blog/1506-closing-issues-via-pull-requests)
Please note that we squash all pull request. **After a pull request is approved, we will remove the branch the PR is on unless you state it otherwise**
## Continuous Integration & Continuous Deployment
We are using Codeship for CI and CD. Codeship will run a build (in isolated environment for testing) for every push to this repository. Keep in mind that a passing-build does not necessarily mean the project won't run into any issues. Strive to write good tests for any chunk of code you wish to contribute. Only pushes to the `deployment` branch will evoke the CD portion of Codeship after CI passes. Our test suite is not perfect and sometimes a re-rerun is needed.
#### Skipping CI build (Not recommended)
You can skip CI by adding `--skip-ci` to your commit message. More info [here](https://documentation.codeship.com/general/projects/skipping-builds/).
## CodeClimate and Simplecov
We are using CodeClimate to track code quality and code coverage. Codeclimate will grade the quality of the code of every PR but not the entirety of the project. If you feel that the current linting rule is unreasonable, feel free to submit a _separate_ PR to change it. Fix any errors that Codeclimate provides and strive to leave code better than you found it.
Simplecov is a gem that is tracking the coverage of our test suite. Codeship will upload Simplecov data to CodeClimate. We are still in the early stage of using it so it may not provide an accurate measurement our of codebase.
#### Using simplecov locally
1. Run `bundle exec rspec spec` or `bin/rspec spec`. You can run rspec on the whole project or a single file.
2. After rspec is complete, open `index.html` within the coverage folder to view code coverages.
Run `bin/rspecov` to do all of this in one step

6
Rakefile Normal file
View file

@ -0,0 +1,6 @@
# 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__)
Rails.application.load_tasks

0
app/assets/images/.keep Normal file
View file

BIN
app/assets/images/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
app/assets/images/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
app/assets/images/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
app/assets/images/12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
app/assets/images/13.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
app/assets/images/14.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
app/assets/images/15.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
app/assets/images/16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
app/assets/images/17.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
app/assets/images/18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
app/assets/images/19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
app/assets/images/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
app/assets/images/20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
app/assets/images/21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
app/assets/images/22.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
app/assets/images/23.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
app/assets/images/24.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
app/assets/images/25.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
app/assets/images/26.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
app/assets/images/27.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
app/assets/images/28.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
app/assets/images/29.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
app/assets/images/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
app/assets/images/30.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
app/assets/images/31.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
app/assets/images/32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
app/assets/images/33.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
app/assets/images/34.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
app/assets/images/35.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
app/assets/images/36.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
app/assets/images/37.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
app/assets/images/38.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
app/assets/images/39.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
app/assets/images/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
app/assets/images/40.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
app/assets/images/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
app/assets/images/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
app/assets/images/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
app/assets/images/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
app/assets/images/9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!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" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" width="512px" height="512px" viewBox="0 0 101.968 101.968" style="enable-background:new 0 0 101.968 101.968;" xml:space="preserve">
<g>
<g>
<path d="M24.715,47.432L7.968,64.86v29.406c0,0.828,0.671,1.5,1.5,1.5h20.334c0.828,0,1.5-0.672,1.5-1.5V49.158l-4.69-1.726 H24.715z" fill="#FFFFFF"/>
<path d="M66.135,61.1H45.801c-0.828,0-1.5,0.672-1.5,1.5v31.666c0,0.828,0.672,1.5,1.5,1.5h20.334c0.829,0,1.5-0.672,1.5-1.5V62.6 C67.635,61.772,66.964,61.1,66.135,61.1z" fill="#FFFFFF"/>
<path d="M101.724,29.49c-0.777,0.406-1.652,0.621-2.53,0.621c-1.276,0-2.521-0.45-3.5-1.27l-3.694-3.088l-13.365,14.58v53.934 c0,0.828,0.672,1.5,1.5,1.5h20.334c0.829,0,1.5-0.672,1.5-1.5v-64.93C101.885,29.387,101.81,29.445,101.724,29.49z" fill="#FFFFFF"/>
<path d="M57.797,54.094c1.144,0.419,2.424,0.108,3.248-0.788l30.839-33.643l7.217,6.032c0.353,0.294,0.847,0.349,1.254,0.136 c0.407-0.214,0.646-0.648,0.605-1.107L99.396,7.235c-0.055-0.625-0.606-1.086-1.231-1.029l-17.49,1.563 c-0.458,0.041-0.846,0.354-0.982,0.791C79.646,8.706,79.631,8.854,79.644,9c0.026,0.294,0.167,0.572,0.403,0.769l7.229,6.043 L57.98,47.769L24.535,35.463c-1.118-0.41-2.373-0.121-3.198,0.735l-20.5,21.333c-1.148,1.195-1.11,3.095,0.084,4.242 c0.583,0.561,1.332,0.837,2.079,0.837c0.788,0,1.574-0.309,2.164-0.921l19.141-19.92L57.797,54.094z" fill="#FFFFFF"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 47.834 47.834"><path d="M46.878 41.834H.956L.96 40.83c.022-4.066 2.87-7.55 6.76-8.438V20.697c0-8.93 7.265-16.197 16.196-16.197 8.932 0 16.198 7.266 16.198 16.197v11.695c3.89.89 6.737 4.372 6.76 8.437l.004 1zm-43.836-2h41.75c-.458-2.908-2.804-5.24-5.8-5.61l-.878-.107v-13.42c0-7.828-6.37-14.197-14.198-14.197S9.72 12.87 9.72 20.697v13.42l-.878.106c-2.997.37-5.342 2.702-5.8 5.61z"/><path d="M21.125 5.988h-2V4.792C19.125 2.15 21.275 0 23.917 0s4.79 2.15 4.79 4.792v1.176h-2V4.792c0-1.54-1.25-2.792-2.79-2.792s-2.792 1.253-2.792 2.792v1.196zm2.778 41.846c-3.94 0-7.375-2.8-8.164-6.656l1.954-.4c.6 2.93 3.21 5.057 6.205 5.057 3.06 0 5.677-2.18 6.23-5.18l1.966.36c-.725 3.952-4.17 6.82-8.195 6.82zM8.72 32.23h3.682v2H8.72zm9.447 0h20.947v2H18.167z"/></svg>

After

Width:  |  Height:  |  Size: 805 B

BIN
app/assets/images/ben.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View file

@ -0,0 +1,6 @@
<?xml version='1.0' encoding='utf-8'?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 129 129" xmlns:xlink="http://www.w3.org/1999/xlink" enable-background="new 0 0 129 129">
<g>
<path d="m40.4,121.3l24.1-24.3 24.1,24.3c0.8,0.8 1.8,1.2 2.9,1.2 0.5,0 1-0.1 1.6-0.3 1.5-0.6 2.5-2.1 2.5-3.8v-107.8c0-2.3-1.8-4.1-4.1-4.1h-54c-2.3,0-4.1,1.8-4.1,4.1v107.8c0,1.7 1,3.1 2.5,3.8 1.6,0.6 3.4,0.3 4.5-0.9zm1.2-106.6h45.7v93.8l-20-20.2c-0.8-0.8-1.8-1.2-2.9-1.2-1.1,0-2.1,0.4-2.9,1.2l-20,20.2v-93.8z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 530 B

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 32.526 32.526" style="enable-background:new 0 0 32.526 32.526;" xml:space="preserve" width="512px" height="512px">
<polygon points="32.526,2.828 29.698,0 16.263,13.435 2.828,0 0,2.828 13.435,16.263 0,29.698 2.828,32.526 16.263,19.091 29.698,32.526 32.526,29.698 19.091,16.263 " fill="#4f5458"/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 716 B

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 511.999 511.999" style="enable-background:new 0 0 511.999 511.999;" xml:space="preserve">
<g>
<g>
<path d="M470.238,31.479H41.762C18.735,31.479,0,50.214,0,73.242v250.53c0,23.029,18.735,41.764,41.763,41.764h24.415v103.079
c0,4.816,2.902,9.157,7.35,11c1.473,0.61,3.019,0.906,4.553,0.906c3.099,0,6.145-1.21,8.422-3.487L198,365.535h272.236
c23.028,0,41.762-18.735,41.762-41.764V73.242C512,50.214,493.265,31.479,470.238,31.479z M470.238,341.722H193.062
c-3.08,0-5.878,1.18-7.991,3.099c-0.019,0.017-0.041,0.038-0.06,0.055c-0.145,0.133-0.293,0.263-0.431,0.404L89.99,439.869
v-86.241c0-0.414-0.021-0.781-0.063-1.105c-0.558-6.057-5.647-10.801-11.85-10.801H41.762c-9.898,0-17.95-8.053-17.95-17.951
V73.242c0-9.898,8.052-17.95,17.95-17.95h428.475c9.899,0,17.95,8.052,17.95,17.95v250.53h0
C488.187,333.669,480.135,341.722,470.238,341.722z"/>
</g>
</g>
<g>
<g>
<path d="M173.987,118.437h-69.399c-6.576,0-11.906,5.332-11.906,11.906c0,6.575,5.33,11.906,11.906,11.906h69.399
c6.576,0,11.906-5.332,11.906-11.906C185.893,123.768,180.562,118.437,173.987,118.437z"/>
</g>
</g>
<g>
<g>
<path d="M297.738,186.6H104.587c-6.576,0-11.906,5.332-11.906,11.906c0,6.575,5.33,11.906,11.906,11.906h193.151
c6.575,0,11.906-5.33,11.906-11.906C309.644,191.932,304.313,186.6,297.738,186.6z"/>
</g>
</g>
<g>
<g>
<path d="M407.414,118.437H243.507c-6.576,0-11.906,5.332-11.906,11.906c0,6.575,5.33,11.906,11.906,11.906h163.907
c6.575,0,11.906-5.332,11.906-11.906C419.32,123.767,413.989,118.437,407.414,118.437z"/>
</g>
</g>
<g>
<g>
<path d="M407.414,186.6h-43.102c-6.575,0-11.906,5.332-11.906,11.906c0,6.576,5.332,11.906,11.906,11.906h43.102
c6.575,0,11.906-5.33,11.906-11.906C419.32,191.93,413.989,186.6,407.414,186.6z"/>
</g>
</g>
<g>
<g>
<path d="M212.407,254.765h-107.82c-6.576,0-11.906,5.33-11.906,11.906c0,6.575,5.33,11.906,11.906,11.906h107.82
c6.576,0,11.906-5.332,11.906-11.906C224.313,260.095,218.983,254.765,212.407,254.765z"/>
</g>
</g>
<g>
<g>
<path d="M407.414,254.765H275.675c-6.575,0-11.906,5.33-11.906,11.906c0,6.575,5.332,11.906,11.906,11.906h131.739
c6.575,0,11.906-5.332,11.906-11.906C419.32,260.095,413.989,254.765,407.414,254.765z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View file

@ -0,0 +1,51 @@
<svg xmlns="http://www.w3.org/2000/svg" width="180" height="180" viewBox="0 0 720 720">
<metadata><?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c138 79.159824, 2016/09/14-01:09:01 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""/>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?></metadata>
<defs>
<style>
.cls-1 {
fill: none;
stroke-width: 45.71px;
}
.cls-1, .cls-2 {
stroke: #666;
}
.cls-2 {
fill: #666;
stroke-width: 144px;
fill-rule: evenodd;
}
</style>
</defs>
<circle class="cls-1" cx="360" cy="360" r="322.469"/>
<path id="Rounded_Rectangle_1" data-name="Rounded Rectangle 1" class="cls-2" d="M208.533,346.377L369.422,456.321c4.039,2.76,4.767,8.684,1.625,13.232l-29.579,42.824c-3.141,4.548-8.962,6-13,3.238L167.577,405.672c-4.039-2.76-4.766-8.685-1.625-13.233l29.579-42.824C198.673,345.067,204.494,343.617,208.533,346.377Z"/>
<path id="Rounded_Rectangle_2" data-name="Rounded Rectangle 2" class="cls-2" d="M467.712,221.827l42.86,29.517a9.792,9.792,0,0,1,2.784,13.575L341.987,512.949a9.828,9.828,0,0,1-13.7,2.223l-42.86-29.517a9.794,9.794,0,0,1-2.784-13.576l171.369-248.03A9.829,9.829,0,0,1,467.712,221.827Z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View file

@ -0,0 +1,49 @@
<svg xmlns="http://www.w3.org/2000/svg" width="180" height="180" viewBox="0 0 720 720">
<metadata><?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c138 79.159824, 2016/09/14-01:09:01 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""/>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?></metadata>
<defs>
<style>
.cls-1 {
fill: #0c6;
stroke: #0c6;
stroke-width: 30.71px;
}
.cls-2 {
fill: #fff;
stroke: #fff;
stroke-width: 1px;
fill-rule: evenodd;
}
</style>
</defs>
<circle class="cls-1" cx="360" cy="360" r="322.469"/>
<path id="Rounded_Rectangle_4" data-name="Rounded Rectangle 4" class="cls-2" d="M312.1,512.7L501.5,180.79a10.029,10.029,0,0,1,13.661-3.744l27.848,15.825a9.985,9.985,0,0,1,3.744,13.634l-189.4,331.91a10.029,10.029,0,0,1-13.661,3.744l-27.848-15.825A9.986,9.986,0,0,1,312.1,512.7Z"/>
<path id="Rounded_Rectangle_5" data-name="Rounded Rectangle 5" class="cls-2" d="M152.919,375.428L367.127,502.516a9.986,9.986,0,0,1,3.491,13.7l-14.824,24.921a10.015,10.015,0,0,1-13.715,3.489L127.871,417.535a9.987,9.987,0,0,1-3.491-13.7l14.825-24.921A10.014,10.014,0,0,1,152.919,375.428Z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z"/></svg>

After

Width:  |  Height:  |  Size: 311 B

BIN
app/assets/images/clock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 480 480" style="enable-background:new 0 0 480 480;" xml:space="preserve">
<g>
<g>
<path d="M56,416c-30.872,0-56,25.128-56,56c0,4.424,3.576,8,8,8h96c4.424,0,8-3.576,8-8C112,441.128,86.872,416,56,416z
M16.808,464C19.992,448.36,32.36,436.072,48,432.88V448h16v-15.12c15.64,3.2,28.008,15.48,31.192,31.12H16.808z"/>
</g>
</g>
<g>
<g>
<path d="M472,344h-14.032c-0.44-1.112-0.896-2.216-1.392-3.328l9.928-9.928c3.128-3.128,3.128-8.184,0-11.312l-33.936-33.936
c-1.656-1.656-3.84-2.376-6.008-2.272C439.24,276.496,448,263.32,448,248V40c0-22.056-17.944-40-40-40H40C17.944,0,0,17.944,0,40
v208c0,22.056,17.944,40,40,40h104.4l-30.224,56H112h-12c-15.44,0-28,12.56-28,28s12.56,28,28,28h172c0,4.424,3.576,8,8,8h14.032
c0.44,1.112,0.896,2.216,1.392,3.328l-9.928,9.928c-3.128,3.128-3.128,8.184,0,11.312l33.936,33.936
c3.128,3.128,8.184,3.128,11.312,0l9.928-9.928c1.112,0.496,2.216,0.952,3.328,1.392V472c0,4.424,3.576,8,8,8h48
c4.424,0,8-3.576,8-8v-14.032c1.112-0.44,2.216-0.896,3.328-1.392l9.928,9.928c3.128,3.128,8.184,3.128,11.312,0l33.936-33.936
c3.128-3.128,3.128-8.184,0-11.312l-9.928-9.928c0.496-1.112,0.952-2.216,1.392-3.328H472c4.424,0,8-3.576,8-8v-48
C480,347.576,476.424,344,472,344z M16,40c0-13.232,10.768-24,24-24h368c13.232,0,24,10.768,24,24v168H16V40z M40,272
c-13.232,0-24-10.768-24-24v-24h416v24c0,13.232-10.768,24-24,24h-8h-48h-61.808H157.808H40z M421.152,285.6l-9.824,9.824
c-1.112-0.496-2.216-0.952-3.328-1.392V288C412.632,288,417.008,287.056,421.152,285.6z M344,288v6.032
c-1.112,0.44-2.216,0.896-3.328,1.392L333.248,288H344z M316.92,288l-6.896,6.896L305.328,288H316.92z M272,384H100
c-6.616,0-12-5.384-12-12c0-6.616,5.384-12,12-12h12h6.944H272V384z M132.356,343.992L162.576,288h123.392l12.544,18.408
l-13.016,13.016c-3.128,3.128-3.128,8.184,0,11.312l9.928,9.928c-0.496,1.112-0.952,2.216-1.392,3.328H280H132.356z M464,392
h-11.672c-3.496,0-6.576,2.264-7.632,5.592c-1.216,3.864-2.856,7.8-4.88,11.672c-1.616,3.104-1.032,6.888,1.44,9.36l8.288,8.288
l-22.624,22.624l-8.288-8.288c-2.48-2.472-6.256-3.048-9.36-1.44c-3.872,2.024-7.808,3.664-11.672,4.88
c-3.336,1.064-5.6,4.144-5.6,7.64V464h-32v-11.672c0-3.496-2.264-6.576-5.592-7.632c-3.864-1.216-7.8-2.856-11.672-4.88
c-3.104-1.608-6.888-1.032-9.36,1.44l-8.288,8.288l-22.624-22.624l8.288-8.288c2.472-2.472,3.056-6.256,1.44-9.36
c-2.024-3.872-3.664-7.808-4.88-11.672c-1.064-3.336-4.144-5.6-7.64-5.6H288v-32h11.672c3.496,0,6.576-2.264,7.632-5.592
c1.216-3.864,2.856-7.8,4.88-11.672c1.616-3.104,1.032-6.888-1.44-9.36l-8.288-8.288l22.624-22.624l8.288,8.288
c2.472,2.48,6.256,3.056,9.36,1.44c3.872-2.024,7.808-3.664,11.672-4.88c3.336-1.064,5.6-4.144,5.6-7.64V288h32v11.672
c0,3.496,2.264,6.576,5.592,7.632c3.864,1.216,7.8,2.856,11.672,4.88c3.104,1.616,6.88,1.04,9.36-1.44l8.288-8.288l22.624,22.624
l-8.288,8.288c-2.472,2.472-3.056,6.256-1.44,9.36c2.024,3.872,3.664,7.808,4.88,11.672c1.064,3.336,4.144,5.6,7.64,5.6H464V392z"
/>
</g>
</g>
<g>
<g>
<path d="M376,328c-26.472,0-48,21.528-48,48s21.528,48,48,48s48-21.528,48-48S402.472,328,376,328z M376,408
c-17.648,0-32-14.352-32-32s14.352-32,32-32s32,14.352,32,32S393.648,408,376,408z"/>
</g>
</g>
<g>
<g>
<path d="M157.656,61.656l-11.312-11.312l-56,56c-3.128,3.128-3.128,8.184,0,11.312l56,56l11.312-11.312L107.312,112
L157.656,61.656z"/>
</g>
</g>
<g>
<g>
<path d="M333.656,106.344l-56-56l-11.312,11.312L316.688,112l-50.344,50.344l11.312,11.312l56-56
C336.784,114.528,336.784,109.472,333.656,106.344z"/>
</g>
</g>
<g>
<g>
<rect x="131.509" y="96.019" transform="matrix(0.4472 -0.8944 0.8944 0.4472 24.1457 247.1068)" width="160.955" height="16"/>
</g>
</g>
<g>
<g>
<rect x="312" y="160" width="16" height="16"/>
</g>
</g>
<g>
<g>
<rect x="344" y="160" width="16" height="16"/>
</g>
</g>
<g>
<g>
<rect x="376" y="160" width="16" height="16"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 333.842 333.842" style="enable-background:new 0 0 333.842 333.842;" xml:space="preserve">
<g>
<path d="M166.911,333.842C74.879,333.842,0,258.963,0,166.918C0,74.885,74.873,0,166.911,0
c92.045,0,166.931,74.879,166.931,166.918C333.835,258.963,258.956,333.842,166.911,333.842z M166.911,12.86
c-84.95,0-154.058,69.114-154.058,154.064c0,84.956,69.108,154.07,154.058,154.07c84.956,0,154.077-69.114,154.077-154.07
C320.982,81.974,251.868,12.86,166.911,12.86z M234.74,252.87c15.945-5.977,29.024-17.59,36.819-32.713
c2.442-4.724,0.585-10.546-4.152-12.989c-4.724-2.436-10.54-0.591-12.989,4.152c-5.604,10.855-15,19.197-26.459,23.496
c-11.485,4.325-24.088,4.21-35.483-0.315c-4.942-1.967-10.553,0.456-12.513,5.411c-1.967,4.949,0.456,10.553,5.411,12.513
c8.124,3.22,16.684,4.833,25.251,4.833C218.789,257.26,226.957,255.801,234.74,252.87z M237.639,99.475
c-24.428,0-47.321,10.077-68.915,9.068c-0.559-0.039-1.163-0.051-1.806-0.045c-0.643-0.006-1.24,0.006-1.812,0.045
c-21.575,1.009-44.474-9.068-68.902-9.068c-24.531,0-49.506,7.963-49.506,7.963v12.172c0,0,6.189,5.116,7.738,9.216
c1.542,4.094,8.554,32.366,13.259,37.713c4.704,5.347,7.963,16.253,38.227,15.964c43.105-1.028,51.479-45.631,53.047-51.53
c0.945-4.004,5.135-3.798,7.95-3.863c2.821,0.064,7.018-0.141,7.95,3.863c1.575,5.9,9.949,50.496,53.041,51.53
c30.277,0.289,33.542-10.617,38.233-15.964s11.71-33.619,13.259-37.713c1.542-4.1,7.738-9.216,7.738-9.216v-12.172
C287.145,107.437,262.163,99.475,237.639,99.475z"/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1 @@
<svg version="1" xmlns="http://www.w3.org/2000/svg" width="836" height="410.667" viewBox="0 0 627.000000 308.000000"/>

After

Width:  |  Height:  |  Size: 118 B

View file

@ -0,0 +1 @@
<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 293 180"><path d="M81 1782 c-19 -9 -44 -30 -55 -45 -21 -28 -21 -35 -21 -837 0 -802 0 -809 21 -837 11 -15 36 -36 55 -45 32 -17 118 -18 1384 -18 1266 0 1352 1 1384 18 19 9 44 30 55 45 21 28 21 35 21 837 0 802 0 809 -21 837 -11 15 -36 36 -55 45 -32 17 -118 18 -1384 18 -1266 0 -1352 -1 -1384 -18z m814 -409 c50 -26 118 -98 142 -150 16 -34 18 -71 18 -348 0 -294 -1 -312 -21 -356 -31 -66 -78 -114 -142 -146 -56 -27 -61 -28 -259 -31 l-203 -4 0 532 0 531 213 -3 c195 -3 215 -5 252 -25z m795 -83 l0 -110 -165 0 -165 0 0 -100 0 -100 100 0 100 0 0 -110 0 -110 -100 0 -100 0 0 -100 0 -100 165 0 165 0 0 -110 0 -110 -225 0 c-248 0 -260 2 -309 60 l-26 32 0 434 c0 480 -1 476 63 514 29 18 52 20 265 20 l232 0 0 -110z m381 -194 c43 -164 80 -303 81 -308 2 -5 39 129 83 297 43 169 84 309 90 311 6 3 63 3 126 2 l116 -3 -123 -462 c-67 -253 -128 -472 -134 -485 -47 -90 -145 -132 -219 -94 -35 19 -83 73 -99 112 -6 16 -64 227 -128 468 -64 242 -118 446 -121 453 -4 11 18 13 123 11 l128 -3 77 -299z" transform="matrix(.1 0 0 -.1 0 180)"/><path d="M660 870 l0 -310 45 0 c52 0 99 21 115 49 6 12 10 116 10 266 l0 247 -29 29 c-26 25 -37 29 -85 29 l-56 0 0 -310z" transform="matrix(.1 0 0 -.1 0 180)"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Some files were not shown because too many files have changed in this diff Show more