Merge branch 'main' into glitch-soc/merge-upstream
Conflicts: - `config/environments/production.rb`: Upstream changed a header but we had different default headers. Applied the same change, and also dropped HSTS headers redundant with Rails'.remotes/1727458204337373841/tmp_refs/heads/signup-info-prompt
commit
ad6ddb9bdd
12
Gemfile
12
Gemfile
|
@ -26,12 +26,12 @@ gem 'blurhash', '~> 0.1'
|
||||||
|
|
||||||
gem 'active_model_serializers', '~> 0.10'
|
gem 'active_model_serializers', '~> 0.10'
|
||||||
gem 'addressable', '~> 2.8'
|
gem 'addressable', '~> 2.8'
|
||||||
gem 'bootsnap', '~> 1.10.1', require: false
|
gem 'bootsnap', '~> 1.10.2', require: false
|
||||||
gem 'browser'
|
gem 'browser'
|
||||||
gem 'charlock_holmes', '~> 0.7.7'
|
gem 'charlock_holmes', '~> 0.7.7'
|
||||||
gem 'iso-639'
|
gem 'iso-639'
|
||||||
gem 'chewy', '~> 7.2'
|
gem 'chewy', '~> 7.2'
|
||||||
gem 'cld3', '~> 3.4.3'
|
gem 'cld3', '~> 3.4.4'
|
||||||
gem 'devise', '~> 4.8'
|
gem 'devise', '~> 4.8'
|
||||||
gem 'devise-two-factor', '~> 4.0'
|
gem 'devise-two-factor', '~> 4.0'
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ gem 'rqrcode', '~> 2.1'
|
||||||
gem 'ruby-progressbar', '~> 1.11'
|
gem 'ruby-progressbar', '~> 1.11'
|
||||||
gem 'sanitize', '~> 6.0'
|
gem 'sanitize', '~> 6.0'
|
||||||
gem 'scenic', '~> 1.5'
|
gem 'scenic', '~> 1.5'
|
||||||
gem 'sidekiq', '~> 6.3'
|
gem 'sidekiq', '~> 6.4'
|
||||||
gem 'sidekiq-scheduler', '~> 3.1'
|
gem 'sidekiq-scheduler', '~> 3.1'
|
||||||
gem 'sidekiq-unique-jobs', '~> 7.1'
|
gem 'sidekiq-unique-jobs', '~> 7.1'
|
||||||
gem 'sidekiq-bulk', '~>0.2.0'
|
gem 'sidekiq-bulk', '~>0.2.0'
|
||||||
|
@ -96,13 +96,13 @@ gem 'webpush', '~> 0.3'
|
||||||
gem 'webauthn', '~> 3.0.0.alpha1'
|
gem 'webauthn', '~> 3.0.0.alpha1'
|
||||||
|
|
||||||
gem 'json-ld'
|
gem 'json-ld'
|
||||||
gem 'json-ld-preloaded', '~> 3.1'
|
gem 'json-ld-preloaded', '~> 3.2'
|
||||||
gem 'rdf-normalize', '~> 0.4'
|
gem 'rdf-normalize', '~> 0.4'
|
||||||
|
|
||||||
gem 'redcarpet', '~> 3.5'
|
gem 'redcarpet', '~> 3.5'
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
gem 'fabrication', '~> 2.23'
|
gem 'fabrication', '~> 2.24'
|
||||||
gem 'fuubar', '~> 2.5'
|
gem 'fuubar', '~> 2.5'
|
||||||
gem 'i18n-tasks', '~> 0.9', require: false
|
gem 'i18n-tasks', '~> 0.9', require: false
|
||||||
gem 'pry-byebug', '~> 3.9'
|
gem 'pry-byebug', '~> 3.9'
|
||||||
|
@ -135,7 +135,7 @@ group :development do
|
||||||
gem 'letter_opener', '~> 1.7'
|
gem 'letter_opener', '~> 1.7'
|
||||||
gem 'letter_opener_web', '~> 2.0'
|
gem 'letter_opener_web', '~> 2.0'
|
||||||
gem 'memory_profiler'
|
gem 'memory_profiler'
|
||||||
gem 'rubocop', '~> 1.24', require: false
|
gem 'rubocop', '~> 1.25', require: false
|
||||||
gem 'rubocop-rails', '~> 2.13', require: false
|
gem 'rubocop-rails', '~> 2.13', require: false
|
||||||
gem 'brakeman', '~> 5.2', require: false
|
gem 'brakeman', '~> 5.2', require: false
|
||||||
gem 'bundler-audit', '~> 0.9', require: false
|
gem 'bundler-audit', '~> 0.9', require: false
|
||||||
|
|
148
Gemfile.lock
148
Gemfile.lock
|
@ -1,40 +1,40 @@
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
actioncable (6.1.4.1)
|
actioncable (6.1.4.4)
|
||||||
actionpack (= 6.1.4.1)
|
actionpack (= 6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
websocket-driver (>= 0.6.1)
|
websocket-driver (>= 0.6.1)
|
||||||
actionmailbox (6.1.4.1)
|
actionmailbox (6.1.4.4)
|
||||||
actionpack (= 6.1.4.1)
|
actionpack (= 6.1.4.4)
|
||||||
activejob (= 6.1.4.1)
|
activejob (= 6.1.4.4)
|
||||||
activerecord (= 6.1.4.1)
|
activerecord (= 6.1.4.4)
|
||||||
activestorage (= 6.1.4.1)
|
activestorage (= 6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
mail (>= 2.7.1)
|
mail (>= 2.7.1)
|
||||||
actionmailer (6.1.4.1)
|
actionmailer (6.1.4.4)
|
||||||
actionpack (= 6.1.4.1)
|
actionpack (= 6.1.4.4)
|
||||||
actionview (= 6.1.4.1)
|
actionview (= 6.1.4.4)
|
||||||
activejob (= 6.1.4.1)
|
activejob (= 6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
mail (~> 2.5, >= 2.5.4)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
actionpack (6.1.4.1)
|
actionpack (6.1.4.4)
|
||||||
actionview (= 6.1.4.1)
|
actionview (= 6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
rack (~> 2.0, >= 2.0.9)
|
rack (~> 2.0, >= 2.0.9)
|
||||||
rack-test (>= 0.6.3)
|
rack-test (>= 0.6.3)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
||||||
actiontext (6.1.4.1)
|
actiontext (6.1.4.4)
|
||||||
actionpack (= 6.1.4.1)
|
actionpack (= 6.1.4.4)
|
||||||
activerecord (= 6.1.4.1)
|
activerecord (= 6.1.4.4)
|
||||||
activestorage (= 6.1.4.1)
|
activestorage (= 6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
nokogiri (>= 1.8.5)
|
nokogiri (>= 1.8.5)
|
||||||
actionview (6.1.4.1)
|
actionview (6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubi (~> 1.4)
|
erubi (~> 1.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
|
@ -45,22 +45,22 @@ GEM
|
||||||
case_transform (>= 0.2)
|
case_transform (>= 0.2)
|
||||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||||
active_record_query_trace (1.8)
|
active_record_query_trace (1.8)
|
||||||
activejob (6.1.4.1)
|
activejob (6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
activemodel (6.1.4.1)
|
activemodel (6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
activerecord (6.1.4.1)
|
activerecord (6.1.4.4)
|
||||||
activemodel (= 6.1.4.1)
|
activemodel (= 6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
activestorage (6.1.4.1)
|
activestorage (6.1.4.4)
|
||||||
actionpack (= 6.1.4.1)
|
actionpack (= 6.1.4.4)
|
||||||
activejob (= 6.1.4.1)
|
activejob (= 6.1.4.4)
|
||||||
activerecord (= 6.1.4.1)
|
activerecord (= 6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
marcel (~> 1.0.0)
|
marcel (~> 1.0.0)
|
||||||
mini_mime (>= 1.1.0)
|
mini_mime (>= 1.1.0)
|
||||||
activesupport (6.1.4.1)
|
activesupport (6.1.4.4)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (>= 1.6, < 2)
|
i18n (>= 1.6, < 2)
|
||||||
minitest (>= 5.1)
|
minitest (>= 5.1)
|
||||||
|
@ -79,8 +79,8 @@ GEM
|
||||||
encryptor (~> 3.0.0)
|
encryptor (~> 3.0.0)
|
||||||
awrence (1.1.1)
|
awrence (1.1.1)
|
||||||
aws-eventstream (1.2.0)
|
aws-eventstream (1.2.0)
|
||||||
aws-partitions (1.547.0)
|
aws-partitions (1.549.0)
|
||||||
aws-sdk-core (3.125.1)
|
aws-sdk-core (3.125.5)
|
||||||
aws-eventstream (~> 1, >= 1.0.2)
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
aws-partitions (~> 1, >= 1.525.0)
|
aws-partitions (~> 1, >= 1.525.0)
|
||||||
aws-sigv4 (~> 1.1)
|
aws-sigv4 (~> 1.1)
|
||||||
|
@ -88,7 +88,7 @@ GEM
|
||||||
aws-sdk-kms (1.53.0)
|
aws-sdk-kms (1.53.0)
|
||||||
aws-sdk-core (~> 3, >= 3.125.0)
|
aws-sdk-core (~> 3, >= 3.125.0)
|
||||||
aws-sigv4 (~> 1.1)
|
aws-sigv4 (~> 1.1)
|
||||||
aws-sdk-s3 (1.111.1)
|
aws-sdk-s3 (1.111.3)
|
||||||
aws-sdk-core (~> 3, >= 3.125.0)
|
aws-sdk-core (~> 3, >= 3.125.0)
|
||||||
aws-sdk-kms (~> 1)
|
aws-sdk-kms (~> 1)
|
||||||
aws-sigv4 (~> 1.4)
|
aws-sigv4 (~> 1.4)
|
||||||
|
@ -104,7 +104,7 @@ GEM
|
||||||
debug_inspector (>= 0.0.1)
|
debug_inspector (>= 0.0.1)
|
||||||
blurhash (0.1.5)
|
blurhash (0.1.5)
|
||||||
ffi (~> 1.14)
|
ffi (~> 1.14)
|
||||||
bootsnap (1.10.1)
|
bootsnap (1.10.2)
|
||||||
msgpack (~> 1.2)
|
msgpack (~> 1.2)
|
||||||
brakeman (5.2.0)
|
brakeman (5.2.0)
|
||||||
browser (4.2.0)
|
browser (4.2.0)
|
||||||
|
@ -152,7 +152,7 @@ GEM
|
||||||
elasticsearch (>= 7.12.0, < 7.14.0)
|
elasticsearch (>= 7.12.0, < 7.14.0)
|
||||||
elasticsearch-dsl
|
elasticsearch-dsl
|
||||||
chunky_png (1.4.0)
|
chunky_png (1.4.0)
|
||||||
cld3 (3.4.3)
|
cld3 (3.4.4)
|
||||||
ffi (>= 1.1.0, < 1.16.0)
|
ffi (>= 1.1.0, < 1.16.0)
|
||||||
climate_control (0.2.0)
|
climate_control (0.2.0)
|
||||||
coderay (1.1.3)
|
coderay (1.1.3)
|
||||||
|
@ -211,7 +211,7 @@ GEM
|
||||||
et-orbi (1.2.4)
|
et-orbi (1.2.4)
|
||||||
tzinfo
|
tzinfo
|
||||||
excon (0.76.0)
|
excon (0.76.0)
|
||||||
fabrication (2.23.1)
|
fabrication (2.24.0)
|
||||||
faker (2.19.0)
|
faker (2.19.0)
|
||||||
i18n (>= 1.6, < 2)
|
i18n (>= 1.6, < 2)
|
||||||
faraday (1.8.0)
|
faraday (1.8.0)
|
||||||
|
@ -235,7 +235,7 @@ GEM
|
||||||
faraday-rack (1.0.0)
|
faraday-rack (1.0.0)
|
||||||
fast_blank (1.0.1)
|
fast_blank (1.0.1)
|
||||||
fastimage (2.2.6)
|
fastimage (2.2.6)
|
||||||
ffi (1.15.4)
|
ffi (1.15.5)
|
||||||
ffi-compiler (1.0.1)
|
ffi-compiler (1.0.1)
|
||||||
ffi (>= 1.0.0)
|
ffi (>= 1.0.0)
|
||||||
rake
|
rake
|
||||||
|
@ -258,7 +258,7 @@ GEM
|
||||||
fuubar (2.5.1)
|
fuubar (2.5.1)
|
||||||
rspec-core (~> 3.0)
|
rspec-core (~> 3.0)
|
||||||
ruby-progressbar (~> 1.4)
|
ruby-progressbar (~> 1.4)
|
||||||
globalid (0.5.2)
|
globalid (1.0.0)
|
||||||
activesupport (>= 5.0)
|
activesupport (>= 5.0)
|
||||||
hamlit (2.13.0)
|
hamlit (2.13.0)
|
||||||
temple (>= 0.8.2)
|
temple (>= 0.8.2)
|
||||||
|
@ -314,9 +314,9 @@ GEM
|
||||||
multi_json (~> 1.15)
|
multi_json (~> 1.15)
|
||||||
rack (~> 2.2)
|
rack (~> 2.2)
|
||||||
rdf (~> 3.2)
|
rdf (~> 3.2)
|
||||||
json-ld-preloaded (3.1.6)
|
json-ld-preloaded (3.2.0)
|
||||||
json-ld (~> 3.1)
|
json-ld (~> 3.2)
|
||||||
rdf (~> 3.1)
|
rdf (~> 3.2)
|
||||||
jsonapi-renderer (0.2.2)
|
jsonapi-renderer (0.2.2)
|
||||||
jwt (2.2.2)
|
jwt (2.2.2)
|
||||||
kaminari (1.2.2)
|
kaminari (1.2.2)
|
||||||
|
@ -377,7 +377,7 @@ GEM
|
||||||
mini_mime (1.1.2)
|
mini_mime (1.1.2)
|
||||||
mini_portile2 (2.7.1)
|
mini_portile2 (2.7.1)
|
||||||
minitest (5.15.0)
|
minitest (5.15.0)
|
||||||
msgpack (1.4.2)
|
msgpack (1.4.4)
|
||||||
multi_json (1.15.0)
|
multi_json (1.15.0)
|
||||||
multipart-post (2.1.1)
|
multipart-post (2.1.1)
|
||||||
net-ldap (0.17.0)
|
net-ldap (0.17.0)
|
||||||
|
@ -454,20 +454,20 @@ GEM
|
||||||
rack
|
rack
|
||||||
rack-test (1.1.0)
|
rack-test (1.1.0)
|
||||||
rack (>= 1.0, < 3)
|
rack (>= 1.0, < 3)
|
||||||
rails (6.1.4.1)
|
rails (6.1.4.4)
|
||||||
actioncable (= 6.1.4.1)
|
actioncable (= 6.1.4.4)
|
||||||
actionmailbox (= 6.1.4.1)
|
actionmailbox (= 6.1.4.4)
|
||||||
actionmailer (= 6.1.4.1)
|
actionmailer (= 6.1.4.4)
|
||||||
actionpack (= 6.1.4.1)
|
actionpack (= 6.1.4.4)
|
||||||
actiontext (= 6.1.4.1)
|
actiontext (= 6.1.4.4)
|
||||||
actionview (= 6.1.4.1)
|
actionview (= 6.1.4.4)
|
||||||
activejob (= 6.1.4.1)
|
activejob (= 6.1.4.4)
|
||||||
activemodel (= 6.1.4.1)
|
activemodel (= 6.1.4.4)
|
||||||
activerecord (= 6.1.4.1)
|
activerecord (= 6.1.4.4)
|
||||||
activestorage (= 6.1.4.1)
|
activestorage (= 6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
bundler (>= 1.15.0)
|
bundler (>= 1.15.0)
|
||||||
railties (= 6.1.4.1)
|
railties (= 6.1.4.4)
|
||||||
sprockets-rails (>= 2.0.0)
|
sprockets-rails (>= 2.0.0)
|
||||||
rails-controller-testing (1.0.5)
|
rails-controller-testing (1.0.5)
|
||||||
actionpack (>= 5.0.1.rc1)
|
actionpack (>= 5.0.1.rc1)
|
||||||
|
@ -483,9 +483,9 @@ GEM
|
||||||
railties (>= 6.0.0, < 7)
|
railties (>= 6.0.0, < 7)
|
||||||
rails-settings-cached (0.6.6)
|
rails-settings-cached (0.6.6)
|
||||||
rails (>= 4.2.0)
|
rails (>= 4.2.0)
|
||||||
railties (6.1.4.1)
|
railties (6.1.4.4)
|
||||||
actionpack (= 6.1.4.1)
|
actionpack (= 6.1.4.4)
|
||||||
activesupport (= 6.1.4.1)
|
activesupport (= 6.1.4.4)
|
||||||
method_source
|
method_source
|
||||||
rake (>= 0.13)
|
rake (>= 0.13)
|
||||||
thor (~> 1.0)
|
thor (~> 1.0)
|
||||||
|
@ -534,9 +534,9 @@ GEM
|
||||||
rspec-support (3.10.3)
|
rspec-support (3.10.3)
|
||||||
rspec_junit_formatter (0.5.1)
|
rspec_junit_formatter (0.5.1)
|
||||||
rspec-core (>= 2, < 4, != 2.12.0)
|
rspec-core (>= 2, < 4, != 2.12.0)
|
||||||
rubocop (1.24.1)
|
rubocop (1.25.0)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
parser (>= 3.0.0.0)
|
parser (>= 3.1.0.0)
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
regexp_parser (>= 1.8, < 3.0)
|
regexp_parser (>= 1.8, < 3.0)
|
||||||
rexml
|
rexml
|
||||||
|
@ -566,7 +566,7 @@ GEM
|
||||||
railties (>= 4.0.0)
|
railties (>= 4.0.0)
|
||||||
securecompare (1.0.0)
|
securecompare (1.0.0)
|
||||||
semantic_range (3.0.0)
|
semantic_range (3.0.0)
|
||||||
sidekiq (6.3.1)
|
sidekiq (6.4.0)
|
||||||
connection_pool (>= 2.2.2)
|
connection_pool (>= 2.2.2)
|
||||||
rack (~> 2.0)
|
rack (~> 2.0)
|
||||||
redis (>= 4.2.0)
|
redis (>= 4.2.0)
|
||||||
|
@ -689,7 +689,7 @@ DEPENDENCIES
|
||||||
better_errors (~> 2.9)
|
better_errors (~> 2.9)
|
||||||
binding_of_caller (~> 1.0)
|
binding_of_caller (~> 1.0)
|
||||||
blurhash (~> 0.1)
|
blurhash (~> 0.1)
|
||||||
bootsnap (~> 1.10.1)
|
bootsnap (~> 1.10.2)
|
||||||
brakeman (~> 5.2)
|
brakeman (~> 5.2)
|
||||||
browser
|
browser
|
||||||
bullet (~> 7.0)
|
bullet (~> 7.0)
|
||||||
|
@ -701,7 +701,7 @@ DEPENDENCIES
|
||||||
capybara (~> 3.36)
|
capybara (~> 3.36)
|
||||||
charlock_holmes (~> 0.7.7)
|
charlock_holmes (~> 0.7.7)
|
||||||
chewy (~> 7.2)
|
chewy (~> 7.2)
|
||||||
cld3 (~> 3.4.3)
|
cld3 (~> 3.4.4)
|
||||||
climate_control (~> 0.2)
|
climate_control (~> 0.2)
|
||||||
color_diff (~> 0.1)
|
color_diff (~> 0.1)
|
||||||
concurrent-ruby
|
concurrent-ruby
|
||||||
|
@ -713,7 +713,7 @@ DEPENDENCIES
|
||||||
doorkeeper (~> 5.5)
|
doorkeeper (~> 5.5)
|
||||||
dotenv-rails (~> 2.7)
|
dotenv-rails (~> 2.7)
|
||||||
ed25519 (~> 1.3)
|
ed25519 (~> 1.3)
|
||||||
fabrication (~> 2.23)
|
fabrication (~> 2.24)
|
||||||
faker (~> 2.19)
|
faker (~> 2.19)
|
||||||
fast_blank (~> 1.0)
|
fast_blank (~> 1.0)
|
||||||
fastimage
|
fastimage
|
||||||
|
@ -731,7 +731,7 @@ DEPENDENCIES
|
||||||
idn-ruby
|
idn-ruby
|
||||||
iso-639
|
iso-639
|
||||||
json-ld
|
json-ld
|
||||||
json-ld-preloaded (~> 3.1)
|
json-ld-preloaded (~> 3.2)
|
||||||
kaminari (~> 1.2)
|
kaminari (~> 1.2)
|
||||||
kt-paperclip (~> 7.0)
|
kt-paperclip (~> 7.0)
|
||||||
letter_opener (~> 1.7)
|
letter_opener (~> 1.7)
|
||||||
|
@ -779,12 +779,12 @@ DEPENDENCIES
|
||||||
rspec-rails (~> 5.0)
|
rspec-rails (~> 5.0)
|
||||||
rspec-sidekiq (~> 3.1)
|
rspec-sidekiq (~> 3.1)
|
||||||
rspec_junit_formatter (~> 0.5)
|
rspec_junit_formatter (~> 0.5)
|
||||||
rubocop (~> 1.24)
|
rubocop (~> 1.25)
|
||||||
rubocop-rails (~> 2.13)
|
rubocop-rails (~> 2.13)
|
||||||
ruby-progressbar (~> 1.11)
|
ruby-progressbar (~> 1.11)
|
||||||
sanitize (~> 6.0)
|
sanitize (~> 6.0)
|
||||||
scenic (~> 1.5)
|
scenic (~> 1.5)
|
||||||
sidekiq (~> 6.3)
|
sidekiq (~> 6.4)
|
||||||
sidekiq-bulk (~> 0.2.0)
|
sidekiq-bulk (~> 0.2.0)
|
||||||
sidekiq-scheduler (~> 3.1)
|
sidekiq-scheduler (~> 3.1)
|
||||||
sidekiq-unique-jobs (~> 7.1)
|
sidekiq-unique-jobs (~> 7.1)
|
||||||
|
|
|
@ -64,6 +64,8 @@ module ApplicationHelper
|
||||||
def link_to_login(name = nil, html_options = nil, &block)
|
def link_to_login(name = nil, html_options = nil, &block)
|
||||||
target = new_user_session_path
|
target = new_user_session_path
|
||||||
|
|
||||||
|
html_options = name if block_given?
|
||||||
|
|
||||||
if omniauth_only? && Devise.mappings[:user].omniauthable? && User.omniauth_providers.size == 1
|
if omniauth_only? && Devise.mappings[:user].omniauthable? && User.omniauth_providers.size == 1
|
||||||
target = omniauth_authorize_path(:user, User.omniauth_providers[0])
|
target = omniauth_authorize_path(:user, User.omniauth_providers[0])
|
||||||
html_options ||= {}
|
html_options ||= {}
|
||||||
|
|
|
@ -10,6 +10,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||||
@status = status
|
@status = status
|
||||||
@account = status.account
|
@account = status.account
|
||||||
@media_attachments_changed = false
|
@media_attachments_changed = false
|
||||||
|
@poll_changed = false
|
||||||
|
|
||||||
# Only native types can be updated at the moment
|
# Only native types can be updated at the moment
|
||||||
return if !expected_type? || already_updated_more_recently?
|
return if !expected_type? || already_updated_more_recently?
|
||||||
|
@ -27,6 +28,9 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
queue_poll_notifications!
|
queue_poll_notifications!
|
||||||
|
|
||||||
|
next unless significant_changes?
|
||||||
|
|
||||||
reset_preview_card!
|
reset_preview_card!
|
||||||
broadcast_updates!
|
broadcast_updates!
|
||||||
else
|
else
|
||||||
|
@ -92,7 +96,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||||
# If for some reasons the options were changed, it invalidates all previous
|
# If for some reasons the options were changed, it invalidates all previous
|
||||||
# votes, so we need to remove them
|
# votes, so we need to remove them
|
||||||
if poll_parser.significantly_changes?(poll)
|
if poll_parser.significantly_changes?(poll)
|
||||||
@media_attachments_changed = true
|
@poll_changed = true
|
||||||
poll.votes.delete_all unless poll.new_record?
|
poll.votes.delete_all unless poll.new_record?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -107,7 +111,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||||
@status.poll_id = poll.id
|
@status.poll_id = poll.id
|
||||||
elsif previous_poll.present?
|
elsif previous_poll.present?
|
||||||
previous_poll.destroy!
|
previous_poll.destroy!
|
||||||
@media_attachments_changed = true
|
@poll_changed = true
|
||||||
@status.poll_id = nil
|
@status.poll_id = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -117,7 +121,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||||
@status.spoiler_text = @status_parser.spoiler_text || ''
|
@status.spoiler_text = @status_parser.spoiler_text || ''
|
||||||
@status.sensitive = @account.sensitized? || @status_parser.sensitive || false
|
@status.sensitive = @account.sensitized? || @status_parser.sensitive || false
|
||||||
@status.language = @status_parser.language || detected_language
|
@status.language = @status_parser.language || detected_language
|
||||||
@status.edited_at = @status_parser.edited_at || Time.now.utc
|
@status.edited_at = @status_parser.edited_at || Time.now.utc if significant_changes?
|
||||||
|
|
||||||
@status.save!
|
@status.save!
|
||||||
end
|
end
|
||||||
|
@ -227,12 +231,12 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_edit!
|
def create_edit!
|
||||||
return unless @status.text_previously_changed? || @status.spoiler_text_previously_changed? || @media_attachments_changed
|
return unless significant_changes?
|
||||||
|
|
||||||
@status_edit = @status.edits.create(
|
@status_edit = @status.edits.create(
|
||||||
text: @status.text,
|
text: @status.text,
|
||||||
spoiler_text: @status.spoiler_text,
|
spoiler_text: @status.spoiler_text,
|
||||||
media_attachments_changed: @media_attachments_changed,
|
media_attachments_changed: @media_attachments_changed || @poll_changed,
|
||||||
account_id: @account.id,
|
account_id: @account.id,
|
||||||
created_at: @status.edited_at
|
created_at: @status.edited_at
|
||||||
)
|
)
|
||||||
|
@ -248,13 +252,17 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||||
mime_type.present? && !MediaAttachment.supported_mime_types.include?(mime_type)
|
mime_type.present? && !MediaAttachment.supported_mime_types.include?(mime_type)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def significant_changes?
|
||||||
|
@status.text_changed? || @status.text_previously_changed? || @status.spoiler_text_changed? || @status.spoiler_text_previously_changed? || @media_attachments_changed || @poll_changed
|
||||||
|
end
|
||||||
|
|
||||||
def already_updated_more_recently?
|
def already_updated_more_recently?
|
||||||
@status.edited_at.present? && @status_parser.edited_at.present? && @status.edited_at > @status_parser.edited_at
|
@status.edited_at.present? && @status_parser.edited_at.present? && @status.edited_at > @status_parser.edited_at
|
||||||
end
|
end
|
||||||
|
|
||||||
def reset_preview_card!
|
def reset_preview_card!
|
||||||
@status.preview_cards.clear if @status.text_previously_changed? || @status.spoiler_text.present?
|
@status.preview_cards.clear
|
||||||
LinkCrawlWorker.perform_in(rand(1..59).seconds, @status.id) if @status.spoiler_text.blank?
|
LinkCrawlWorker.perform_in(rand(1..59).seconds, @status.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def broadcast_updates!
|
def broadcast_updates!
|
||||||
|
|
|
@ -127,7 +127,7 @@ class FanOutOnWriteService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def update?
|
def update?
|
||||||
@is_update
|
@options[:update]
|
||||||
end
|
end
|
||||||
|
|
||||||
def broadcastable?
|
def broadcastable?
|
||||||
|
|
|
@ -118,10 +118,9 @@ Rails.application.configure do
|
||||||
'Server' => 'Mastodon',
|
'Server' => 'Mastodon',
|
||||||
'X-Frame-Options' => 'DENY',
|
'X-Frame-Options' => 'DENY',
|
||||||
'X-Content-Type-Options' => 'nosniff',
|
'X-Content-Type-Options' => 'nosniff',
|
||||||
'X-XSS-Protection' => '1; mode=block',
|
'X-XSS-Protection' => '0',
|
||||||
'Permissions-Policy' => 'interest-cohort=()',
|
'Permissions-Policy' => 'interest-cohort=()',
|
||||||
'Referrer-Policy' => 'same-origin',
|
'Referrer-Policy' => 'same-origin',
|
||||||
'Strict-Transport-Security' => 'max-age=63072000; includeSubDomains; preload',
|
|
||||||
'X-Clacks-Overhead' => 'GNU Natalie Nguyen'
|
'X-Clacks-Overhead' => 'GNU Natalie Nguyen'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,9 @@ services:
|
||||||
- internal_network
|
- internal_network
|
||||||
volumes:
|
volumes:
|
||||||
- ./public/system:/mastodon/public/system
|
- ./public/system:/mastodon/public/system
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "ps aux | grep '[s]idekiq\ 6' || false"]
|
||||||
|
|
||||||
## Uncomment to enable federation with tor instances along with adding the following ENV variables
|
## Uncomment to enable federation with tor instances along with adding the following ENV variables
|
||||||
## http_proxy=http://privoxy:8118
|
## http_proxy=http://privoxy:8118
|
||||||
## ALLOW_ACCESS_TO_HIDDEN_SERVICE=true
|
## ALLOW_ACCESS_TO_HIDDEN_SERVICE=true
|
||||||
|
|
|
@ -61,11 +61,11 @@
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.16.7",
|
"@babel/core": "^7.16.12",
|
||||||
"@babel/plugin-proposal-decorators": "^7.16.7",
|
"@babel/plugin-proposal-decorators": "^7.16.7",
|
||||||
"@babel/plugin-transform-react-inline-elements": "^7.16.7",
|
"@babel/plugin-transform-react-inline-elements": "^7.16.7",
|
||||||
"@babel/plugin-transform-runtime": "^7.16.8",
|
"@babel/plugin-transform-runtime": "^7.16.10",
|
||||||
"@babel/preset-env": "^7.16.8",
|
"@babel/preset-env": "^7.16.11",
|
||||||
"@babel/preset-react": "^7.16.7",
|
"@babel/preset-react": "^7.16.7",
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.16.7",
|
||||||
"@gamestdio/websocket": "^0.3.2",
|
"@gamestdio/websocket": "^0.3.2",
|
||||||
|
@ -155,7 +155,7 @@
|
||||||
"requestidlecallback": "^0.3.0",
|
"requestidlecallback": "^0.3.0",
|
||||||
"reselect": "^4.1.5",
|
"reselect": "^4.1.5",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"sass": "^1.48.0",
|
"sass": "^1.49.0",
|
||||||
"sass-loader": "^10.2.0",
|
"sass-loader": "^10.2.0",
|
||||||
"stacktrace-js": "^2.0.2",
|
"stacktrace-js": "^2.0.2",
|
||||||
"stringz": "^2.1.0",
|
"stringz": "^2.1.0",
|
||||||
|
|
|
@ -4,14 +4,13 @@ RSpec.describe ActivityPub::Activity::Update do
|
||||||
let!(:sender) { Fabricate(:account) }
|
let!(:sender) { Fabricate(:account) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
stub_request(:get, actor_json[:outbox]).to_return(status: 404)
|
|
||||||
stub_request(:get, actor_json[:followers]).to_return(status: 404)
|
|
||||||
stub_request(:get, actor_json[:following]).to_return(status: 404)
|
|
||||||
stub_request(:get, actor_json[:featured]).to_return(status: 404)
|
|
||||||
|
|
||||||
sender.update!(uri: ActivityPub::TagManager.instance.uri_for(sender))
|
sender.update!(uri: ActivityPub::TagManager.instance.uri_for(sender))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
subject { described_class.new(json, sender) }
|
||||||
|
|
||||||
|
describe '#perform' do
|
||||||
|
context 'with an Actor object' do
|
||||||
let(:modified_sender) do
|
let(:modified_sender) do
|
||||||
sender.tap do |modified_sender|
|
sender.tap do |modified_sender|
|
||||||
modified_sender.display_name = 'Totally modified now'
|
modified_sender.display_name = 'Totally modified now'
|
||||||
|
@ -32,10 +31,12 @@ RSpec.describe ActivityPub::Activity::Update do
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#perform' do
|
|
||||||
subject { described_class.new(json, sender) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
stub_request(:get, actor_json[:outbox]).to_return(status: 404)
|
||||||
|
stub_request(:get, actor_json[:followers]).to_return(status: 404)
|
||||||
|
stub_request(:get, actor_json[:following]).to_return(status: 404)
|
||||||
|
stub_request(:get, actor_json[:featured]).to_return(status: 404)
|
||||||
|
|
||||||
subject.perform
|
subject.perform
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -43,4 +44,57 @@ RSpec.describe ActivityPub::Activity::Update do
|
||||||
expect(sender.reload.display_name).to eq 'Totally modified now'
|
expect(sender.reload.display_name).to eq 'Totally modified now'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'with a Question object' do
|
||||||
|
let!(:at_time) { Time.now.utc }
|
||||||
|
let!(:status) { Fabricate(:status, account: sender, poll: Poll.new(account: sender, options: %w(Bar Baz), cached_tallies: [0, 0], expires_at: at_time + 5.days)) }
|
||||||
|
|
||||||
|
let(:json) do
|
||||||
|
{
|
||||||
|
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||||
|
id: 'foo',
|
||||||
|
type: 'Update',
|
||||||
|
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
||||||
|
object: {
|
||||||
|
type: 'Question',
|
||||||
|
id: ActivityPub::TagManager.instance.uri_for(status),
|
||||||
|
content: 'Foo',
|
||||||
|
endTime: (at_time + 5.days).iso8601,
|
||||||
|
oneOf: [
|
||||||
|
{
|
||||||
|
type: 'Note',
|
||||||
|
name: 'Bar',
|
||||||
|
replies: {
|
||||||
|
type: 'Collection',
|
||||||
|
totalItems: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
type: 'Note',
|
||||||
|
name: 'Baz',
|
||||||
|
replies: {
|
||||||
|
type: 'Collection',
|
||||||
|
totalItems: 12,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}.with_indifferent_access
|
||||||
|
end
|
||||||
|
|
||||||
|
before do
|
||||||
|
status.update!(uri: ActivityPub::TagManager.instance.uri_for(status))
|
||||||
|
subject.perform
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'updates poll numbers' do
|
||||||
|
expect(status.preloadable_poll.cached_tallies).to eq [0, 12]
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not set status as edited' do
|
||||||
|
expect(status.edited_at).to be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
166
yarn.lock
166
yarn.lock
|
@ -21,20 +21,20 @@
|
||||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60"
|
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60"
|
||||||
integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==
|
integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==
|
||||||
|
|
||||||
"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.7", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
|
"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.12", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
|
||||||
version "7.16.7"
|
version "7.16.12"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf"
|
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784"
|
||||||
integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==
|
integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/code-frame" "^7.16.7"
|
"@babel/code-frame" "^7.16.7"
|
||||||
"@babel/generator" "^7.16.7"
|
"@babel/generator" "^7.16.8"
|
||||||
"@babel/helper-compilation-targets" "^7.16.7"
|
"@babel/helper-compilation-targets" "^7.16.7"
|
||||||
"@babel/helper-module-transforms" "^7.16.7"
|
"@babel/helper-module-transforms" "^7.16.7"
|
||||||
"@babel/helpers" "^7.16.7"
|
"@babel/helpers" "^7.16.7"
|
||||||
"@babel/parser" "^7.16.7"
|
"@babel/parser" "^7.16.12"
|
||||||
"@babel/template" "^7.16.7"
|
"@babel/template" "^7.16.7"
|
||||||
"@babel/traverse" "^7.16.7"
|
"@babel/traverse" "^7.16.10"
|
||||||
"@babel/types" "^7.16.7"
|
"@babel/types" "^7.16.8"
|
||||||
convert-source-map "^1.7.0"
|
convert-source-map "^1.7.0"
|
||||||
debug "^4.1.0"
|
debug "^4.1.0"
|
||||||
gensync "^1.0.0-beta.2"
|
gensync "^1.0.0-beta.2"
|
||||||
|
@ -42,16 +42,7 @@
|
||||||
semver "^6.3.0"
|
semver "^6.3.0"
|
||||||
source-map "^0.5.0"
|
source-map "^0.5.0"
|
||||||
|
|
||||||
"@babel/generator@^7.16.7", "@babel/generator@^7.7.2":
|
"@babel/generator@^7.16.8", "@babel/generator@^7.7.2":
|
||||||
version "7.16.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb"
|
|
||||||
integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==
|
|
||||||
dependencies:
|
|
||||||
"@babel/types" "^7.16.7"
|
|
||||||
jsesc "^2.5.1"
|
|
||||||
source-map "^0.5.0"
|
|
||||||
|
|
||||||
"@babel/generator@^7.16.8":
|
|
||||||
version "7.16.8"
|
version "7.16.8"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe"
|
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe"
|
||||||
integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==
|
integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==
|
||||||
|
@ -93,6 +84,19 @@
|
||||||
browserslist "^4.17.5"
|
browserslist "^4.17.5"
|
||||||
semver "^6.3.0"
|
semver "^6.3.0"
|
||||||
|
|
||||||
|
"@babel/helper-create-class-features-plugin@^7.16.10":
|
||||||
|
version "7.16.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c"
|
||||||
|
integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-annotate-as-pure" "^7.16.7"
|
||||||
|
"@babel/helper-environment-visitor" "^7.16.7"
|
||||||
|
"@babel/helper-function-name" "^7.16.7"
|
||||||
|
"@babel/helper-member-expression-to-functions" "^7.16.7"
|
||||||
|
"@babel/helper-optimise-call-expression" "^7.16.7"
|
||||||
|
"@babel/helper-replace-supers" "^7.16.7"
|
||||||
|
"@babel/helper-split-export-declaration" "^7.16.7"
|
||||||
|
|
||||||
"@babel/helper-create-class-features-plugin@^7.16.7":
|
"@babel/helper-create-class-features-plugin@^7.16.7":
|
||||||
version "7.16.7"
|
version "7.16.7"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba"
|
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba"
|
||||||
|
@ -312,15 +316,10 @@
|
||||||
chalk "^2.0.0"
|
chalk "^2.0.0"
|
||||||
js-tokens "^4.0.0"
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.7.0":
|
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7", "@babel/parser@^7.7.0":
|
||||||
version "7.16.7"
|
version "7.16.12"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e"
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6"
|
||||||
integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==
|
integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==
|
||||||
|
|
||||||
"@babel/parser@^7.16.8":
|
|
||||||
version "7.16.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.8.tgz#61c243a3875f7d0b0962b0543a33ece6ff2f1f17"
|
|
||||||
integrity sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==
|
|
||||||
|
|
||||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
|
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
|
||||||
version "7.16.7"
|
version "7.16.7"
|
||||||
|
@ -449,12 +448,12 @@
|
||||||
"@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
|
"@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
|
||||||
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
|
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
|
||||||
|
|
||||||
"@babel/plugin-proposal-private-methods@^7.16.7":
|
"@babel/plugin-proposal-private-methods@^7.16.11":
|
||||||
version "7.16.7"
|
version "7.16.11"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50"
|
||||||
integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==
|
integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-create-class-features-plugin" "^7.16.7"
|
"@babel/helper-create-class-features-plugin" "^7.16.10"
|
||||||
"@babel/helper-plugin-utils" "^7.16.7"
|
"@babel/helper-plugin-utils" "^7.16.7"
|
||||||
|
|
||||||
"@babel/plugin-proposal-private-property-in-object@^7.16.7":
|
"@babel/plugin-proposal-private-property-in-object@^7.16.7":
|
||||||
|
@ -848,10 +847,10 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.16.7"
|
"@babel/helper-plugin-utils" "^7.16.7"
|
||||||
|
|
||||||
"@babel/plugin-transform-runtime@^7.16.8":
|
"@babel/plugin-transform-runtime@^7.16.10":
|
||||||
version "7.16.8"
|
version "7.16.10"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.8.tgz#3339368701103edae708f0fba9e4bfb70a3e5872"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz#53d9fd3496daedce1dd99639097fa5d14f4c7c2c"
|
||||||
integrity sha512-6Kg2XHPFnIarNweZxmzbgYnnWsXxkx9WQUVk2sksBRL80lBC1RAQV3wQagWxdCHiYHqPN+oenwNIuttlYgIbQQ==
|
integrity sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-module-imports" "^7.16.7"
|
"@babel/helper-module-imports" "^7.16.7"
|
||||||
"@babel/helper-plugin-utils" "^7.16.7"
|
"@babel/helper-plugin-utils" "^7.16.7"
|
||||||
|
@ -911,10 +910,10 @@
|
||||||
"@babel/helper-create-regexp-features-plugin" "^7.16.7"
|
"@babel/helper-create-regexp-features-plugin" "^7.16.7"
|
||||||
"@babel/helper-plugin-utils" "^7.16.7"
|
"@babel/helper-plugin-utils" "^7.16.7"
|
||||||
|
|
||||||
"@babel/preset-env@^7.16.8":
|
"@babel/preset-env@^7.16.11":
|
||||||
version "7.16.8"
|
version "7.16.11"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.8.tgz#e682fa0bcd1cf49621d64a8956318ddfb9a05af9"
|
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982"
|
||||||
integrity sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==
|
integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/compat-data" "^7.16.8"
|
"@babel/compat-data" "^7.16.8"
|
||||||
"@babel/helper-compilation-targets" "^7.16.7"
|
"@babel/helper-compilation-targets" "^7.16.7"
|
||||||
|
@ -934,7 +933,7 @@
|
||||||
"@babel/plugin-proposal-object-rest-spread" "^7.16.7"
|
"@babel/plugin-proposal-object-rest-spread" "^7.16.7"
|
||||||
"@babel/plugin-proposal-optional-catch-binding" "^7.16.7"
|
"@babel/plugin-proposal-optional-catch-binding" "^7.16.7"
|
||||||
"@babel/plugin-proposal-optional-chaining" "^7.16.7"
|
"@babel/plugin-proposal-optional-chaining" "^7.16.7"
|
||||||
"@babel/plugin-proposal-private-methods" "^7.16.7"
|
"@babel/plugin-proposal-private-methods" "^7.16.11"
|
||||||
"@babel/plugin-proposal-private-property-in-object" "^7.16.7"
|
"@babel/plugin-proposal-private-property-in-object" "^7.16.7"
|
||||||
"@babel/plugin-proposal-unicode-property-regex" "^7.16.7"
|
"@babel/plugin-proposal-unicode-property-regex" "^7.16.7"
|
||||||
"@babel/plugin-syntax-async-generators" "^7.8.4"
|
"@babel/plugin-syntax-async-generators" "^7.8.4"
|
||||||
|
@ -1045,26 +1044,10 @@
|
||||||
"@babel/parser" "^7.16.7"
|
"@babel/parser" "^7.16.7"
|
||||||
"@babel/types" "^7.16.7"
|
"@babel/types" "^7.16.7"
|
||||||
|
|
||||||
"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2":
|
"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2":
|
||||||
version "7.16.7"
|
version "7.16.10"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76"
|
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f"
|
||||||
integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==
|
integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==
|
||||||
dependencies:
|
|
||||||
"@babel/code-frame" "^7.16.7"
|
|
||||||
"@babel/generator" "^7.16.7"
|
|
||||||
"@babel/helper-environment-visitor" "^7.16.7"
|
|
||||||
"@babel/helper-function-name" "^7.16.7"
|
|
||||||
"@babel/helper-hoist-variables" "^7.16.7"
|
|
||||||
"@babel/helper-split-export-declaration" "^7.16.7"
|
|
||||||
"@babel/parser" "^7.16.7"
|
|
||||||
"@babel/types" "^7.16.7"
|
|
||||||
debug "^4.1.0"
|
|
||||||
globals "^11.1.0"
|
|
||||||
|
|
||||||
"@babel/traverse@^7.16.8":
|
|
||||||
version "7.16.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.8.tgz#bab2f2b09a5fe8a8d9cad22cbfe3ba1d126fef9c"
|
|
||||||
integrity sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/code-frame" "^7.16.7"
|
"@babel/code-frame" "^7.16.7"
|
||||||
"@babel/generator" "^7.16.8"
|
"@babel/generator" "^7.16.8"
|
||||||
|
@ -1072,7 +1055,7 @@
|
||||||
"@babel/helper-function-name" "^7.16.7"
|
"@babel/helper-function-name" "^7.16.7"
|
||||||
"@babel/helper-hoist-variables" "^7.16.7"
|
"@babel/helper-hoist-variables" "^7.16.7"
|
||||||
"@babel/helper-split-export-declaration" "^7.16.7"
|
"@babel/helper-split-export-declaration" "^7.16.7"
|
||||||
"@babel/parser" "^7.16.8"
|
"@babel/parser" "^7.16.10"
|
||||||
"@babel/types" "^7.16.8"
|
"@babel/types" "^7.16.8"
|
||||||
debug "^4.1.0"
|
debug "^4.1.0"
|
||||||
globals "^11.1.0"
|
globals "^11.1.0"
|
||||||
|
@ -7027,11 +7010,6 @@ lodash.merge@^4.6.2:
|
||||||
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
|
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
|
||||||
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
||||||
|
|
||||||
lodash.sortby@^4.7.0:
|
|
||||||
version "4.7.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
|
||||||
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
|
|
||||||
|
|
||||||
lodash.truncate@^4.4.2:
|
lodash.truncate@^4.4.2:
|
||||||
version "4.4.2"
|
version "4.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
|
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
|
||||||
|
@ -7423,9 +7401,9 @@ nan@^2.12.1:
|
||||||
integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
|
integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
|
||||||
|
|
||||||
nanoid@^3.1.23:
|
nanoid@^3.1.23:
|
||||||
version "3.1.23"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c"
|
||||||
integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==
|
integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==
|
||||||
|
|
||||||
nanomatch@^1.2.9:
|
nanomatch@^1.2.9:
|
||||||
version "1.2.13"
|
version "1.2.13"
|
||||||
|
@ -7470,9 +7448,11 @@ nice-try@^1.0.4:
|
||||||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||||
|
|
||||||
node-fetch@^2.6.0:
|
node-fetch@^2.6.0:
|
||||||
version "2.6.1"
|
version "2.6.7"
|
||||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
|
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
|
||||||
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
|
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
|
||||||
|
dependencies:
|
||||||
|
whatwg-url "^5.0.0"
|
||||||
|
|
||||||
node-forge@^0.10.0:
|
node-forge@^0.10.0:
|
||||||
version "0.10.0"
|
version "0.10.0"
|
||||||
|
@ -9562,10 +9542,10 @@ sass-loader@^10.2.0:
|
||||||
schema-utils "^3.0.0"
|
schema-utils "^3.0.0"
|
||||||
semver "^7.3.2"
|
semver "^7.3.2"
|
||||||
|
|
||||||
sass@^1.48.0:
|
sass@^1.49.0:
|
||||||
version "1.48.0"
|
version "1.49.0"
|
||||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.48.0.tgz#b53cfccc1b8ab4be375cc54f306fda9d4711162c"
|
resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.0.tgz#65ec1b1d9a6bc1bae8d2c9d4b392c13f5d32c078"
|
||||||
integrity sha512-hQi5g4DcfjcipotoHZ80l7GNJHGqQS5LwMBjVYB/TaT0vcSSpbgM8Ad7cgfsB2M0MinbkEQQPO9+sjjSiwxqmw==
|
integrity sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==
|
||||||
dependencies:
|
dependencies:
|
||||||
chokidar ">=3.0.0 <4.0.0"
|
chokidar ">=3.0.0 <4.0.0"
|
||||||
immutable "^4.0.0"
|
immutable "^4.0.0"
|
||||||
|
@ -10635,13 +10615,6 @@ tough-cookie@^4.0.0:
|
||||||
punycode "^2.1.1"
|
punycode "^2.1.1"
|
||||||
universalify "^0.1.2"
|
universalify "^0.1.2"
|
||||||
|
|
||||||
tr46@^2.0.2:
|
|
||||||
version "2.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479"
|
|
||||||
integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==
|
|
||||||
dependencies:
|
|
||||||
punycode "^2.1.1"
|
|
||||||
|
|
||||||
tr46@^2.1.0:
|
tr46@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240"
|
resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240"
|
||||||
|
@ -10649,6 +10622,11 @@ tr46@^2.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
punycode "^2.1.1"
|
punycode "^2.1.1"
|
||||||
|
|
||||||
|
tr46@~0.0.3:
|
||||||
|
version "0.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||||
|
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
|
||||||
|
|
||||||
ts-essentials@^2.0.3:
|
ts-essentials@^2.0.3:
|
||||||
version "2.0.12"
|
version "2.0.12"
|
||||||
resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745"
|
resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745"
|
||||||
|
@ -11059,6 +11037,11 @@ wbuf@^1.1.0, wbuf@^1.7.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
minimalistic-assert "^1.0.0"
|
minimalistic-assert "^1.0.0"
|
||||||
|
|
||||||
|
webidl-conversions@^3.0.0:
|
||||||
|
version "3.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
|
||||||
|
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
|
||||||
|
|
||||||
webidl-conversions@^5.0.0:
|
webidl-conversions@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
|
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
|
||||||
|
@ -11254,16 +11237,15 @@ whatwg-mimetype@^2.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
||||||
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
||||||
|
|
||||||
whatwg-url@^8.0.0:
|
whatwg-url@^5.0.0:
|
||||||
version "8.2.2"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.2.2.tgz#85e7f9795108b53d554cec640b2e8aee2a0d4bfd"
|
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
|
||||||
integrity sha512-PcVnO6NiewhkmzV0qn7A+UZ9Xx4maNTI+O+TShmfE4pqjoCMwUMjkvoNhNHPTvgR7QH9Xt3R13iHuWy2sToFxQ==
|
integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
|
||||||
dependencies:
|
dependencies:
|
||||||
lodash.sortby "^4.7.0"
|
tr46 "~0.0.3"
|
||||||
tr46 "^2.0.2"
|
webidl-conversions "^3.0.0"
|
||||||
webidl-conversions "^6.1.0"
|
|
||||||
|
|
||||||
whatwg-url@^8.5.0:
|
whatwg-url@^8.0.0, whatwg-url@^8.5.0:
|
||||||
version "8.6.0"
|
version "8.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.6.0.tgz#27c0205a4902084b872aecb97cf0f2a7a3011f4c"
|
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.6.0.tgz#27c0205a4902084b872aecb97cf0f2a7a3011f4c"
|
||||||
integrity sha512-os0KkeeqUOl7ccdDT1qqUcS4KH4tcBTSKK5Nl5WKb2lyxInIZ/CpjkqKa1Ss12mjfdcRX9mHmPPs7/SxG1Hbdw==
|
integrity sha512-os0KkeeqUOl7ccdDT1qqUcS4KH4tcBTSKK5Nl5WKb2lyxInIZ/CpjkqKa1Ss12mjfdcRX9mHmPPs7/SxG1Hbdw==
|
||||||
|
|
Loading…
Reference in New Issue