Commit 50bf418
Spoke User RP Tests (#146)
* LH Refactor (#92)
* feat: Naive incremental avg calc
* wip: Poc risk premium calc
* feat: Skeleton code for risk premium calc
* feat: Fix lh rp math according to new specs
* fix: Name changes for clarity wrt new design
* feat: Borrow rate
* feat: Split interest accrual and br calcs
* feat: Use spoke drawn shares in LH br calc
* fix: Simplify names
* fix: Remove unused code
* test: Initial borrow rate test
* test: Supplying w same risk premium doesnt affect borrow rate
* feat: LH borrow rate calc
* wip: Adjust math on rp calcs
* wip: Update interest accrual, debugging tests
* fix: No accrual if zero drawn
* fix: Add back remainder of test
* wip: Supply test failing
* wip: Add todos
* fix: Update accrue interest function
* fix: Pass risk premium and weight separately
* wip: 2 spokes drawing fuzz test
* test: Fuzz risk premium with 2 spokes
* test: Add fuzz test rp 3 spokes
* fix: Stack too deep issue
* fix: Rename test
* wip: Final changes before new algo
* Resolve supply token transfer flow (#76)
* fix: Change token transfer flow during supply action
* test: Resolve approvals in tests
* test: Resolve broken tests due to approvals
* test: Resolve broken tests
* test: Add tests for insufficient allowance
* chore: Remove console2 import
* fix: Rename user to supplier; resolve tests with updated realistic setup
* test: Resolve tests
* fix: Resolve supply param
* test: Mint set value to user in tests
* test: Skip over vm.warp
* test: Fix unnecesary casting
* Resolve restore token flow (#77)
* upd: restore token flow based on latest spec
* upd: settler => repayer
* test: Resolve unnecessary casting
---------
Co-authored-by: dhairya <55102840+DhairyaSethi@users.noreply.github.com>
* wip: Refactor liquidity hub
* fix: Update borrow index and rename spoke shares
* wip: Refactor spoke
* wip: Refactoring tests
* fix: asset and supply amounts distinction
* fix: lib usage, use percentageMath abstractions over constants
* chore: clean getTotalAssets
* fix: cleanup asset conversion helpers
* fix: normalise new var usage
* chore: bring soke and interface up to date
* wip tests refactor
* chore: cleanup accrue interest existing impl
* feat: fix weighted avg calc
* test: comment new changes, test refactor needed, project compiles
* test: add `toMigrate` suffix
* chore: use abs imports
* fix: use correct available assets for exchange ratio
* chore: add decimals
* test: configure enviornment
* wip: liquidity hub risk premium test
* feat(weightedAvgLib): add precision before using lib
* feat: fix rp to rad and use in bps, room for more precision
* feat: LiquidityHub.Spoke => SpokeData
* feat: asset logic lib
* feat: spoke data logic lib
* todo: bug in interest rate strat
* test: liquidity hub risk premium base two scenario tests
* fix: use correct virtualUnderlyingBalance
* feat: make asset logic lib external
---------
Co-authored-by: Cheyenne Atapour <cheyenneatapour@gmail.com>
Co-authored-by: YBM <yan@avara.xyz>
* Short term bugfix for DefaultReserveInterestRateStrategy (#99)
* fix: Return values in ray
* chore: Add todo comment
* Fix _addSpoke struct order (#101)
* fix: Resolve _addSpoke struct order
* refactor: Params -> config consistent naming
* feat: radMul optimise interest calc (#106)
* Refactor Borrow Rate Tests (#109)
* fix: Wad math for borrow rate
* fix: Borrow rate test
* fix: Proper math on basic borrow rate tests
* fix: 2 spoke test
* feat: radMul optimise interest calc
* feat: Apply rad math for interest rate
* fix: Change test to exactly equal
* wip: Test 2 spokes diff weights
* wip: Two spokes diff weights test simplify math
* test: Fix everything except 3 spoke fuzz
* chore: Cleanup comments
* fix: Use rp from lh for 3 spoke fuzz test
* fix: Pr nits
* fix: Test naming conventions
* fix: Remove lh prefix in test names
---------
Co-authored-by: DhairyaSethi <55102840+DhairyaSethi@users.noreply.github.com>
* chore: skip pending tests (#113)
* LH `supply` implementation and resolve LH tests (#108)
* test: Assertions on spokeData
* test: Show sharesAmount accounting bug
* test: fix LH supply accounting, post shares conversion
* test: resolve supply tests
* test: test_supply_revertsWith_invalid_amount, update shares error
* test: test_supply_revertsWith_invalid_shares_amount
* test: clarify storage slots
* test: remove loading lib in test
* fix: no need to recast
* feat: update supply inputs to RP rad; fix draw test
* test: resolve remaining tests in LH
* chore: remove unneeded casting, clean up vm utils call
* chore: remove console2
* chore: remove console2
* test: add assertion
* chore: remove skip
* chore: rename LH test
* LH `withdraw` refactor and implementation (#115)
* test: Assertions on spokeData
* test: Show sharesAmount accounting bug
* test: fix LH supply accounting, post shares conversion
* test: resolve supply tests
* test: test_supply_revertsWith_invalid_amount, update shares error
* test: test_supply_revertsWith_invalid_shares_amount
* test: clarify storage slots
* test: remove loading lib in test
* fix: no need to recast
* feat: update supply inputs to RP rad; fix draw test
* test: resolve remaining tests in LH
* chore: remove unneeded casting, clean up vm utils call
* chore: remove console2
* chore: remove console2
* test: add assertion
* fix: resolve spoke shares after withdraw, resolve test
* test: test_withdraw_fuzz_events
* test: clarify assertions, resolve test_fuzz_first_supply
* test: test_supply_fuzz_multi
* test: test_withdraw_revertsWith_supplied_amount_exceeded
* chore: optimize unnecessary recasting, add method to interface
* chore: optimize utils
* chore: remove console2
* chore: todo next
* chore: remove short circuit from test
* chore: refactor according to code conventions
* test: fix bug
* test: revert casting to MockPriceOracle
* chore: bps format convention
* chore: default to vm.skip
* chore: avoid uint cast
* test: cleanup, use vm block timestamp
* chore: use vm timestamp
* test: add randomizer in base test
* chore: remove the internal method convention for tests
* chore: cast oracle in base test
* chore: fix remaining oracles casting in tests
* chore: remove todo comments
* refactor: resolve test_supply, use init env
* refactor: resolve supply tests
* test: resolve withdraw tests
* test: resolve draw tests
* test: resolve test_restore
* test: resolve restore tests
* refactor: finish migration to initEnv
* test: resolve draw tests with base test vars
* test: resolve tests, migration
* test: test_first_draw_same_block
* chore: clarify test names
* chore: clean up tests covered in separate file
* chore: rename tests according to conventions; draw fuzz test
* test: optimize, remove var
* test: test_restore_same_block
* chore: named struct syntax
* chore: named input arg syntax
* feat: return baseBorrowIndex from LH methods, update natspec
* refactor: update test utils to allow RP input; update spoke according to LH outputs
* test: test_supply_with_increased_index
* test: remove console.log; test_supply_with_increased_index with RP
* test: test_supply_with_increased_index_with_premium
* test: assertions on test_supply_with_increased_index
* chore: optimization on calc
* test: test_withdraw_all_with_interest
* test: clean up assertions for test_withdraw_all_with_interest
* test: test_restore_revertsWith_invalid_restore_amount_with_interest
* test: test_restore_fuzz_revertsWith_invalid_restore_amount_with_interest
* test: test_restore_revertsWith_invalid_restore_amount clean up minimal path
* test: test_restore_fuzz_revertsWith_invalid_restore_amount_with_interest_and_premium
* refactor: _setUpIncreasedIndex with rate input
* refactor: named arg syntax for _setUpIncreasedIndex
* test: test_restore_partial_premium; add some todo
* test: test_restore_fuzz_partial_premium
* fix: revert supply return vars
* test: test_restore_partial_premium_and_base; move internal method down
* test: expand bounds; test_restore_fuzz_partial_premium_and_base
* chore: add some comments
* test: consolidate tests into test_supply_fuzz
* test: test_supply_fuzz_multi_asset_multi_spoke
* chore: remove comments
* test: resolve fuzz test condition
* test: clean up and remove some redundancy
* chore: revert withdraw return params; clean up natspec, console log
* chore: remove unneeded vars
* test: optimize, remove unneeded
* refactor: add approvals to basetest setup
* refactor: remove unneeded fuzz input
* test: test_withdraw_fuzz_all_with_interest
* chore: remove some comments
* chore: revert changes to supply return args
* chore: remove unneeded var
* chore: migrate mock users, resolve tests
* chore: resolve test
* chore: resolve test
* chore: resolve test
* chore: resolve test
* chore: resolve test
* chore: resolve tests
* chore: resolve tests
* chore: resolve tests
* chore: resolve tests
* chore: resolve test
* chore: resolve test
* chore: resolve test
* chore: resolve tests, remove deal
* chore: resolve bound granularity
* chore: natspec, move to interface, update utils
* chore: typo
* chore: onBehalfOf -> to
* chore: revert some return sigs
* chore: update natspec
* chore: resolve compilation
* chore: inheritdoc
* chore: revert return sig
* chore: rename internal method
* chore: update error msg
* chore: restoreAmount > 0
* chore: clean up pranks; short circuit on zero accrued
* chore: resolve tests
* chore: resolve tests, cleanup
* chore: set a var to reuse; clean up prank
* refactor: re-arrange method args
* chore: method args
* refactor: naming
* chore: clean up prank
* refactor: load hub data more clearly through each action within test
* Accrue Interest Tests (#129)
* test: Simple base interest accrual
* test: Fuzz borrow amount and time elapsed
* wip: Outstanding rp test
* test: Accrue interest 10 percent rp
* test: Fuzz rp borrow amount and elapsed
* fix: Pr nits
* wip: Debugging accrual test changing rate
* wip: Testing borrow rate accrual when changed
* fix: Changing borrow rate accrual test
* feat: Move deal and approve to base test
* chore: Cleanup unneeded variables
* style: Use utils where appropriate
* test: Import utils relatively
* fix: Remove extraneous arg from utils calls
* style: Revert utils import style
* fix: resolve merged dev changes
* refactor: break out tests into separate file
* refactor: clean up file locations
* refactor: LH config tests separated
* chore: remove unneeded var
* chore: whitespace
* feat: Add new vars, skeleton supply code
* fix: Reorder code skeleton
* feat: Preview next borrow rate for accruing interest
* Resolve LH `draw`/`restore` (#128)
* feat: Implement accrue interest
* feat: Add liquidity premium to assets on hub
* feat: Implement updating single user risk premium
* feat: User specific accrue interest
* feat: Implement weighted avg rp on spoke
* style: Update variable names in update rp
* fix: Calculation of cumulated base debt
* fix: Single user rp calc
* fix: Remove legacy variables
* test: Unskip spoke tests
* test: Migrate existing supply tests
* test: Supply fuzz amounts
* fix: Requested PR changes
* test: Spoke supply insufficient allowance
* test: Move wbtc id to base test
* style: Replace simple helper functions
* feat: Withdraw implementation
* feat: Implement borrow
* feat: Mapping reserveId to assetId
* style: Move assetId to reserve struct
* fix: Remove sorting from user risk premium calc
* style: Change storage layout of users
* fix: Revert removal of helper functions
* feat: Implement repay
* fix: Remove self-referential reserve id
* fix: Usage of storage
* todo: Note where we can use shared logic library
* test: Check reserve supply shares
* chore: Remove todo
* test: No debt accrue interest tests
* fix: Only repay max debt
* fix: Only allow withdraw up to supplied amount
* fix: Allow max uint256 withdrawal
* fix: Only allow restoring up to max debt
* fix: Use assetId, revert hub changes
* fix: Cache supplied amount
* fix: Add back todos
* fix: Revert max withdraw and repay changes
* test: Borrow on spoke
* fix: Remove unused variable
* fix: Remove duplicated base debt adjustment logic
* test: Borrow fuzz amounts
* fix: Check 0 on LH functions
* test: 0 borrow amount
* test: Organize borrow and supply tests
* fix: Remove todos for max uint on hub
* fix: Misc pr fixes
* test: Use test errors library
* fix: Use assetId when converting to shares
* test: Use reserve id on spoke
* test: Invalid amount tests
* test: Different reserve ids vs asset ids
* test: Add extra dai asset in base
* test: Nonzero liquidity premiums
* fix: Inline return reserveId
* test: Create spoke info struct mapping
* test: Add dai2 ir. poc can't add same assetId twice to spoke
* fix: Misc pr changes requested
* fix: Do not add spoke again to lh for same asset
* fix: Minor requested changes on pr
* fix: Reorder params borrow and withdraw
* Add Spoke Logic (#140)
* refactor: resolve test_supply, use init env
* refactor: resolve supply tests
* test: resolve withdraw tests
* test: resolve draw tests
* test: resolve test_restore
* test: resolve restore tests
* refactor: finish migration to initEnv
* test: resolve draw tests with base test vars
* test: resolve tests, migration
* test: test_first_draw_same_block
* chore: clarify test names
* chore: clean up tests covered in separate file
* chore: rename tests according to conventions; draw fuzz test
* test: optimize, remove var
* test: test_restore_same_block
* chore: named struct syntax
* chore: named input arg syntax
* feat: return baseBorrowIndex from LH methods, update natspec
* refactor: update test utils to allow RP input; update spoke according to LH outputs
* test: test_supply_with_increased_index
* test: remove console.log; test_supply_with_increased_index with RP
* test: test_supply_with_increased_index_with_premium
* test: assertions on test_supply_with_increased_index
* chore: optimization on calc
* test: test_withdraw_all_with_interest
* test: clean up assertions for test_withdraw_all_with_interest
* test: test_restore_revertsWith_invalid_restore_amount_with_interest
* test: test_restore_fuzz_revertsWith_invalid_restore_amount_with_interest
* test: test_restore_revertsWith_invalid_restore_amount clean up minimal path
* test: test_restore_fuzz_revertsWith_invalid_restore_amount_with_interest_and_premium
* refactor: _setUpIncreasedIndex with rate input
* refactor: named arg syntax for _setUpIncreasedIndex
* test: test_restore_partial_premium; add some todo
* test: test_restore_fuzz_partial_premium
* fix: revert supply return vars
* test: test_restore_partial_premium_and_base; move internal method down
* test: expand bounds; test_restore_fuzz_partial_premium_and_base
* chore: add some comments
* test: consolidate tests into test_supply_fuzz
* test: test_supply_fuzz_multi_asset_multi_spoke
* chore: remove comments
* test: resolve fuzz test condition
* test: clean up and remove some redundancy
* chore: revert withdraw return params; clean up natspec, console log
* chore: remove unneeded vars
* test: optimize, remove unneeded
* refactor: add approvals to basetest setup
* refactor: remove unneeded fuzz input
* test: test_withdraw_fuzz_all_with_interest
* chore: remove some comments
* chore: revert changes to supply return args
* chore: remove unneeded var
* chore: migrate mock users, resolve tests
* chore: resolve test
* chore: resolve test
* chore: resolve test
* chore: resolve test
* chore: resolve test
* chore: resolve tests
* chore: resolve tests
* chore: resolve tests
* chore: resolve tests
* chore: resolve test
* chore: resolve test
* chore: resolve test
* chore: resolve tests, remove deal
* chore: resolve bound granularity
* chore: natspec, move to interface, update utils
* chore: typo
* chore: onBehalfOf -> to
* chore: revert some return sigs
* chore: update natspec
* chore: resolve compilation
* chore: inheritdoc
* chore: revert return sig
* chore: rename internal method
* chore: update error msg
* chore: restoreAmount > 0
* chore: clean up pranks; short circuit on zero accrued
* chore: resolve tests
* chore: resolve tests, cleanup
* chore: set a var to reuse; clean up prank
* refactor: re-arrange method args
* chore: method args
* refactor: naming
* chore: clean up prank
* refactor: load hub data more clearly through each action within test
* fix: resolve merged dev changes
* refactor: break out tests into separate file
* refactor: clean up file locations
* refactor: LH config tests separated
* chore: remove unneeded var
* chore: whitespace
* feat: Add new vars, skeleton supply code
* fix: Reorder code skeleton
* feat: Preview next borrow rate for accruing interest
* feat: Implement accrue interest
* feat: Add liquidity premium to assets on hub
* feat: Implement updating single user risk premium
* feat: User specific accrue interest
* feat: Implement weighted avg rp on spoke
* style: Update variable names in update rp
* fix: Calculation of cumulated base debt
* fix: Single user rp calc
* fix: Remove legacy variables
* test: Unskip spoke tests
* test: Migrate existing supply tests
* test: Supply fuzz amounts
* fix: Requested PR changes
* Rebuild Liquidity Hub (#103)
* test: Spoke supply insufficient allowance
* test: Move wbtc id to base test
* style: Replace simple helper functions
* feat: Withdraw implementation
* feat: Implement borrow
* feat: Mapping reserveId to assetId
* style: Move assetId to reserve struct
* fix: Remove sorting from user risk premium calc
* style: Change storage layout of users
* fix: Revert removal of helper functions
* feat: Implement repay
* fix: Remove self-referential reserve id
* fix: Usage of storage
* todo: Note where we can use shared logic library
* test: Check reserve supply shares
* chore: Remove todo
* test: No debt accrue interest tests
* fix: Only repay max debt
* fix: Only allow withdraw up to supplied amount
* fix: Allow max uint256 withdrawal
* fix: Only allow restoring up to max debt
* fix: Use assetId, revert hub changes
* fix: Cache supplied amount
* fix: Add back todos
* fix: Revert max withdraw and repay changes
* test: Borrow on spoke
* fix: Remove unused variable
* fix: Remove duplicated base debt adjustment logic
* test: Borrow fuzz amounts
* fix: Check 0 on LH functions
* test: 0 borrow amount
* fix: Remove todos for max uint on hub
* fix: Misc pr fixes
* test: Use test errors library
* fix: Use assetId when converting to shares
* test: Use reserve id on spoke
* test: Invalid amount tests
* test: Different reserve ids vs asset ids
* test: Add extra dai asset in base
* test: Nonzero liquidity premiums
* fix: Inline return reserveId
* test: Create spoke info struct mapping
* test: Add dai2 ir. poc can't add same assetId twice to spoke
* fix: Misc pr changes requested
* fix: Do not add spoke again to lh for same asset
* fix: Minor requested changes on pr
* fix: Reorder params borrow and withdraw
* todo: Supply tests
* fix: Asset id for lh functions
* fix: Remove case of same assetId listed twice on spoke
* fix: Remove unneeded struct
* fix: Reorder event params
* fix: Clarifying comment for dai2 case
---------
Co-authored-by: YBM <yan@avara.xyz>
Co-authored-by: dhairya <55102840+DhairyaSethi@users.noreply.github.com>
* Fix: BaseBorrowIndex (#166)
* wip: works so far
* chore: cleanup
* misc
* poc: suppliers can withdraw 2x and change right after supplying
* poc: invalid rounding leads infinite to 1 wei withdraw
* chore: cleanup fullMath & unnecessary interface
* feat: borrow index fix
* feat: withdraw shares infinite dust fix
* test: scenario tests, LiquidityHubAccrueAssetInterestDynamicTimeTest fixed from #163
* chore: rm hotfix
* feat: fix index issue on spoke
* chore: minor opt
* chore: rm test remenant
* fix: resolve test_addSpoke
* fix: resolve test_supply_multi_supply_minimal_shares
* fix: resolve supply tests
* fix: resolve test_withdraw_all_with_interest
* fix: resolve LiquidityHubWithdrawTest
* fix: resolve test_accrueInterest_OnlySupply
* test: add skip to have passing CI
* fix: syntax with braces
* fix: refactor tests; optimize structure
* Resolve prior tests broken by LH index/timestamp fix (#170)
* fix: passing test
* fix: resolve test_accrueInterest_fuzz_ChangingBorrowRate
* chore: braces
* chore: remove console log; variable bound
* chore: clean up, remove comments
* fix: set assertion to 1 wei difference
* chore: error msg
* fix: forge config for internal calls expect reverts since lib is tested inlined
* ref: split borrow index tests
* test: rm skip
* fix: spoke accrue interest
* chore: filename typo
---------
Co-authored-by: YBM <yan@avara.xyz>
* test: Accrue interest via borrow and wait
* test: Single collateral user rp
* test: User rp fuzz single collateral
* test: User rp 2 assets, weth covering both
* test: 2 assets covering user rp
* test: User risk premium 2 assets equal parts
* test: Two assets fuzzed
* test: Supply more risky asset doesnt impact user rp
* test: Fuzz two assets, fixing borrow amount
* test: Three assets fuzzed diff lps
* test: User risk premium fuzzing 4 assets
* test: Fuzz four assets, then change price of one
* cleanup: Remove old comments
* wip: Add back dynamic sorting
* fix: Use only array size of collateral assets
* fix: One line comparator function
* fix: Do not assume reserves in order of lp on spoke
* test: Fuzz change lp of asset
* chore: make hub, oracle immutable
* wip: Use struct to pack test variables
* fix: Two assets equal part test using struct
* fix: Four assets fuzz supply and borrow using struct
* fix: Tests to use struct to pack variables
* fix: Misc pr fixes
* fix: Use assetId in getInterestRate
* fix: Spoke accrue iterest tests to use getters
* feat: initial spoke fixes
* feat: in memory key, value list
* fix: Proper asset check for addSpoke
* feat: user account data
* chore: cleanup unused method
* wip: Amount normalization in tests
* wip: Fixing user rp tests with normalized amounts
* fix: Rule out dust case
* test: Normalize by amounts
* fix: Remove unnecessary code, fix comment
* fix: Use getters, no trivial supply action
* feat: Helper function to calc user RP
* test: User rp fuzz everything
* test: Apply user risk premium on one borrowed reserve
* wip: Failing user rp test after accrual
* wip: Test 2 reserves 2 users borrowing
* test: Accrue interest two assets, cleanup
* add snapshots
* feat: change max limits in keyValueList
* feat: wadify value in base currency
* test: add wadify to normalise helper
* fix: snapshot
* chore: nits, wadify tests
* wip: Clean up tests
* wip: Failing case of reserve outstanding premium not sum of users
* debug: Show console logs
* chore: Cleanup tests
* fix: Pr comments
* test: Non fuzzed 2 users 2 reserves borrowed
* test: Show rp percolates correctly
* fix: Misc pr comments
* fix: Address pr comments
* refactor: Test structs
* fix: Pr comments, add test descriptions
* fix: Simplify test structs
* fix: Remove unnecessary setups
---------
Co-authored-by: dhairya <55102840+DhairyaSethi@users.noreply.github.com>
Co-authored-by: YBM <yan@avara.xyz>1 parent d5e5380 commit 50bf418
8 files changed
Lines changed: 1822 additions & 163 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
501 | 501 | | |
502 | 502 | | |
503 | 503 | | |
| 504 | + | |
504 | 505 | | |
505 | 506 | | |
506 | 507 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
266 | 266 | | |
267 | 267 | | |
268 | 268 | | |
269 | | - | |
| 269 | + | |
270 | 270 | | |
271 | 271 | | |
272 | 272 | | |
| |||
621 | 621 | | |
622 | 622 | | |
623 | 623 | | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
624 | 629 | | |
625 | 630 | | |
626 | 631 | | |
| |||
651 | 656 | | |
652 | 657 | | |
653 | 658 | | |
654 | | - | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
655 | 664 | | |
656 | 665 | | |
657 | 666 | | |
658 | | - | |
659 | | - | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
660 | 670 | | |
661 | 671 | | |
662 | 672 | | |
663 | | - | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
664 | 691 | | |
665 | 692 | | |
666 | 693 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
339 | 339 | | |
340 | 340 | | |
341 | 341 | | |
342 | | - | |
| 342 | + | |
343 | 343 | | |
344 | 344 | | |
345 | 345 | | |
| |||
494 | 494 | | |
495 | 495 | | |
496 | 496 | | |
497 | | - | |
| 497 | + | |
498 | 498 | | |
499 | 499 | | |
500 | 500 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
315 | 315 | | |
316 | 316 | | |
317 | 317 | | |
318 | | - | |
| 318 | + | |
319 | 319 | | |
320 | 320 | | |
321 | 321 | | |
| |||
628 | 628 | | |
629 | 629 | | |
630 | 630 | | |
631 | | - | |
| 631 | + | |
632 | 632 | | |
633 | 633 | | |
634 | 634 | | |
| |||
893 | 893 | | |
894 | 894 | | |
895 | 895 | | |
896 | | - | |
| 896 | + | |
897 | 897 | | |
898 | 898 | | |
899 | 899 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | | - | |
| 8 | + | |
8 | 9 | | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
| 13 | + | |
19 | 14 | | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
25 | 20 | | |
26 | 21 | | |
| 22 | + | |
27 | 23 | | |
28 | 24 | | |
| 25 | + | |
29 | 26 | | |
30 | 27 | | |
31 | | - | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
32 | 31 | | |
33 | 32 | | |
34 | 33 | | |
35 | 34 | | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
| 35 | + | |
40 | 36 | | |
41 | 37 | | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
46 | 41 | | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
47 | 120 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
73 | 75 | | |
74 | 76 | | |
75 | 77 | | |
76 | | - | |
| 78 | + | |
77 | 79 | | |
78 | 80 | | |
79 | 81 | | |
| |||
119 | 121 | | |
120 | 122 | | |
121 | 123 | | |
122 | | - | |
123 | | - | |
| 124 | + | |
| 125 | + | |
124 | 126 | | |
125 | 127 | | |
126 | 128 | | |
| |||
246 | 248 | | |
247 | 249 | | |
248 | 250 | | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
249 | 323 | | |
0 commit comments