Transaction Hash:
Block:
9788200 at Apr-01-2020 08:35:07 PM +UTC
Transaction Fee:
0.0048958119 ETH
$12.64
Gas Used:
750,316 Gas / 6.525 Gwei
Emitted Events:
35 |
RebalancingSetTokenV2.Transfer( from=[Sender] 0xd1898665a01a91ac10bd2c6cb1899336df34ac33, to=0x0000000000000000000000000000000000000000, value=891364902506000000 )
|
36 |
Core.SetRedeemed( _setAddress=RebalancingSetTokenV2, _quantity=891364902506000000 )
|
37 |
SetToken.Transfer( from=Vault, to=[Receiver] 0x4f57e1f2020c35cd2fb45cf53cfeb6ff2e796180, value=2239999999997578 )
|
38 |
SetToken.Transfer( from=[Receiver] 0x4f57e1f2020c35cd2fb45cf53cfeb6ff2e796180, to=0x0000000000000000000000000000000000000000, value=2230000000000000 )
|
39 |
Core.SetRedeemed( _setAddress=SetToken, _quantity=2230000000000000 )
|
40 |
FiatTokenProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x0000000000000000000000005b67871c3a857de81a1ca0f9f7945e5670d986dc, 0x0000000000000000000000000acd0b5cf881cd8398ac563872209de1ce15df0f, 0000000000000000000000000000000000000000000000000000000005226618 )
|
41 |
Exchange.Fill( makerAddress=0x56178a0d5F301bAf6CF3e1Cd53d9863437345Bf9, feeRecipientAddress=0x55662E22...f8f0C9FBb, takerAddress=ZeroExExchangeWrapper, senderAddress=ZeroExExchangeWrapper, makerAssetFilledAmount=655010569538438141, takerAssetFilledAmount=86140440, makerFeePaid=0, takerFeePaid=0, orderHash=88AE47EDCAD8B20EAB98F4565034801ABC89B5BCDA606812638F7117A636E2D5, makerAssetData=0xF47261B0000000000000000000000000C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, takerAssetData=0xF47261B0000000000000000000000000A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48 )
|
42 |
WETH9.Transfer( src=0x56178a0d5F301bAf6CF3e1Cd53d9863437345Bf9, dst=ZeroExExchangeWrapper, wad=655010569538438141 )
|
43 |
FiatTokenProxy.0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef( 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, 0x0000000000000000000000000acd0b5cf881cd8398ac563872209de1ce15df0f, 0x00000000000000000000000056178a0d5f301baf6cf3e1cd53d9863437345bf9, 0000000000000000000000000000000000000000000000000000000005226618 )
|
44 |
WETH9.Transfer( src=ZeroExExchangeWrapper, dst=Vault, wad=655010569538438141 )
|
45 |
WETH9.Transfer( src=Vault, dst=[Receiver] 0x4f57e1f2020c35cd2fb45cf53cfeb6ff2e796180, wad=655010569538438141 )
|
46 |
0x8f2d580c3cccd96c3541386daac0af71c5d1c0f9.0x06c4316d43c46a4ded573b4dee3cf64d66b87d192f4f6bd88b830ae18b29c7c0( 0x06c4316d43c46a4ded573b4dee3cf64d66b87d192f4f6bd88b830ae18b29c7c0, 0x0000000000000000000000004f57e1f2020c35cd2fb45cf53cfeb6ff2e796180, 00000000000000000000000032a3d08e194a6ec29c7532a80a86c661782aa98d, 0000000000000000000000000000000000000000000000000007ec2c55d96000, 0000000000000000000000000000000000000000000000000000000000000080, 00000000000000000000000000000000000000000000000000000000000000c0, 0000000000000000000000000000000000000000000000000000000000000001, 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2, 0000000000000000000000000000000000000000000000000000000000000001, 000000000000000000000000000000000000000000000000091710a4817703fd )
|
47 |
WETH9.Withdrawal( src=[Receiver] 0x4f57e1f2020c35cd2fb45cf53cfeb6ff2e796180, wad=655010569538438141 )
|
48 |
SetToken.Transfer( from=[Receiver] 0x4f57e1f2020c35cd2fb45cf53cfeb6ff2e796180, to=Vault, value=9999999997578 )
|
49 |
SetToken.Approval( owner=[Receiver] 0x4f57e1f2020c35cd2fb45cf53cfeb6ff2e796180, spender=TransferProxy, value=115792089237316195423570985008687907853269984665640564039456337266594978624695 )
|
50 |
0x4f57e1f2020c35cd2fb45cf53cfeb6ff2e796180.0xb29ec646affe25971fbbb20d14f7c9beed0d7d8e6a47eb46beb893487aa22fa4( 0xb29ec646affe25971fbbb20d14f7c9beed0d7d8e6a47eb46beb893487aa22fa4, 0x00000000000000000000000078e14b9a8d006ec7e23988a0a87263569c3f4839, 0x000000000000000000000000d1898665a01a91ac10bd2c6cb1899336df34ac33, 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2, 0000000000000000000000000000000000000000000000000c5ec3a7fb1eee80, 000000000000000000000000000000000000000000000000091710a4817703fd )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x080bf510...022937712 | (0x: Exchange v2.1) | ||||
0x32a3D08e...1782aa98d | |||||
0x35F61DFB...D5B3a738d
Miner
| (firepool) | 86.614360595913078244 Eth | 86.619256407813078244 Eth | 0.0048958119 | |
0x4f57e1f2...f2e796180 | (Set: Rebalancing Set Exchange Issuance Module V2) | ||||
0x5B67871C...670D986Dc | (Set: Vault) | ||||
0x78E14B9A...69c3F4839 | |||||
0x8F2D580C...1C5d1c0f9 | (Set: Exchange Issuance Module V2) | ||||
0xA0b86991...E3606eB48 | |||||
0xC02aaA39...83C756Cc2 | 2,497,270.087304162664046365 Eth | 2,497,269.432293593125608224 Eth | 0.655010569538438141 | ||
0xD1898665...6df34AC33 |
0.272151190581234393 Eth
Nonce: 232
|
0.922265948219672534 Eth
Nonce: 233
| 0.650114757638438141 |
Execution Trace
Set: Rebalancing Set Exchange Issuance Module V2.4b096173( )
-
Core.validSets( _set=0x78E14B9A8D006eC7E23988a0A87263569c3F4839 ) => ( True )
-
RebalancingSetTokenV2.STATICCALL( )
-
RebalancingSetTokenV2.STATICCALL( )
Core.redeemModule( _burnAddress=0xD1898665a01A91AC10bD2C6cb1899336df34AC33, _incrementAddress=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _set=0x78E14B9A8D006eC7E23988a0A87263569c3F4839, _quantity=891364902506000000 )
0xdc733ec262f32882f7c05525cc2d09f2c04d86ac.49468457( )
-
RebalancingSetTokenV2.STATICCALL( )
-
-
RebalancingSetTokenV2.burn( _from=0xD1898665a01A91AC10bD2C6cb1899336df34AC33, _quantity=891364902506000000 )
-
RebalancingSetTokenV2.STATICCALL( )
-
RebalancingSetTokenV2.STATICCALL( )
-
RebalancingSetTokenV2.STATICCALL( )
-
CoreIssuanceLibrary.calculateRequiredComponentQuantities( _componentUnits=[2513], _naturalUnit=1000000, _quantity=891364902506000000 ) => ( [2239999999997578] )
-
Vault.batchDecrementTokenOwner( _tokens=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d], _owner=0x78E14B9A8D006eC7E23988a0A87263569c3F4839, _quantities=[2239999999997578] )
-
RebalancingSetTokenV2.STATICCALL( )
-
Vault.batchIncrementTokenOwner( _tokens=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d], _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _quantities=[2239999999997578] )
-
Vault.getOwnerBalance( _token=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 2239999999997578 )
Core.withdrawModule( _from=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _to=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _token=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _quantity=2239999999997578 )
-
CommonValidationsLibrary.validateNonEmpty( _addressArray=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d] )
-
CommonValidationsLibrary.validateEqualLength( _addressArray=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d], _uint256Array=[2239999999997578] )
-
Vault.batchDecrementTokenOwner( _tokens=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d], _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _quantities=[2239999999997578] )
Vault.batchWithdrawTo( _tokens=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d], _to=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _quantities=[2239999999997578] )
ERC20Wrapper.balanceOf( _token=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 945435559266929596 )
-
SetToken.balanceOf( owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 945435559266929596 )
-
ERC20Wrapper.beabacc8( )
-
SetToken.transfer( to=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, value=2239999999997578 ) => ( True )
-
ERC20Wrapper.balanceOf( _token=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 943195559266932018 )
-
SetToken.balanceOf( owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 943195559266932018 )
-
-
Set: Exchange Issuance Module V2.188eec69( )
-
Core.validSets( _set=0x32a3D08e194A6EC29C7532A80A86c661782aa98d ) => ( True )
-
SetToken.STATICCALL( )
-
Core.exchangeIds( _exchangeId=1 ) => ( 0x0acd0b5cF881cd8398ac563872209De1ce15dF0F )
0xdc733ec262f32882f7c05525cc2d09f2c04d86ac.03cd8870( )
-
SetToken.tokenIsComponent( _tokenAddress=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 ) => ( True )
-
Core.redeemModule( _burnAddress=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _incrementAddress=0x8F2D580C3cccd96c3541386daac0AF71C5d1c0f9, _set=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _quantity=2230000000000000 )
0xdc733ec262f32882f7c05525cc2d09f2c04d86ac.49468457( )
-
SetToken.STATICCALL( )
-
SetToken.burn( _from=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _quantity=2230000000000000 )
-
SetTokenFactory.CALL( )
-
-
SetToken.STATICCALL( )
-
SetToken.STATICCALL( )
-
SetToken.STATICCALL( )
-
CoreIssuanceLibrary.calculateRequiredComponentQuantities( _componentUnits=[386280], _naturalUnit=10000000000000, _quantity=2230000000000000 ) => ( [86140440] )
-
Vault.batchDecrementTokenOwner( _tokens=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48], _owner=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _quantities=[86140440] )
-
SetToken.STATICCALL( )
-
Vault.batchIncrementTokenOwner( _tokens=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48], _owner=0x8F2D580C3cccd96c3541386daac0AF71C5d1c0f9, _quantities=[86140440] )
-
Vault.getOwnerBalance( _token=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 0 )
-
Core.exchangeIds( _exchangeId=1 ) => ( 0x0acd0b5cF881cd8398ac563872209De1ce15dF0F )
-
AddressToAddressWhiteList.whitelist( 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 ) => ( 0x0000000000000000000000000000000000000000 )
Core.withdrawModule( _from=0x8F2D580C3cccd96c3541386daac0AF71C5d1c0f9, _to=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, _token=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, _quantity=86140440 )
-
CommonValidationsLibrary.validateNonEmpty( _addressArray=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48] )
-
CommonValidationsLibrary.validateEqualLength( _addressArray=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48], _uint256Array=[86140440] )
-
Vault.batchDecrementTokenOwner( _tokens=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48], _owner=0x8F2D580C3cccd96c3541386daac0AF71C5d1c0f9, _quantities=[86140440] )
Vault.batchWithdrawTo( _tokens=[0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48], _to=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, _quantities=[86140440] )
ERC20Wrapper.balanceOf( _token=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 589091491407 )
FiatTokenProxy.70a08231( )
-
FiatTokenV1.balanceOf( account=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 589091491407 )
-
ERC20Wrapper.beabacc8( )
FiatTokenProxy.a9059cbb( )
-
FiatTokenV1.transfer( _to=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, _value=86140440 ) => ( True )
-
ERC20Wrapper.balanceOf( _token=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 589005350967 )
FiatTokenProxy.70a08231( )
-
FiatTokenV1.balanceOf( account=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 589005350967 )
-
-
-
Core.exchangeIds( _exchangeId=1 ) => ( 0x0acd0b5cF881cd8398ac563872209De1ce15dF0F )
ZeroExExchangeWrapper.exchange( _exchangeData=[{name:caller, type:address, order:1, indexed:false, value:0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, valueString:0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180}, {name:orderCount, type:uint256, order:2, indexed:false, value:1, valueString:1}], _ordersData=0x000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000052266181BEB2E5AD2F911E5B404FFA856878A0F70052478546E0AE5DF549A87E142F3BEBC115F03710E4ECBBC9BF37BC15F33779F71AF8726F2F766553C044654EB49D6330300000000000000000000000056178A0D5F301BAF6CF3E1CD53D9863437345BF90000000000000000000000000ACD0B5CF881CD8398AC563872209DE1CE15DF0F00000000000000000000000055662E225A3376759C24331A9AED764F8F0C9FBB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091761FAA85BC000000000000000000000000000000000000000000000000000000000000522940900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E84FC070000000000000000000000000000000000000000000000001601CC6460D17695000000000000000000000000C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000000000000000000000000A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48 ) => ( [{name:receiveTokens, type:address[], order:1, indexed:false, value:[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], valueString:[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2]}, {name:receiveTokenAmounts, type:uint256[], order:2, indexed:false, value:[655010569538438141], valueString:[655010569538438141]}] )
-
Core.validModules( _module=0x8F2D580C3cccd96c3541386daac0AF71C5d1c0f9 ) => ( True )
FiatTokenProxy.dd62ed3e( )
-
FiatTokenV1.allowance( owner=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, spender=0x95E6F48254609A6ee006F7D493c8e5fB97094ceF ) => ( 115792089237316195423570985008687907853269984665640564039457584005743654488726 )
-
Exchange.fillOrKillOrder( order=[{name:makerAddress, type:address, order:1, indexed:false, value:0x56178a0d5F301bAf6CF3e1Cd53d9863437345Bf9, valueString:0x56178a0d5F301bAf6CF3e1Cd53d9863437345Bf9}, {name:takerAddress, type:address, order:2, indexed:false, value:0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, valueString:0x0acd0b5cF881cd8398ac563872209De1ce15dF0F}, {name:feeRecipientAddress, type:address, order:3, indexed:false, value:0x55662E225a3376759c24331a9aeD764f8f0C9FBb, valueString:0x55662E225a3376759c24331a9aeD764f8f0C9FBb}, {name:senderAddress, type:address, order:4, indexed:false, value:0x0000000000000000000000000000000000000000, valueString:0x0000000000000000000000000000000000000000}, {name:makerAssetAmount, type:uint256, order:5, indexed:false, value:655100000000000000, valueString:655100000000000000}, {name:takerAssetAmount, type:uint256, order:6, indexed:false, value:86152201, valueString:86152201}, {name:makerFee, type:uint256, order:7, indexed:false, value:0, valueString:0}, {name:takerFee, type:uint256, order:8, indexed:false, value:0, valueString:0}, {name:expirationTimeSeconds, type:uint256, order:9, indexed:false, value:1585773575, valueString:1585773575}, {name:salt, type:uint256, order:10, indexed:false, value:1585773275304261269, valueString:1585773275304261269}, {name:makerAssetData, type:bytes, order:11, indexed:false, value:0xF47261B0000000000000000000000000C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2, valueString:0xF47261B0000000000000000000000000C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2}, {name:takerAssetData, type:bytes, order:12, indexed:false, value:0xF47261B0000000000000000000000000A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0xF47261B0000000000000000000000000A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}], takerAssetFillAmount=86140440, signature=0x1BEB2E5AD2F911E5B404FFA856878A0F70052478546E0AE5DF549A87E142F3BEBC115F03710E4ECBBC9BF37BC15F33779F71AF8726F2F766553C044654EB49D63303 ) => ( fillResults=[{name:makerAssetFilledAmount, type:uint256, order:1, indexed:false, value:655010569538438141, valueString:655010569538438141}, {name:takerAssetFilledAmount, type:uint256, order:2, indexed:false, value:86140440, valueString:86140440}, {name:makerFeePaid, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:takerFeePaid, type:uint256, order:4, indexed:false, value:0, valueString:0}] )
-
Null: 0x000...001.10c71cc1( )
ERC20Proxy.a85e59e4( )
-
WETH9.transferFrom( src=0x56178a0d5F301bAf6CF3e1Cd53d9863437345Bf9, dst=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, wad=655010569538438141 ) => ( True )
-
ERC20Proxy.a85e59e4( )
FiatTokenProxy.23b872dd( )
-
FiatTokenV1.transferFrom( _from=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, _to=0x56178a0d5F301bAf6CF3e1Cd53d9863437345Bf9, _value=86140440 ) => ( True )
-
-
-
WETH9.allowance( 0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, 0x882d80D3a191859d64477eb78Cca46599307ec1C ) => ( 115792089237316195423570985008687907853269984665640564039457584007913129639935 )
ERC20Wrapper.balanceOf( _token=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, _owner=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F ) => ( 0 )
FiatTokenProxy.70a08231( )
-
FiatTokenV1.balanceOf( account=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F ) => ( 0 )
-
-
Core.batchDepositModule( _from=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, _to=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _tokens=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], _quantities=[655010569538438141] )
-
CommonValidationsLibrary.validateNonEmpty( _addressArray=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2] )
-
CommonValidationsLibrary.validateEqualLength( _addressArray=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], _uint256Array=[655010569538438141] )
TransferProxy.batchTransfer( _tokens=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], _quantities=[655010569538438141], _from=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, _to=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc )
ERC20Wrapper.balanceOf( _token=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 16037821156534073822955 )
-
WETH9.balanceOf( 0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 16037821156534073822955 )
-
ERC20Wrapper.15dacbea( )
-
WETH9.transferFrom( src=0x0acd0b5cF881cd8398ac563872209De1ce15dF0F, dst=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc, wad=655010569538438141 ) => ( True )
-
ERC20Wrapper.balanceOf( _token=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 16038476167103612261096 )
-
WETH9.balanceOf( 0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 16038476167103612261096 )
-
-
Vault.batchIncrementTokenOwner( _tokens=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _quantities=[655010569538438141] )
-
-
Vault.getOwnerBalance( _token=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 655010569538438141 )
Core.batchWithdrawModule( _from=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _to=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _tokens=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], _quantities=[655010569538438141] )
-
CommonValidationsLibrary.validateNonEmpty( _addressArray=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2] )
-
CommonValidationsLibrary.validateEqualLength( _addressArray=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], _uint256Array=[655010569538438141] )
-
Vault.batchDecrementTokenOwner( _tokens=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _quantities=[655010569538438141] )
Vault.batchWithdrawTo( _tokens=[0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2], _to=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _quantities=[655010569538438141] )
ERC20Wrapper.balanceOf( _token=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 16038476167103612261096 )
-
WETH9.balanceOf( 0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 16038476167103612261096 )
-
ERC20Wrapper.beabacc8( )
-
WETH9.transfer( dst=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, wad=655010569538438141 ) => ( True )
-
ERC20Wrapper.balanceOf( _token=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 16037821156534073822955 )
-
WETH9.balanceOf( 0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 16037821156534073822955 )
-
-
-
SetToken.STATICCALL( )
-
Vault.getOwnerBalance( _token=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, _owner=0x8F2D580C3cccd96c3541386daac0AF71C5d1c0f9 ) => ( 0 )
-
-
Vault.getOwnerBalance( _token=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 0 )
ERC20Wrapper.balanceOf( _token=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 655010569538438141 )
-
WETH9.balanceOf( 0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 655010569538438141 )
-
WETH9.withdraw( wad=655010569538438141 )
- ETH 0.655010569538438141
Set: Rebalancing Set Exchange Issuance Module V2.CALL( )
- ETH 0.655010569538438141
- ETH 0.655010569538438141
0xd1898665a01a91ac10bd2c6cb1899336df34ac33.CALL( )
ERC20Wrapper.balanceOf( _token=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 9999999997578 )
-
SetToken.balanceOf( owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 9999999997578 )
-
-
SetToken.allowance( owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, spender=0x882d80D3a191859d64477eb78Cca46599307ec1C ) => ( 115792089237316195423570985008687907853269984665640564039456337276594978622273 )
Core.depositModule( _from=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _to=0xD1898665a01A91AC10bD2C6cb1899336df34AC33, _token=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _quantity=9999999997578 )
-
CommonValidationsLibrary.validateNonEmpty( _addressArray=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d] )
-
CommonValidationsLibrary.validateEqualLength( _addressArray=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d], _uint256Array=[9999999997578] )
TransferProxy.batchTransfer( _tokens=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d], _quantities=[9999999997578], _from=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, _to=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc )
ERC20Wrapper.balanceOf( _token=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 943195559266932018 )
-
SetToken.balanceOf( owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 943195559266932018 )
-
ERC20Wrapper.15dacbea( )
-
SetToken.transferFrom( from=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180, to=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc, value=9999999997578 ) => ( True )
-
ERC20Wrapper.balanceOf( _token=0x32a3D08e194A6EC29C7532A80A86c661782aa98d, _owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 943205559266929596 )
-
SetToken.balanceOf( owner=0x5B67871C3a857dE81A1ca0f9F7945e5670D986Dc ) => ( 943205559266929596 )
-
-
Vault.batchIncrementTokenOwner( _tokens=[0x32a3D08e194A6EC29C7532A80A86c661782aa98d], _owner=0xD1898665a01A91AC10bD2C6cb1899336df34AC33, _quantities=[9999999997578] )
-
-
SetToken.STATICCALL( )
ERC20Wrapper.balanceOf( _token=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, _owner=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 0 )
FiatTokenProxy.70a08231( )
-
FiatTokenV1.balanceOf( account=0x4f57e1f2020C35cd2Fb45CF53CFEb6ff2e796180 ) => ( 0 )
-
-
AddressToAddressWhiteList.whitelist( 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 ) => ( 0x0000000000000000000000000000000000000000 )
File 1 of 16: RebalancingSetTokenV2
File 2 of 16: Core
File 3 of 16: Vault
File 4 of 16: SetToken
File 5 of 16: FiatTokenProxy
File 6 of 16: Exchange
File 7 of 16: ZeroExExchangeWrapper
File 8 of 16: WETH9
File 9 of 16: CoreIssuanceLibrary
File 10 of 16: CommonValidationsLibrary
File 11 of 16: ERC20Wrapper
File 12 of 16: SetTokenFactory
File 13 of 16: AddressToAddressWhiteList
File 14 of 16: FiatTokenV1
File 15 of 16: ERC20Proxy
File 16 of 16: TransferProxy
12345678910111213141516// File: openzeppelin-solidity/contracts/token/ERC20/IERC20.solpragma solidity ^0.5.2;pragma experimental "ABIEncoderV2";/*** @title ERC20 interface* @dev see https://eips.ethereum.org/EIPS/eip-20*/interface IERC20 {function transfer(address to, uint256 value) external returns (bool);function approve(address spender, uint256 value) external returns (bool);function transferFrom(address from, address to, uint256 value) external returns (bool);
File 2 of 16: Core
12345678910111213141516// File: openzeppelin-solidity/contracts/utils/ReentrancyGuard.solpragma solidity ^0.5.2;/*** @title Helps contracts guard against reentrancy attacks.* @author Remco Bloemen <remco@2π.com>, Eenae <alexey@mixbytes.io>* @dev If you mark a function `nonReentrant`, you should also* mark it `external`.*/contract ReentrancyGuard {/// @dev counter to allow mutex lock with only one SSTORE operationuint256 private _guardCounter;constructor () internal {// The counter starts at one to prevent changing it from zero to a non-zero
File 3 of 16: Vault
12345678910111213141516// File: openzeppelin-solidity/contracts/math/SafeMath.solpragma solidity ^0.5.2;/*** @title SafeMath* @dev Unsigned math operations with safety checks that revert on error*/library SafeMath {/*** @dev Multiplies two unsigned integers, reverts on overflow.*/function mul(uint256 a, uint256 b) internal pure returns (uint256) {// Gas optimization: this is cheaper than requiring 'a' not being zero, but the// benefit is lost if 'b' is also tested.// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
File 4 of 16: SetToken
12345678910111213141516// File: openzeppelin-solidity/contracts/token/ERC20/IERC20.solpragma solidity ^0.5.2;/*** @title ERC20 interface* @dev see https://eips.ethereum.org/EIPS/eip-20*/interface IERC20 {function transfer(address to, uint256 value) external returns (bool);function approve(address spender, uint256 value) external returns (bool);function transferFrom(address from, address to, uint256 value) external returns (bool);function totalSupply() external view returns (uint256);
File 5 of 16: FiatTokenProxy
12345678910111213141516pragma solidity ^0.4.24;// File: zos-lib/contracts/upgradeability/Proxy.sol/*** @title Proxy* @dev Implements delegation of calls to other contracts, with proper* forwarding of return values and bubbling of failures.* It defines a fallback function that delegates all calls to the address* returned by the abstract _implementation() internal function.*/contract Proxy {/*** @dev Fallback function.* Implemented entirely in `_fallback`.*/
File 6 of 16: Exchange
12345678910111213141516/*Copyright 2018 ZeroEx Intl.Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
File 7 of 16: ZeroExExchangeWrapper
12345678910111213141516// File: openzeppelin-solidity/contracts/math/SafeMath.solpragma solidity ^0.5.2;pragma experimental "ABIEncoderV2";/*** @title SafeMath* @dev Unsigned math operations with safety checks that revert on error*/library SafeMath {/*** @dev Multiplies two unsigned integers, reverts on overflow.*/function mul(uint256 a, uint256 b) internal pure returns (uint256) {// Gas optimization: this is cheaper than requiring 'a' not being zero, but the// benefit is lost if 'b' is also tested.
File 8 of 16: WETH9
12345678910111213141516// Copyright (C) 2015, 2016, 2017 Dapphub// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.4.18;
File 9 of 16: CoreIssuanceLibrary
12345678910111213141516// File: openzeppelin-solidity/contracts/math/SafeMath.solpragma solidity ^0.5.2;/*** @title SafeMath* @dev Unsigned math operations with safety checks that revert on error*/library SafeMath {/*** @dev Multiplies two unsigned integers, reverts on overflow.*/function mul(uint256 a, uint256 b) internal pure returns (uint256) {// Gas optimization: this is cheaper than requiring 'a' not being zero, but the// benefit is lost if 'b' is also tested.// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
File 10 of 16: CommonValidationsLibrary
12345678910111213141516/*Copyright 2018 Set Labs Inc.Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.*/
File 11 of 16: ERC20Wrapper
1{"CommonMath.sol":{"content":"/*\r\n Copyright 2018 Set Labs Inc.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\nyou may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License isdistributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for thespecific language governing permissions and\r\n limitations under the License.\r\n*/\r\n\r\npragma solidity 0.5.7;\r\n\r\nimport \"./SafeMath.sol\";\r\n\r\n\r\nlibrary CommonMath {\r\n using SafeMath for uint256;\r\n\r\n /**\r\n * Calculates and returns the maximum value for auint256\r\n *\r\n * @return The maximum value for uint256\r\n */\r\n function maxUInt256()\r\n internal\r\n pure\r\nreturns (uint256)\r\n {\r\n return 2 ** 256 - 1;\r\n }\r\n\r\n /**\r\n * @dev Performs the power on a specified value,reverts on overflow.\r\n */\r\n function safePower(\r\n uint256 a,\r\n uint256 pow\r\n )\r\n internal\r\npure\r\n returns (uint256)\r\n {\r\n require(a \u003e 0);\r\n\r\n uint256 result = 1;\r\n for (uint256 i = 0; i\u003c pow; i++){\r\n uint256 previousResult = result;\r\n\r\n // Using safemath multiplication prevents overflows\r\nresult = previousResult.mul(a);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Checks for rounding errors andreturns value of potential partial amounts of a principal\r\n *\r\n * @param _principal Number fractional amount is derived from\r\n* @param _numerator Numerator of fraction\r\n * @param _denominator Denominator of fraction\r\n * @return uint256Fractional amount of principal calculated\r\n */\r\n function getPartialAmount(\r\n uint256 _principal,\r\n uint256 _numerator,\r\n uint256 _denominator\r\n )\r\n internal\r\n pure\r\n returns (uint256)\r\n {\r\n // Get remainder ofpartial amount (if 0 not a partial amount)\r\n uint256 remainder = mulmod(_principal, _numerator, _denominator);\r\n\r\n // Return ifnot a partial amount\r\n if (remainder == 0) {\r\n return _principal.mul(_numerator).div(_denominator);\r\n }\r\n\r\n// Calculate error percentage\r\n uint256 errPercentageTimes1000000 = remainder.mul(1000000).div(_numerator.mul(_principal));\r\n\r\n// Require error percentage is less than 0.1%.\r\n require(\r\n errPercentageTimes1000000 \u003c 1000,\r\n\"CommonMath.getPartialAmount: Rounding error exceeds bounds\"\r\n );\r\n\r\n return _principal.mul(_numerator).div(_denominator);\r\n }\r\n\r\n}\r\n\r\n"},"ERC20Wrapper.sol":{"content":"/*\r\n Copyright 2018 Set Labs Inc.\r\n\r\n Licensed under the Apache License,Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the Licenseat\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\ndistributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n*/\r\n\r\npragma solidity 0.5.7;\r\n\r\nimport \"./CommonMath.sol\";\r\nimport \"./IERC20.sol\";\r\n\r\n\r\n/**\r\n * @title ERC20Wrapper\r\n * @author Set Protocol\r\n *\r\n *This library contains functions for interacting wtih ERC20 tokens, even those not fully compliant.\r\n * For all functions we will only accepttokens that return a null or true value, any other values will\r\n * cause the operation to revert.\r\n */\r\nlibrary ERC20Wrapper {\r\n\r\n //============ Internal Functions ============\r\n\r\n /**\r\n * Check balance owner\u0027s balance of ERC20 token\r\n *\r\n * @param_token The address of the ERC20 token\r\n * @param _owner The owner who\u0027s balance is being checked\r\n * @returnuint256 The _owner\u0027s amount of tokens\r\n */\r\n function balanceOf(\r\n address _token,\r\n address _owner\r\n)\r\n external\r\n view\r\n returns (uint256)\r\n {\r\n return IERC20(_token).balanceOf(_owner);\r\n }\r\n\r\n/**\r\n * Checks spender\u0027s allowance to use token\u0027s on owner\u0027s behalf.\r\n *\r\n * @param _token The addressof the ERC20 token\r\n * @param _owner The token owner address\r\n * @param _spender The address the allowance is beingchecked on\r\n * @return uint256 The spender\u0027s allowance on behalf of owner\r\n */\r\n function allowance(\r\naddress _token,\r\n address _owner,\r\n address _spender\r\n )\r\n internal\r\n view\r\n returns (uint256)\r\n {\r\n return IERC20(_token).allowance(_owner, _spender);\r\n }\r\n\r\n /**\r\n * Transfers tokens from an address.Handle\u0027s tokens that return true or null.\r\n * If other value returned, reverts.\r\n *\r\n * @param _token The addressof the ERC20 token\r\n * @param _to The address to transfer to\r\n * @param _quantity The amount of tokens totransfer\r\n */\r\n function transfer(\r\n address _token,\r\n address _to,\r\n uint256 _quantity\r\n )\r\nexternal\r\n {\r\n IERC20(_token).transfer(_to, _quantity);\r\n\r\n // Check that transfer returns true or null\r\n require(\r\n checkSuccess(),\r\n \"ERC20Wrapper.transfer: Bad return value\"\r\n );\r\n }\r\n\r\n /**\r\n *Transfers tokens from an address (that has set allowance on the proxy).\r\n * Handle\u0027s tokens that return true or null. If other valuereturned, reverts.\r\n *\r\n * @param _token The address of the ERC20 token\r\n * @param _from The address totransfer from\r\n * @param _to The address to transfer to\r\n * @param _quantity The number of tokens to transfer\r\n*/\r\n function transferFrom(\r\n address _token,\r\n address _from,\r\n address _to,\r\n uint256 _quantity\r\n)\r\n external\r\n {\r\n IERC20(_token).transferFrom(_from, _to, _quantity);\r\n\r\n // Check that transferFrom returnstrue or null\r\n require(\r\n checkSuccess(),\r\n \"ERC20Wrapper.transferFrom: Bad return value\"\r\n );\r\n}\r\n\r\n /**\r\n * Grants spender ability to spend on owner\u0027s behalf.\r\n * Handle\u0027s tokens that return true or null. Ifother value returned, reverts.\r\n *\r\n * @param _token The address of the ERC20 token\r\n * @param _spender Theaddress to approve for transfer\r\n * @param _quantity The amount of tokens to approve spender for\r\n */\r\n function approve(\r\n address _token,\r\n address _spender,\r\n uint256 _quantity\r\n )\r\n internal\r\n {\r\n IERC20(_token).approve(_spender, _quantity);\r\n\r\n // Check that approve returns true or null\r\n require(\r\n checkSuccess(),\r\n \"ERC20Wrapper.approve: Bad return value\"\r\n );\r\n }\r\n\r\n /**\r\n * Ensure\u0027s the owner has grantedenough allowance for system to\r\n * transfer tokens.\r\n *\r\n * @param _token The address of the ERC20 token\r\n *@param _owner The address of the token owner\r\n * @param _spender The address to grant/check allowance for\r\n * @param_quantity The amount to see if allowed for\r\n */\r\n function ensureAllowance(\r\n address _token,\r\n address _owner,\r\n address _spender,\r\n uint256 _quantity\r\n )\r\n internal\r\n {\r\n uint256 currentAllowance = allowance(_token, _owner, _spender);\r\n if (currentAllowance \u003c _quantity) {\r\n approve(\r\n _token,\r\n_spender,\r\n CommonMath.maxUInt256()\r\n );\r\n }\r\n }\r\n\r\n // ============ Private Functions============\r\n\r\n /**\r\n * Checks the return value of the previous function up to 32 bytes. Returns true if the previous\r\n *function returned 0 bytes or 1.\r\n */\r\n function checkSuccess(\r\n )\r\n private\r\n pure\r\n returns (bool)\r\n{\r\n // default to failure\r\n uint256 returnValue = 0;\r\n\r\n assembly {\r\n // check number of bytesreturned from last function call\r\n switch returndatasize\r\n\r\n // no bytes returned: assume success\r\n case0x0 {\r\n returnValue := 1\r\n }\r\n\r\n // 32 bytes returned\r\n case 0x20 {\r\n //copy 32 bytes into scratch space\r\n returndatacopy(0x0, 0x0, 0x20)\r\n\r\n // load those bytes into returnValue\r\nreturnValue := mload(0x0)\r\n }\r\n\r\n // not sure what was returned: dont mark as success\r\ndefault { }\r\n }\r\n\r\n // check if returned value is one or nothing\r\n return returnValue == 1;\r\n }\r\n}\r\n"},"IERC20.sol":{"content":"/*\r\n Copyright 2018 Set Labs Inc.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\nyou may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License isdistributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for thespecific language governing permissions and\r\n limitations under the License.\r\n*/\r\n\r\npragma solidity 0.5.7;\r\n\r\n\r\n/**\r\n * @titleIERC20\r\n * @author Set Protocol\r\n *\r\n * Interface for using ERC20 Tokens. This interface is needed to interact with tokens that are not\r\n *fully ERC20 compliant and return something other than true on successful transfers.\r\n */\r\ninterface IERC20 {\r\n function balanceOf(\r\naddress _owner\r\n )\r\n external\r\n view\r\n returns (uint256);\r\n\r\n function allowance(\r\n address_owner,\r\n address _spender\r\n )\r\n external\r\n view\r\n returns (uint256);\r\n\r\n function transfer(\r\naddress _to,\r\n uint256 _quantity\r\n )\r\n external;\r\n\r\n function transferFrom(\r\n address _from,\r\naddress _to,\r\n uint256 _quantity\r\n )\r\n external;\r\n\r\n function approve(\r\n address _spender,\r\nuint256 _quantity\r\n )\r\n external\r\n returns (bool);\r\n}\r\n"},"SafeMath.sol":{"content":"pragma solidity ^0.5.7;\r\n\r\n/**\r\n * @title SafeMath\r\n * @dev Unsigned math operations with safety checks that revert on error.\r\n */\r\nlibrary SafeMath {\r\n /**\r\n* @dev Multiplies two unsigned integers, reverts on overflow.\r\n */\r\n function mul(uint256 a, uint256 b) internal pure returns(uint256) {\r\n // Gas optimization: this is cheaper than requiring \u0027a\u0027 not being zero, but the\r\n // benefit is lost if\u0027b\u0027 is also tested.\r\n // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\r\n if (a == 0) {\r\nreturn 0;\r\n }\r\n\r\n uint256 c = a * b;\r\n require(c / a == b);\r\n\r\n return c;\r\n }\r\n\r\n /**\r\n* @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\r\n */\r\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\r\n // Solidity only automatically asserts when dividing by 0\r\n require(b \u003e 0);\r\n uint256 c = a / b;\r\n // assert(a == b * c + a % b); // There is no case in which this doesn\u0027t hold\r\n\r\nreturn c;\r\n }\r\n\r\n /**\r\n * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\r\n */\r\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\r\n require(b \u003c= a);\r\n uint256 c = a- b;\r\n\r\n return c;\r\n }\r\n\r\n /**\r\n * @dev Adds two unsigned integers, reverts on overflow.\r\n */\r\n functionadd(uint256 a, uint256 b) internal pure returns (uint256) {\r\n uint256 c = a + b;\r\n require(c \u003e= a);\r\n\r\n return c;\r\n }\r\n\r\n /**\r\n * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\r\n * reverts whendividing by zero.\r\n */\r\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\r\n require(b != 0);\r\nreturn a % b;\r\n }\r\n}\r\n"}}
File 12 of 16: SetTokenFactory
12345678910111213141516// File: contracts/lib/Bytes32Library.sol/*Copyright 2018 Set Labs Inc.Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
File 13 of 16: AddressToAddressWhiteList
12345678910111213141516pragma solidity ^0.5.2;/*** @title Ownable* @dev The Ownable contract has an owner address, and provides basic authorization control* functions, this simplifies the implementation of "user permissions".*/contract Ownable {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/*** @dev The Ownable constructor sets the original `owner` of the contract to the sender* account.*/
File 14 of 16: FiatTokenV1
12345678910111213141516pragma solidity ^0.4.24;// File: contracts/Ownable.sol/*** Copyright CENTRE SECZ 2018** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated documentation files (the "Software"), to deal* in the Software without restriction, including without limitation the rights* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell* copies of the Software, and to permit persons to whom the Software is furnished to* do so, subject to the following conditions:** The above copyright notice and this permission notice shall be included in all* copies or substantial portions of the Software.
File 15 of 16: ERC20Proxy
12345678910111213141516/*Copyright 2018 ZeroEx Intl.Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
File 16 of 16: TransferProxy
12345678910111213141516// File: openzeppelin-solidity/contracts/math/SafeMath.solpragma solidity ^0.5.2;/*** @title SafeMath* @dev Unsigned math operations with safety checks that revert on error*/library SafeMath {/*** @dev Multiplies two unsigned integers, reverts on overflow.*/function mul(uint256 a, uint256 b) internal pure returns (uint256) {// Gas optimization: this is cheaper than requiring 'a' not being zero, but the// benefit is lost if 'b' is also tested.// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522