Alexander Sepity
82d0e84a5c
Explicit execution order ambiguities API ( #1469 )
...
Explicit execution order ambiguities API.
2021-02-18 11:30:13 -08:00
Alice Cecile
a895256925
Better documentation for explicit dependencies ( #1428 )
...
* More in-depth ambiguity checker docs
* Updated ecs_guide example with explicit dependencies
2021-02-16 11:18:08 -08:00
Alexander Sepity
d021a3c374
Relaxed bounds on NonSend
. ( #1448 )
2021-02-14 16:20:16 -08:00
Wouter Buckens
b39df9a8d2
Fix missing paths in ECS SystemParam derive macro ( #1434 )
2021-02-11 15:59:11 -08:00
Alexander Sepity
d5a7330431
System sets and parallel executor v2 ( #1144 )
...
System sets and parallel executor v2
2021-02-09 12:14:10 -08:00
MinerSebas
3475a64a2c
More Doctest changes ( #1405 )
...
* Add system() to DocTests
* Hide use statements
2021-02-05 17:44:34 -08:00
szunami
c87d4c110f
Update example system in documentation ( #1403 )
...
The existing snippet fails to compile with:
```
no method named `system` found for fn item `fn(bevy::prelude::Commands) {example_system}` in the current scope
```
2021-02-05 12:57:47 -08:00
Telzhaak
61c9a40fde
[Bugfix] add_stage now checks Stage existence ( #1346 )
...
add_stage now checks stage existence
2021-01-30 12:10:14 -08:00
Jakob Hellermann
f3306e5490
implement Debug for Flags regardless of underlying type ( #1323 )
2021-01-26 11:58:46 -08:00
Tomasz Sterna
f2b73eaa8a
Fix documentation comment for State::overwrite_next ( #1291 )
2021-01-23 13:18:28 -08:00
Will Crichton
7166a28baf
Enable dynamic mutable access to component data ( #1284 )
...
* Enable dynamic mutable access to component data
* Add clippy allowance, more documentation
2021-01-22 15:15:08 -08:00
Daniel McNab
6bd5ec8404
Change to using add_run_criteria ( #1282 )
2021-01-22 14:09:14 -08:00
TheRawMeatball
a880b54508
Make EventReader a SystemParam ( #1244 )
...
* Add generic support for `#[derive(SystemParam)]`
* Make EventReader a SystemParam
2021-01-18 22:23:30 -08:00
Nathan Stocks
a0475e9ad5
Change 'components' to 'bundles' where it makes sense semantically ( #1257 )
...
change 'components' to 'bundles' where it makes sense semantically
2021-01-18 16:50:36 -08:00
Christopher Durham
4d5ba7918b
Update rand requirement from 0.7 to 0.8 ( #1114 )
...
* Update rand requirement from 0.7 to 0.8
* Update examples' usage of Rng::gen_range
2021-01-17 13:43:03 -08:00
Yoh Deadfall
6a0116e994
Removed unreferenced trait ( #1230 )
2021-01-12 14:06:01 -08:00
AngelicosPhosphoros
9bce8712b5
Use fxhash in TypeIdMap. ( #1119 )
...
Relying on TypeId being some hash internally isn't future-proof because there is no guarantee about internal layout or structure of TypeId. I benchmarked TypeId noop hasher vs fxhash and found that there is very little difference.
Also fxhash is likely to be better supported because it is widely used in rustc itself.
[Benchmarks of hashers](https://github.com/bevyengine/bevy/issues/1097 )
[Engine wide benchmarks](https://github.com/bevyengine/bevy/pull/1119#issuecomment-751361215 )
2021-01-07 17:42:09 -08:00
TheRawMeatball
c69aa98a60
Refactor Box<dyn System>
to BoxedSystem ( #1191 )
...
Added BoxedSystem
2021-01-03 12:39:30 -08:00
Adam Bates
8f426b71c9
Minor grammar fix in code-comment for fn in state ( #1173 )
2020-12-31 18:37:02 -06:00
François
d91117d6e7
add Flags<T>
as a query to get flags of component ( #1172 )
...
add `Flags` as a query to get flags of component
2020-12-31 16:29:08 -06:00
Carter Anderson
38010d96ab
remove unnecessary semicolon ( #1179 )
2020-12-31 16:05:37 -06:00
François
b28365f966
updates on diagnostics (log + new diagnostics) ( #1085 )
...
* move print diagnostics to log
* entity count diagnostic
* asset count diagnostic
* remove useless `pub`s
* use `BTreeMap` instead of `HashMap`
* get entity count from world
* keep ordered list of diagnostics
2020-12-24 13:28:31 -06:00
Carter Anderson
3b2c6ce49b
release 0.4.0 ( #1093 )
2020-12-19 13:28:00 -06:00
Carter Anderson
caf3d8b3ef
add with_enter_stage (and other variants) ( #1091 )
2020-12-19 12:31:47 -06:00
Carter Anderson
841755aaf2
Adopt a Fetch pattern for SystemParams ( #1074 )
2020-12-15 21:57:16 -08:00
Carter Anderson
b12e3bf3bb
Improve usability of StateStage and cut down on "magic" ( #1059 )
...
Improve usability of StateStage and cut down on "magic"
2020-12-14 17:13:22 -08:00
Alec Deason
e511cdbda7
More informative error message on missing stage ( #1048 )
...
More informative error message on missing state
2020-12-13 12:12:09 -08:00
sapir
002e22fca0
Fix hang on missing state update handler ( #1051 )
2020-12-13 11:55:32 -08:00
Carter Anderson
509b138e8f
Schedule v2 ( #1021 )
...
Schedule V2
2020-12-12 18:04:42 -08:00
Lukas Orsvärn
e1b995f0b0
Add documentation for bevy::ecs::Query::removed ( #950 )
...
Add documentation for bevy::ecs::Query::removed
2020-12-07 12:41:40 -08:00
Michael Tang
ff12f69233
Document part of bevy_ecs::Commands ( #976 )
...
Document part of bevy_ecs::Commands
2020-12-02 19:11:28 -08:00
Tomasz Sterna
c346d282b6
Add Archetype TypeInfo::type_name accessor ( #985 )
2020-12-02 14:33:17 -08:00
Carter Anderson
5a77339df0
Revert "Add Archetype TypeInfo::type_name accessor ( #980 )" ( #982 )
...
This reverts commit 4833c2a7f4
.
2020-12-02 12:58:39 -08:00
Tomasz Sterna
4833c2a7f4
Add Archetype TypeInfo::type_name accessor ( #980 )
2020-12-02 12:37:40 -08:00
Joshua J. Bouw
9f4c8b1b9a
Fix errors and panics to typical Rust conventions ( #968 )
...
Fix errors and panics to typical Rust conventions
2020-12-02 11:31:16 -08:00
Carter Anderson
b5ffab7135
Renderer Optimization Round 1 ( #958 )
...
* only update global transforms when they (or their ancestors) have changed
* only update render resource nodes when they have changed (quality check plz)
* only update entity mesh specialization when mesh (or mesh component) has changed
* only update sprite size when changed
* remove stale bind groups
* fix setting size of loading sprites
* store unmatched render resource binding results
* reduce state changes
* cargo fmt + clippy
* remove cached "NoMatch" results when new bindings are added to RenderResourceBindings
* inline current_entity in world_builder
* try creating bind groups even when they havent changed
* render_resources_node: update all entities when resized
* fmt
2020-12-01 13:17:48 -08:00
Carter Anderson
8675fea0f2
consolidate find-crate ( #964 )
2020-11-30 22:36:38 -08:00
Carter Anderson
72b2fc9843
Bevy Reflection ( #926 )
...
Bevy Reflection
2020-11-27 16:39:59 -08:00
RiskLove
7d4cb70d92
BugFix: Archetype grow with defferent size. ( #930 )
...
Co-authored-by: heshuai <heshuai@163.com>
2020-11-27 11:55:55 -08:00
Carter Anderson
4fecb899aa
initialize chained systems ( #886 )
2020-11-17 17:06:47 -08:00
Carter Anderson
457a8bd17d
ecs: replace "bool" component states with bitflags ( #878 )
2020-11-17 17:04:44 -08:00
Carter Anderson
3a6f6de277
System Inputs, Outputs, Chaining, and Registration Ergo ( #876 )
...
System Inputs, Outputs, Chaining, and Registration Ergo
2020-11-16 18:18:00 -08:00
bjorn3
50c7e229b2
Rework ResourceData to use VecResourceStorage instead of Archetype ( #873 )
2020-11-16 16:55:59 -08:00
Carter Anderson
7628f4a64e
combine bevy_ecs and bevy_hecs crates. rename XComponents to XBundle ( #863 )
...
combine bevy_ecs and bevy_hecs crates. rename XComponents to XBundle
2020-11-15 20:32:23 -08:00
François
02f543eca3
Fall back to remove components one by one when failing to remove a bundle ( #719 )
...
Fall back to remove components one by one when failing to remove a bundle
2020-11-15 14:32:54 -08:00
memoryruins
4bdff66b80
Check for conflicting system resource parameters ( #864 )
2020-11-15 12:42:43 -08:00
Carter Anderson
e03f17ba7f
Log Plugin ( #836 )
...
add bevy_log plugin
2020-11-12 17:23:57 -08:00
Carter Anderson
e769974d6a
query filters ( #834 )
2020-11-10 20:48:34 -08:00
Robert Swain
a266578992
Add tracing spans to schedules, stages, systems ( #789 )
...
Add tracing spans to schedules, stages, systems
2020-11-10 18:49:49 -08:00
memoryruins
a68c217ccf
Mark Query and QuerySet contructors as pub(crate) ( #829 )
...
Mark Query and QuerySet contructors as pub(crate)
2020-11-10 16:14:33 -08:00
bjorn3
80a0448473
Add bevy_dylib to force dynamic linking of bevy ( #808 )
...
This easily improve compilation time by 2x
2020-11-09 19:26:08 -08:00
Carter Anderson
213ba9629a
ecs: fix system name in "conflicting system" error message ( #816 )
2020-11-08 13:48:00 -08:00
Carter Anderson
ebcdc9fb8c
Flexible ECS System Params ( #798 )
...
system params can be in any order, faster compiles, remove foreach
2020-11-08 12:34:05 -08:00
Lukas Wirth
fb7c651ab9
Port hecs derive macro improvements ( #761 )
...
* Port derive macro changes from hecs
* Emit more info on duplicate components in archetype creation
2020-11-06 13:20:53 -08:00
Carter Anderson
26be22e73c
fix unit test ( #802 )
2020-11-06 12:49:20 -08:00
Guillaume DALLENNE
5bd6deb974
Add mutated state when inserting an already existing component ( #404 )
...
Add mutated state when inserting an already existing component
2020-11-04 17:51:54 -08:00
Carter Anderson
1aa832be1d
fix unsafe Query function names ( #785 )
2020-11-03 14:10:29 -08:00
Carter Anderson
9afe196f16
release: 0.3.0 ( #783 )
2020-11-03 13:34:00 -08:00
memoryruins
e21705bec6
Remove two unused deps ( #780 )
2020-11-03 11:38:37 -08:00
memoryruins
f81208adaa
impl ReadOnlyFetch for Or, FetchOr, and FetchMutated ( #763 )
2020-11-01 16:51:51 -08:00
Carter Anderson
ad940fbf6e
Rename query.entity() to query.get() and query.get() to query.get_component() ( #752 )
2020-10-30 18:04:33 -07:00
Oscar
b6004e44cf
Local resources don't create if already present ( #745 )
...
Local<T> will no longer insert the inner resource if it already exists.
2020-10-30 12:21:57 -07:00
Boxy
dea05e9af5
Remove unsound cast in thread local resources ( #749 )
...
* Remove unsound cast in thread local resources
* Make ResourceRef(Mut)::new impossible to cause unsoundness with
2020-10-30 11:43:39 -07:00
Carter Anderson
1d4a95db62
ecs: ergonomic query.iter(), remove locks, add QuerySets ( #741 )
2020-10-29 23:39:55 -07:00
Freya
040b8f72b3
Optimize returns in file_asset_io.rs and entities.rs ( #728 )
...
Optimize returns in file_asset_io.rs and entities.rs
2020-10-28 16:59:45 -07:00
Carter Anderson
a6ac8faa8a
port upstream hecs performance improvements ( #716 )
2020-10-22 11:53:59 -07:00
Carter Anderson
c32e637384
Asset system rework and GLTF scene loading ( #693 )
2020-10-18 13:48:15 -07:00
Mat Hostetter
871790c6e0
Adjust how ArchetypeAccess
tracks mutable & immutable deps ( #660 )
...
`ArchetypeAccess` was tracking `immutable` and `mutable` separately.
This means that checking is_compatible requires three checks:
m+m, m+i, i+m.
Instead, continue tracking `mutable` accesses, but instead of
`immutable` track `immutable | mutable` as another `accessed` bit mask.
This drops the comparisons to two (m+a, a+m) and turns out to be
what the rest of the code base wants too, unifying various duplicated
checks and loops.
2020-10-15 13:39:01 -07:00
Nathan Jeffords
7e23e132ef
add version of the ecs's write_world
method that takes a pre-boxed world writer ( #661 )
...
Co-authored-by: Nathan Jeffords <njeffords@comtechefdata.com>
2020-10-14 14:01:08 -07:00
Carter Anderson
930eba4ccd
add thread local resources ( #671 )
2020-10-12 15:09:44 -07:00
Nathan Stocks
bf501b77cc
Don't panic when despawning entity multiple times ( #649 )
...
Emit a debug log message instead of a panic when despawning an entity which has already been despawned.
2020-10-08 16:58:19 -07:00
memoryruins
ebce1f9c4a
Remove outdated ecs docs ( #646 )
2020-10-08 15:32:25 -07:00
Grayson Burton
354d71cc1f
The Great Debuggening ( #632 )
...
The Great Debuggening
2020-10-08 11:43:01 -07:00
Boutillier
1bdb9d3b00
Fix Added behaviour for QueryOne get. ( #543 )
...
Query unchanged as impacts performances.
Added tests in bevy_ecs/hecs
2020-10-05 10:38:12 -07:00
Jonas Matser
3a4eacbdee
Adds derive for missing debug implementations ( #597 )
2020-10-01 10:58:21 -07:00
Raymond
74ad1c3752
Add remove bundle to bevy_ecs commands ( #579 )
...
add remove bundle to bevy_ecs commands
2020-09-26 14:27:56 -07:00
Alexander Sepity
85a7f883d1
Fix typo in #569 . ( #582 )
2020-09-26 10:26:19 -07:00
Alexander Sepity
3abfcad7ab
Patch memory leak in Archetype::grow()
. ( #569 )
2020-09-25 12:33:27 -07:00
Carter Anderson
028a22b129
asset: use bevy_tasks in AssetServer ( #550 )
2020-09-21 20:23:09 -07:00
HyperLightKitsune
295e1f0a18
use FnOnce in Commands and ChildBuilder where possible ( #535 )
...
use FnOnce in Commands and ChildBuilder
2020-09-21 13:51:38 -07:00
Carter Anderson
74dba5f36b
release: 0.2.1 ( #533 )
2020-09-20 15:58:32 -07:00
Carter Anderson
ba5af4dd56
release: 0.2.0 ( #520 )
2020-09-19 15:29:08 -07:00
Carter Anderson
70ad6671db
ecs: use generational entity ids and other optimizations ( #504 )
...
ecs: use generational entity ids and other optimizations
2020-09-17 17:16:38 -07:00
Jonas Matser
3b3b0195bc
Adds profiler_start/stop to parallel_executor ( #474 )
2020-09-11 12:14:36 -07:00
BimDav
4ef18e2608
Resource change tracking ( #388 )
...
* Add mutated tracker on resources and ChangedRes query for added or mutated resources.
* ResMut:::new() now takes a reference to a 'mutated' flag in its archetype.
* Change FetchResource so that get() returns an Option. Systems using Resources will only be called if all fetched Resources are Some(). This is done to implement ChangedRes, which is Some iff the Resource has been changed.
* Add OrRes for a logical or in tuples of Resource queries.
* Separate resource query get() in is_some() and get() methods for clarity
* Remove unneeded unsafe
* Change ResMut::new()
2020-09-10 13:15:02 -07:00
Smite Rust
a9ce7f4e82
update dependencies ( #470 )
2020-09-10 12:54:24 -07:00
Carter Anderson
ac117019e2
resolve unused variable warning in release builds
2020-09-08 13:29:55 -07:00
Grant Moyer
586303fd53
Parallel queries ( #292 )
...
Add support for Parallel Queries
2020-09-08 12:18:32 -07:00
Carter Anderson
413caae7bb
resolve errors from latest clippy version
2020-09-07 15:00:03 -07:00
Boxy
d86fae8147
Update docs for Updated, Changed and Mutated ( #451 )
...
Update docs for Updated, Changed and Mutated
2020-09-07 13:52:03 -07:00
Tristan Pemble
43463a7a06
Optimize transform systems to only run on change ( #417 )
...
Optimize transform systems to only run on change
2020-09-06 12:53:14 -07:00
Philip Degarmo
9eba19c8f0
Fix for bug #449 ( #450 )
...
Fix for a bug (#449 ) in scheduler that could result in systems running concurrently when they shouldn't.
2020-09-06 12:07:34 -07:00
Philip Degarmo
8b3553002d
Reworked parallel executor to not block ( #437 )
...
Reworked parallel executor to not block
2020-09-05 22:05:33 -07:00
BimDav
25f62f7250
Add support for 'or' in ECS querying for tuple queries ( #358 )
...
Add Or query to do a logical or on a set of queries
2020-09-01 18:12:54 -07:00
Boxy
57177c9e98
Bump entities to u128 to avoid collisions ( #117 ) ( #393 )
2020-08-31 11:51:28 -07:00
Boxy
3efbaca104
Fix archetypes_generation being incorrectly updated for systems ( #294 ) ( #383 )
2020-08-29 18:38:05 -07:00
Lachlan Sneff
17e7642611
Task System for Bevy ( #384 )
...
Add bevy_tasks crate to replace rayon
2020-08-29 12:35:41 -07:00
Robbie Davenport
4aabe983ec
Switch usage of std HashMap/HashSet default hasher, to aHash algo ( #258 )
...
switch to ahash for HashMaps and HashSets via a new bevy_utils crate
2020-08-28 17:08:51 -07:00
Xavientois
0ae74a4a4d
Some examples of documentation ( #338 )
2020-08-24 17:57:10 -07:00
Carter Anderson
b925e22949
0.1.3 upgrade
2020-08-22 10:16:52 -07:00
Lachlan Sneff
1eca55e571
Replace std synchronization primitives with parking_lot ( #210 )
...
* Replace std::sync::Mutex with parking_lot::Mutex
* Replace std::sync::RwLock with parking_lot::RwLock
2020-08-21 14:55:16 -07:00
Victor "multun" Collod
c38420f1e9
enforce clippy for all target and features
2020-08-16 07:20:06 -07:00
Victor "multun" Collod
d138647818
enforce cargo fmt --check
2020-08-16 05:02:06 -07:00
Victor "multun" Collod
1ec7183494
profiling: fix build
2020-08-16 02:06:59 -07:00
Carter Anderson
f85867139b
Merge pull request #199 from multun/query-mut-debug
...
ecs: impl Debug for Mut<...>
2020-08-15 17:57:37 -07:00
Victor "multun" Collod
8472789bbb
ecs: impl Debug for Mut<...>
2020-08-15 17:46:36 -07:00
Fabian Würfl
458a169ad2
Add possibility to control num_threads and stack_size of rayon::ThreadPool
2020-08-14 19:15:53 +02:00
Carter Anderson
938d381d45
Merge pull request #178 from JohnDoneth/master
...
Add Command::remove_one
2020-08-13 17:26:22 -07:00
John Doneth
589af3dc51
Add Command::remove_one
2020-08-13 19:38:38 -04:00
Halfwhit
14bfd698c5
Update lib.rs
2020-08-13 17:39:33 +01:00
Victor "multun" Collod
8662ab3622
ecs: remove unused Entities::current
2020-08-12 21:16:20 -07:00
Carter Anderson
423c5e3e0f
ecs: prepare for publishing
2020-08-09 18:16:12 -07:00
Carter Anderson
9aee5323e1
add crate metadata
2020-08-09 17:24:27 -07:00
Carter Anderson
3d09459813
add more doc comments and clean up some public exports
2020-08-09 16:13:04 -07:00
Carter Anderson
f85ec04a48
ecs: prepare system ranges based on stage and thread locals
2020-07-30 13:19:55 -07:00
Carter Anderson
2929197d9b
render: add RenderPass queries. move ui to its own pass
2020-07-28 20:11:27 -07:00
Carter Anderson
bd8e979de8
ecs: only borrow/iterate archetypes currently used by a given query
2020-07-28 16:37:37 -07:00
Carter Anderson
64cc382477
ecs: move copy of QueryBorrow into bevy_ecs and fix perf regressions
2020-07-28 16:17:21 -07:00
Carter Anderson
7212b70478
rustfmt changes
2020-07-28 14:24:03 -07:00
Moxinilian
311f04f858
transform: implement hierarchical entity despawn
2020-07-28 00:10:32 +02:00
Thomas Herzog
b4c185eb0c
cargo fmt
2020-07-26 21:10:18 +02:00
Carter Anderson
93bb1d5b8e
ui: initial flexbox support
2020-07-24 23:04:45 -07:00
Carter Anderson
6cad80d572
transform|ui: fix transform update lag
2020-07-23 18:26:08 -07:00
Carter Anderson
d79339ea62
transform: add more control parent/child ordering and make parent/children insertion atomic
2020-07-23 17:32:53 -07:00
Carter Anderson
89af5ea4e0
fix some doc tests
2020-07-23 13:40:07 -07:00
Carter Anderson
85bd0342d4
ecs: add write_world and write_resources to Commands
...
this allows for custom commands
2020-07-23 13:12:38 -07:00
Carter Anderson
f82af10a69
ecs: component removal tracking
2020-07-22 17:57:13 -07:00
Carter Anderson
141044aae7
ecs: publicly expose Added/Changed and inline some things
2020-07-22 16:19:27 -07:00
Carter Anderson
2d829f5a06
ecs: add Changed<T> (added or modified)
2020-07-22 13:20:22 -07:00
Carter Anderson
e673faab7c
ecs: rename Changed<T> to Mutated<T>
2020-07-22 12:42:12 -07:00
Carter Anderson
19d24e92aa
transform: immediately set localltransform value
2020-07-21 22:02:18 -07:00
Carter Anderson
ae30175e18
ecs: fix query.get::<T>() access
2020-07-21 22:00:55 -07:00
Carter Anderson
a6953049fb
ecs: Added<T> queries
2020-07-21 22:00:11 -07:00
Carter Anderson
21cdaaf7eb
ecs: inline a few things
2020-07-21 20:15:16 -07:00
Carter Anderson
0c2e26ddde
Revert "ecs: remove &mut requirement on query iterators"
...
This reverts commit 6dc1d07cbc
.
2020-07-21 20:12:15 -07:00
Carter Anderson
6dc1d07cbc
ecs: remove &mut requirement on query iterators
2020-07-20 13:59:51 -07:00
Carter Anderson
b1162f0c29
ecs: fix resource scheduler test
2020-07-20 01:51:06 -07:00
Carter Anderson
9a236f4923
ui: remove translation/rotation/scale components (Node serves the same role)
2020-07-19 20:33:55 -07:00
Carter Anderson
946d5d1024
ecs: refactor resources
...
fixes unintialized global resource memory
2020-07-19 14:23:06 -07:00
Carter Anderson
fe1adb6cf6
ui: focus/click/hover system. initial buttons
2020-07-18 14:08:46 -07:00
Carter Anderson
19fe299f5a
ecs: use Mut<T> tracking pointer everywhere
2020-07-18 02:09:55 -07:00
Carter Anderson
bf164a5936
ecs: fix tuple query item skipping
2020-07-18 01:14:16 -07:00
Carter Anderson
fbcf3f89d0
ecs: rename ComMut<T> to Track<T> and fix nested change queries
2020-07-18 01:05:06 -07:00
Carter Anderson
23b96a48a6
ecs: make RefMut a tracking pointer
2020-07-18 01:03:47 -07:00
Carter Anderson
85ec31bb65
ecs: change state now moves when an entity moves to a different archetype
2020-07-17 19:13:56 -07:00
Carter Anderson
31d00ad861
ecs: initial component change tracking
...
(changing entity archetypes currently breaks tracking)
2020-07-17 17:50:17 -07:00
Carter Anderson
9f26a453c6
ecs: simplify imports
2020-07-16 19:20:51 -07:00
Carter Anderson
b12c4d0a48
render: simplify imports and cleanup prelude
2020-07-16 18:26:21 -07:00
Carter Anderson
196bde64e3
cargo fmt
2020-07-16 17:23:50 -07:00
Carter Anderson
362fb92cf8
ecs: only prepare executor on changes. use parallel executor in App
2020-07-15 17:59:13 -07:00