Commit Graph

877 Commits

Author SHA1 Message Date
Ari Lazier c7e156a7b8 Merge pull request #488 from realm/al-typos
fixes for typos and added upsert test
2016-06-13 14:51:53 -07:00
Ari Lazier 0a4e0665ae fixes for typos and added upsert test 2016-06-13 14:46:26 -07:00
Ari Lazier 3901bf53dc Merge pull request #479 from realm/al-muti-realm
fix for setting properties to objects from other realms
2016-06-13 14:44:28 -07:00
Scott Kyle 6aa9825cd1 Merge pull request #469 from realm/sk-object-store-merge
Merge latest object store (includes Android async stuff)
2016-06-13 14:38:28 -07:00
Ari Lazier 2b48ebb30a negate if statements 2016-06-13 14:07:50 -07:00
Kenneth Geisshirt 57a1015b85 Killing a few gcc warnings (#88)
* killing a few gcc warnings
2016-06-13 09:31:41 +02:00
Scott Kyle cd20d870dd Fix crash from querying with object from another Realm 2016-06-09 15:32:37 -07:00
Scott Kyle cdcb99a502 Improvements from PR feedback 2016-06-09 13:07:05 -07:00
Ari Lazier 81feca0ce9 fix for setting properties to objects from other realms 2016-06-08 11:22:12 -07:00
Mark Rowe 7f1be608f3 Merge pull request #85 from realm/mar/cocoa-list
Pull in changes to List from realm-cocoa
2016-06-07 15:45:08 -07:00
Thomas Goyne 5054bbc1a2 Add the path of the Realm file to the config mismatch exception message 2016-06-06 15:30:57 -07:00
Thomas Goyne bd0913bc03 Pull in changes to `List` from realm/realm-cocoa@355657f168. 2016-06-06 15:09:26 -07:00
Mark Rowe 152697d199 Add the linking objects property type. 2016-06-06 11:49:29 -07:00
Mark Rowe abca7c26e1 Add support for the concept of computed properties. 2016-06-06 11:41:34 -07:00
Chen Mulong 64e733e4d7 Fix compile errors for NDK (#82)
make_unique<TableView> causes ambiguous call with NDK's default gnustl.
Compiler fails to decide which constructor of Query to use.
2016-06-06 18:27:05 +08:00
Scott Kyle cd0bb079b7 Implement objectForPrimaryKey() method
Resolves #328
2016-06-03 16:51:32 -07:00
Scott Kyle cb889ea8f8 Merge pull request #466 from realm/sk-remove-gcov-config
Remove unused GCov_Build configuration
2016-06-03 16:04:29 -07:00
Thomas Goyne f4e5049f47 Add basic string formatting for error messages
The main motivation for this is that building error messages via string
concatenation is tedious and makes it hard to judge what the actual message
looks like when there are a lot of parts being inserted, to the extent that
I've been tempted to leave out some potentially useful information because the
code was getting unwieldy.

It also has some small functional benefits: bools are printed as true/false
rather than 1/0, and it is optimized for minimizing the compiled size.
Currently it cuts ~30 KB off librealm-object-store.dylib even with the addition
of new functionality.
2016-06-03 13:19:42 -07:00
Ari Lazier 49fd092cae Fix for whitespce 2016-06-02 22:05:17 -07:00
Mark Rowe 57ee591809 Merge pull request #78 from realm/mar/weakrealmnotifier-leak
Fix a potential leak within WeakRealmNotifier
2016-06-01 13:07:56 -07:00
Mark Rowe 8685390345 Merge pull request #77 from realm/mar/results-leak
Fix move-assigning to a Results that has a notifier to not leak the Realm
2016-06-01 13:07:45 -07:00
Thomas Goyne 6d22d28fea Merge pull request #72 from realm/tg/core-1.0.0
Upgrade to core 1.0.0 and update the file exception translation to match
2016-06-01 12:02:27 -07:00
Mark Rowe 08404d7098 Express `Results`' asignment operators in terms of their equivalent
constructors.

This avoids having to repeat the move constructor's logic in the move
assignment operator, and allows the copy assignment operator to compile
despite `TableViewBase`'s missing copy assignment implementation. the
copy assignment implementation can be defaulted once `TableViewBase` is
fixed.
2016-06-01 11:50:25 -07:00
Mark Rowe 3e952269da Have `Results` default its copy constructor.
The custom implementation was an attempt to ensure that
`m_has_used_table_view` and `m_wants_background_updates` had appropriate
intial values. Thomas pointed out that we can remove the reliance on the
initial values by ensure that `prepare_async` sets
`m_wants_background_updates`, removing the need for a custom copy
constructor.
2016-06-01 11:48:35 -07:00
Mark Rowe fc63c4f67b Merge pull request #76 from realm/mar/fix-building-tests-in-xcode
Fix building tests in Xcode
2016-06-01 11:40:14 -07:00
Mark Rowe 2a75edde8e Move `List`s defaulted constructors and assignment operators out of line. 2016-06-01 11:29:32 -07:00
Scott Kyle b5853c2590 Merge remote-tracking branch 'object-store/master' into sk-object-store-merge
* object-store/master:
  Make Realm::is_closed() work on read-only instances
  Fix for object store build issues on Android
  Implement commit helper and realm notifier for Android (#69)
  Build both dynamic and static libraries.
  moving pegtl dependency as step 1 in install doc
  update docu (install procedure)
2016-06-01 10:14:16 -07:00
Mark Rowe 702b8a31fb Avoid leaking the runloop and source if WeakRealmNotifier is move-assigned. 2016-05-31 21:54:40 -07:00
Mark Rowe 65a748de0c Fix move-assigning to a `Results` that has a notifier to not leak the
`Realm`, and moving from a `Results` to not result in a use-after-free.

The compiler generated move-assignment operator resulted in `m_notifier`
being assigned to without first calling `CollectionNotifier::unregister`.
This left a retain cycle in place, causing the `Realm` and other objects
to leak.

`ResultsNotifier` keeps track of which `Results` it should update when a
new `TableView` becomes available. When `Results` move-assignment
operator and move-constructor transfer ownership of the
`ResultsNotifier` to a new instance they also need to update its target
so it won't attempt to update the moved-from `Results`.
2016-05-31 19:03:29 -07:00
Mark Rowe 7e99634567 Fix building tests in Xcode.
The Xcode project generated by CMake doesn't create the dylib when built
as the dylib target does not contain any source files. Adding an empty
placeholder .cpp file to the target is sufficient to convince Xcode to
produce the dylib.
2016-05-31 17:16:52 -07:00
Mark Rowe 344fc42d4e Avoid copying `Object` unnecessarily. 2016-05-31 15:54:43 -07:00
Mark Rowe efdf0e01a9 Avoid copying `List` unnecessarily. 2016-05-31 15:27:48 -07:00
Scott Kyle 3b9b8cbc75 Remove unused GCov_Build configuration
We've never really used this, so let's remove it until we ever actually need something like this.
2016-05-31 11:30:24 -07:00
Scott Kyle 385fe97861 Make Realm::is_closed() work on read-only instances 2016-05-31 11:27:39 -07:00
Scott Kyle 7bb8a04359 Fix for object store build issues on Android 2016-05-31 11:11:39 -07:00
Scott Kyle 560e725398 Address some issues in WeakRealmNotifier for Node 2016-05-31 10:05:14 -07:00
Yavor Georgiev 91c87e4de6 Implement commit helper and realm notifier for Android (#69)
* Implement commit helper and realm notifier for Android

* Remove non-existent include

* Shut down the current instance when move-assigning

* Only use Android logging when on Android

* Cleanup realm_ptr when it hasn't been sent over the pipe

* Assed that WeakRealmNotifier is closed on the thread it was created on

* Typo

* Fix syntax error

* changes after code review

* Use the proper preprocessor definition for Android

* Pass the correct address to write(2)

* Explicitly handle looper events

* changes after code review

* Do not return after handling ALOOPER_EVENT_HANGUP

* Handle HANGUP after INPUT
2016-05-31 17:15:32 +02:00
Ari Lazier df040c7d99 fix for comment 2016-05-27 16:25:33 -07:00
Ari Lazier 7829cb5f33 fix for comment 2016-05-27 16:25:33 -07:00
Ari Lazier 38c6eb7b6b more pr feedback 2016-05-27 16:03:03 -07:00
Ari Lazier 3e74cd98d5 more pr feedback 2016-05-27 16:03:03 -07:00
Ari Lazier 9fe636b614 pr feedback 2016-05-27 15:50:33 -07:00
Ari Lazier e316b54eff pr feedback 2016-05-27 15:50:33 -07:00
Ari Lazier 9012549c5d object store pr feedback 2016-05-27 15:45:56 -07:00
Ari Lazier ceceeab9a5 object store pr feedback 2016-05-27 15:45:56 -07:00
Scott Kyle b3ec066d12 Merge pull request #451 from realm/sk-test-improvements
Improve JS tests
2016-05-27 13:56:49 -07:00
Scott Kyle d05542c031 Merge branch 'sk-node-notifier'
* sk-node-notifier:
  Create a HandleScope before calling callbacks
  Add a working WeakRealmNotifier for Node
2016-05-27 13:25:50 -07:00
Scott Kyle 8a52cf8ffe Merge branch 'sk-node-notifier'
* sk-node-notifier:
  Create a HandleScope before calling callbacks
  Add a working WeakRealmNotifier for Node
2016-05-27 13:25:50 -07:00
Scott Kyle 4e457526bb Merge branch 'sk-node-xcode'
* sk-node-xcode:
  Consolidate RealmNode.xcodeproj into RealmJS.xcodeproj
2016-05-27 13:20:01 -07:00
Scott Kyle 5a3997d268 Fix for consecutive calls to clearTestState()
This bug would only happen from Chrome debug mode, where consecutive calls would crash the app because the m_objects iterator would be in a bad state. This method is faster anyways.
2016-05-26 17:58:24 -07:00
Scott Kyle 78a8311ba6 Merge branch '0.13.x'
* 0.13.x:
  [0.13.2] Bump version
  fix for upgrading optional date properties
2016-05-26 14:36:17 -07:00
Mark Rowe f19bab76bd Build both dynamic and static libraries.
The dynamic library makes it easy to verify that there are no linker
errors when building the object store, while the static library is
easier for a binding to consume.

This also tweaks how the library targets are defined to ensure that
other CMake projects that pull in the libraries automatically get the
right include paths and link to the appropriate libraries.
2016-05-26 13:41:52 -07:00
Scott Kyle 118567ca4e [0.13.2] Bump version 2016-05-26 13:35:29 -07:00
Ari Lazier 027d4fd153 fix for upgrading optional date properties 2016-05-26 13:30:51 -07:00
Scott Kyle 39f0661535 Factor out padding rule for operators 2016-05-26 11:57:43 -07:00
Scott Kyle 1a192240df Factor out padding rule for operators 2016-05-26 11:57:43 -07:00
Scott Kyle d7474cabc6 Improve parsing of string tokens
All of the parsing behavior was confirmed to be compatible with the NSPredicate parser.
2016-05-26 01:04:41 -07:00
Scott Kyle 44576dd285 Improve parsing of string tokens
All of the parsing behavior was confirmed to be compatible with the NSPredicate parser.
2016-05-26 01:04:41 -07:00
Scott Kyle ea4c4fe6f9 Merge branch '0.13.x'
* 0.13.x:
  [0.13.1] Bump version
  Fix crash and other errors with Results snapshots
  fix for negative timestamps
2016-05-24 12:38:32 -07:00
Scott Kyle 47776d9b0a [0.13.1] Bump version 2016-05-24 11:53:10 -07:00
Scott Kyle f8ba388d14 Fix crash and other errors with Results snapshots
When deleteAll() is called on a Realm, it calls clear() on all of its Tables, which seems to not update TableViews unless they are synced. The is_row_attached(row_ndx) method still returns true otherwise. A workaround is here until that is fixed.

Fixes #434
2016-05-24 11:52:02 -07:00
Ari Lazier 9e05728dce fix for negative timestamps 2016-05-24 11:45:16 -07:00
Scott Kyle 7740665d7d Merge pull request #449 from realm/sk-crash-fix
Fix crash and other errors with Results snapshots
2016-05-24 11:02:53 -07:00
Scott Kyle 20b121c57d Add FIXME referencing core issue 2016-05-24 10:42:17 -07:00
Scott Kyle cb399e54e4 Add FIXME referencing core issue 2016-05-24 10:42:17 -07:00
Ari Lazier 47a279cc67 use mod 2016-05-24 08:25:44 -07:00
Ari Lazier 604fcc73f2 fix for negative timestamps 2016-05-24 08:23:21 -07:00
Thomas Goyne 840c46f8f3 Upgrade to core 1.0.0 and update the file exception translation to match
File::AccessError is now thrown for all file-related exceptions which don't
have more specific types (rather than std::runtime_error), which requires some
changes to how exception messages are built when translating them to get nice
results.

Also add `Realm::write_copy()` which just wraps `Group::write()` with error
translation.
2016-05-23 10:28:04 -07:00
Scott Kyle 2672cd901f Fix crash and other errors with Results snapshots
When deleteAll() is called on a Realm, it calls clear() on all of its Tables, which seems to not update TableViews unless they are synced. The is_row_attached(row_ndx) method still returns true otherwise. A workaround is here until that is fixed.

Fixes #434
2016-05-20 13:42:17 -07:00
Scott Kyle e14e922c39 Fix crash and other errors with Results snapshots
When deleteAll() is called on a Realm, it calls clear() on all of its Tables, which seems to not update TableViews unless they are synced. The is_row_attached(row_ndx) method still returns true otherwise. A workaround is here until that is fixed.

Fixes #434
2016-05-20 13:42:17 -07:00
Scott Kyle 858d67125d Consolidate RealmNode.xcodeproj into RealmJS.xcodeproj
Moved it up one level since it references the whole source tree inside the src/ directory. Added the functionality to run Node tests from Xcode on the existing RealmNode target.
2016-05-19 14:50:27 -07:00
Scott Kyle 5198a5bf4b Create a HandleScope before calling callbacks 2016-05-19 14:49:21 -07:00
Scott Kyle 5ecf13c261 Create a HandleScope before calling callbacks 2016-05-19 14:49:21 -07:00
Scott Kyle 938c7fb2f4 Add a working WeakRealmNotifier for Node
Uses libuv APIs to async schedule onto the default Node run loop.
2016-05-19 14:49:21 -07:00
Scott Kyle 2eacb66ac4 Add a working WeakRealmNotifier for Node
Uses libuv APIs to async schedule onto the default Node run loop.
2016-05-19 14:49:21 -07:00
Ari Lazier 3b6ee92224 merge master 2016-05-19 14:08:42 -07:00
Ari Lazier 1ff7c49bdb merge master 2016-05-19 14:08:42 -07:00
Ari Lazier 50c7b6245f make unique ptr manually 2016-05-19 14:06:14 -07:00
Ari Lazier a81627b1d0 make unique ptr manually 2016-05-19 14:06:14 -07:00
Ari Lazier 7f5ca3cee7 fix tab 2016-05-19 13:59:50 -07:00
Ari Lazier b06d93a27d node fixes 2016-05-19 13:35:06 -07:00
Ari Lazier 9c7292acff chrome debug and and react native fixes 2016-05-19 13:27:36 -07:00
Scott Kyle ea697f9904 Include comment about string_operator_t 2016-05-19 13:12:40 -07:00
Scott Kyle cfc96995b4 Include comment about string_operator_t 2016-05-19 13:12:40 -07:00
Scott Kyle db7cfc0f5d Add a few more parser tests 2016-05-19 13:08:39 -07:00
Ari Lazier fc794bbf31 pr fixes 2016-05-19 12:22:07 -07:00
Ari Lazier 8709f04e8b pr fixes 2016-05-19 12:22:07 -07:00
Scott Kyle 6c0608356a Allow key paths to start with "not" in queries
Fixes #445
2016-05-19 01:26:13 -07:00
Scott Kyle 60723269ec Allow key paths to start with "not" in queries
Fixes #445
2016-05-19 01:26:13 -07:00
Ari Lazier 592a35a69e add isValid methods to results and list 2016-05-16 16:01:14 -07:00
Ari Lazier fd25afe214 add isValid methods to results and list 2016-05-16 16:01:14 -07:00
Ari Lazier 6af98acd11 combine other classes 2016-05-16 15:43:46 -07:00
Ari Lazier e76cb3b905 combine class definitions and implementations for list and results 2016-05-16 15:43:46 -07:00
Ari Lazier 5fc79d4e99 apply latest changes from master 2016-05-16 15:37:40 -07:00
Scott Kyle fb887d92f5 [0.13.0-rc] Bump version 2016-05-16 14:48:08 -07:00
Ari Lazier 0f74101074 Merge pull request #423 from realm/al-timestamp
Use new timestamp format
2016-05-16 13:52:31 -07:00
Scott Kyle eb72459cce Make sure the right node-gyp is called 2016-05-16 12:57:46 -07:00
Ari Lazier bd04185772 use const ref for argument 2016-05-16 12:50:29 -07:00
Ari Lazier 4d40896e5e make method static 2016-05-16 12:45:29 -07:00
Ari Lazier 2f69728827 pr fixes 2016-05-16 11:29:58 -07:00
Scott Kyle 7a26d192ba Merge pull request #427 from realm/sk-object-inheritance
Fix ES6 class inheritance of Realm.Object with Babel
2016-05-16 11:17:45 -07:00
Ari Lazier df716d3da1 fix for android compilation 2016-05-13 18:45:42 -07:00
Ari Lazier 3d0af084bb fix for android compilation 2016-05-13 18:45:42 -07:00
Ari Lazier e438d8b586 update object store 2016-05-13 18:04:05 -07:00
Ari Lazier 0c1fdaadda update object store 2016-05-13 18:04:05 -07:00
Scott Kyle 5bc72ab2cf Make Date testing work for Node 2016-05-13 16:30:57 -07:00
Scott Kyle 0b1a686f60 Add platform.cpp file for Node 2016-05-13 16:26:31 -07:00
Ari Lazier e32df4e815 fix copy bundled files for ios 2016-05-13 15:44:25 -07:00
Ari Lazier 125dd0d1c7 merge it 2016-05-13 15:41:10 -07:00
Ari Lazier d1dcd4ff3f add additional tests 2016-05-13 15:29:59 -07:00
Scott Kyle 0250234a30 Cleanup Android platform.cpp 2016-05-13 15:25:18 -07:00
Ari Lazier e7b341dfdb merge latest from master 2016-05-13 15:05:19 -07:00
Ari Lazier 4334d55767 fix for android - create notifier after opening realm 2016-05-13 14:55:36 -07:00
Ari Lazier 78f74211b1 fix for android - create notifier after opening realm 2016-05-13 14:55:36 -07:00
Ari Lazier 80904e36e1 hopeful fix for android test 2016-05-13 14:15:34 -07:00
Ari Lazier 0ce3cdf81d hopeful fix for android test 2016-05-13 14:15:34 -07:00
Scott Kyle 323583ed67 Merge pull request #417 from realm/sk-node-6
Fix issues in Node 6
2016-05-12 12:39:31 -07:00
Ari Lazier 299c82b7d2 pr feedback 2016-05-12 11:42:22 -07:00
Thomas Goyne e6d09b513e Fix an assertion failure in IndexSet::do_add() following a table clear
We don't track insertions and deletions for tables that are merely linked to by
tables actually being observed (for performance reasons, since we don't need
that information), but the check for that was missing in one place. This would
be merely a slowdown rather than a crash, but deletions.add_shifted() can
overflow size_t if the passed-in index represents a newly inserted row and the
check for that didn't work due to not tracking insertions for the table.

The only remotely realistic way to actually have size_t overflow is to have
previously cleared the table (the table clear instruction does not include the
old size of the table, so it just marks {0, SIZE_T_MAX} as deleted).

Fixes #3537.
2016-05-11 16:08:30 -07:00
Thomas Goyne 2bcf42904a Fix some typos in comments 2016-05-11 16:08:30 -07:00
Thomas Goyne b42bf25c99 Fix compilation with latest core 2016-05-11 16:08:30 -07:00
Thomas Goyne 8d9e5db092 Give a variable a less terrible name and add a comment 2016-05-11 16:08:30 -07:00
Mark Rowe ef1c6ddc63 Add support for fine-grained notifications from backlink TVs 2016-05-11 16:08:30 -07:00
Thomas Goyne 03108713ee Make PropertyType an enum class 2016-05-11 16:08:30 -07:00
Thomas Goyne 4cf5d5db4c Report modification paths as pre-delete/inserts as required for UITableView 2016-05-11 16:08:30 -07:00
Thomas Goyne d8a69b87dc Improve change calculation performance for nontrivial object graphs
Skip doing any checking at all if none of the tables reachable from the root
table have been modified (which can happen if the table version was bumped due
to insertions, unrelated backlinks, or unlinked-to rows being deleted in linked
tables).

Add cycle checking rather than relying on the max depth to handle it, as the
worst case was O(N^16) if the cycle involved a LinkList of size N.

Track which rows have been confirmed to have not been modified.

Cache the information about the links for each of the relevant tables as
checking the table schema can get somewhat expensive.
2016-05-11 16:08:30 -07:00
Thomas Goyne f9364b50a4 Return the correct iterator from ChunkedVector::erase()
When a chunk is removed entirely it should return an iterator to the first
element in the next chunk, not the last.
2016-05-11 16:08:30 -07:00
Thomas Goyne 4df552ba2d Clean up old move info even when the row being deleted is the last one 2016-05-11 16:08:30 -07:00
Thomas Goyne 3218740fd9 Fix the check for a deleted LV in ListNotifier::add_required_change_info() 2016-05-11 16:08:30 -07:00
Thomas Goyne 632d757014 Always deliver results to the correct SharedGroup
If there are multiple Realm instances for a single file on a single thread due
to disabling caching we need to actually deliver the results to the appropriate
SharedGroup for each notifier rather than delivering them all to the first one.
2016-05-11 16:08:30 -07:00
Thomas Goyne 8879212111 Fix assertion failure when a notifier is removed before it runs 2016-05-11 16:08:30 -07:00
Thomas Goyne eee6e55eb0 Refactor SortedMoveCalculator and add more of an explanation 2016-05-11 16:08:30 -07:00
Thomas Goyne 95900f5e17 Make more member functions in CollectionNotifier pure virtual 2016-05-11 16:08:30 -07:00
Thomas Goyne 9883944df4 Pull CollectionChangeBuilder into its own file 2016-05-11 16:08:30 -07:00
Thomas Goyne 66666a75b0 Iterate backwards to pick the last valid list in select_link_list 2016-05-11 16:08:30 -07:00
Thomas Goyne 23c16f8e67 Use aggregate initialization for the base class in CollectionChangeBuilder 2016-05-11 16:08:30 -07:00
Thomas Goyne c0350b9001 Rename CollectionChangeIndices to CollectionChangeSet 2016-05-11 16:08:30 -07:00
Thomas Goyne 953e1b15a8 Rename BackgroundCollection to CollectionNotifier 2016-05-11 16:08:30 -07:00
Thomas Goyne fe5564f40e Change all of the mentions of 'query' in NotificationToken to 'notifier' 2016-05-11 16:08:30 -07:00
Thomas Goyne 31c3982bff Fix some typos 2016-05-11 16:08:30 -07:00
Thomas Goyne e75ff49421 Fix check for the target results being invalid in ResultsNotifier::deliver()
m_target_results is no longer actually set to null when the notifier is
unregistered, so check the thing which is (i.e. m_realm).
2016-05-11 16:08:30 -07:00
Thomas Goyne 238e9e3b6b Fix tracking of which tables need change info with multiple source notifier versions 2016-05-11 16:08:30 -07:00
Thomas Goyne ea3a2f4711 Refactor the incremental change tracking for mixed source versions 2016-05-11 16:08:30 -07:00
Thomas Goyne 69cefd052e Deliver the new TableView even if it did not change
Even if the new TV has the same rows as the old one, we need to hand it over to
the destination thread to bump the outside version of the destination thread's
TV to avoid rerunning the query there.
2016-05-11 16:08:30 -07:00
Thomas Goyne 83b4d8ded2 Make RealmCoordinator::run_async_notifiers a bit less gross 2016-05-11 16:08:30 -07:00
Thomas Goyne 32b05314f5 Remove extraneous semicolons 2016-05-11 16:08:30 -07:00
Thomas Goyne 2ce0e2e37f Remove transaction log handlers for old pk functions 2016-05-11 16:08:30 -07:00
Thomas Goyne c12d87427a Clean up includes and forward declarations a bit 2016-05-11 16:08:30 -07:00
Thomas Goyne 155d949793 Only track inserts and deletes for tables being queried directly
# Conflicts:
#	src/collection_notifications.cpp
#	src/collection_notifications.hpp
2016-05-11 16:08:30 -07:00
Thomas Goyne a86265f4dc Move CollectionChangeBuilder to background_collection.hpp 2016-05-11 16:08:30 -07:00