aboutsummaryrefslogtreecommitdiffstats
path: root/packages/migrations/artifacts/2.0.0/TestAssetProxyDispatcher.json
blob: 59f0f93dd53ba062c218f71e84d2c821db6eea91 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
{
    "schemaVersion": "2.0.0",
    "contractName": "TestAssetProxyDispatcher",
    "compilerOutput": {
        "abi": [
            {
                "constant": true,
                "inputs": [
                    {
                        "name": "",
                        "type": "uint8"
                    }
                ],
                "name": "assetProxies",
                "outputs": [
                    {
                        "name": "",
                        "type": "address"
                    }
                ],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    {
                        "name": "assetProxyId",
                        "type": "uint8"
                    },
                    {
                        "name": "newAssetProxy",
                        "type": "address"
                    },
                    {
                        "name": "oldAssetProxy",
                        "type": "address"
                    }
                ],
                "name": "registerAssetProxy",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    {
                        "name": "assetMetadata",
                        "type": "bytes"
                    },
                    {
                        "name": "from",
                        "type": "address"
                    },
                    {
                        "name": "to",
                        "type": "address"
                    },
                    {
                        "name": "amount",
                        "type": "uint256"
                    }
                ],
                "name": "publicDispatchTransferFrom",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [],
                "name": "owner",
                "outputs": [
                    {
                        "name": "",
                        "type": "address"
                    }
                ],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [
                    {
                        "name": "assetProxyId",
                        "type": "uint8"
                    }
                ],
                "name": "getAssetProxy",
                "outputs": [
                    {
                        "name": "",
                        "type": "address"
                    }
                ],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    {
                        "name": "newOwner",
                        "type": "address"
                    }
                ],
                "name": "transferOwnership",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "anonymous": false,
                "inputs": [
                    {
                        "indexed": false,
                        "name": "id",
                        "type": "uint8"
                    },
                    {
                        "indexed": false,
                        "name": "newAssetProxy",
                        "type": "address"
                    },
                    {
                        "indexed": false,
                        "name": "oldAssetProxy",
                        "type": "address"
                    }
                ],
                "name": "AssetProxySet",
                "type": "event"
            },
            {
                "anonymous": false,
                "inputs": [
                    {
                        "indexed": true,
                        "name": "errorId",
                        "type": "uint8"
                    },
                    {
                        "indexed": true,
                        "name": "orderHash",
                        "type": "bytes32"
                    }
                ],
                "name": "ExchangeError",
                "type": "event"
            }
        ],
        "evm": {
            "bytecode": {
                "linkReferences": {},
                "object": "0x608060405260008054600160a060020a033316600160a060020a03199091161790556109f0806100306000396000f3006080604052600436106100775763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166338077164811461007c5780635c78d0c7146100b2578063889b6d8d146100d45780638da5cb5b146100f457806392c1421e14610116578063f2fde38b14610136575b600080fd5b34801561008857600080fd5b5061009c610097366004610715565b610156565b6040516100a991906108aa565b60405180910390f35b3480156100be57600080fd5b506100d26100cd366004610751565b610171565b005b3480156100e057600080fd5b506100d26100ef36600461069d565b6103fa565b34801561010057600080fd5b5061010961040c565b6040516100a99190610853565b34801561012257600080fd5b50610109610131366004610715565b61041b565b34801561014257600080fd5b506100d2610151366004610677565b610439565b600160205260009081526040902054600160a060020a031681565b60008054819033600160a060020a039081169116146101ae5760405160e560020a62461bcd0281526004016101a5906108c9565b60405180910390fd5b60ff8516600090815260016020908152604091829020548251606081018452603781527f4f6c642061737365742070726f787920646f6573206e6f74206d617463682061928101929092527f737365742070726f787920617420676976656e2069642e0000000000000000009282019290925290600160a060020a038581169116146102505760405160e560020a62461bcd0281526004016101a591906108b8565b50839150600160a060020a0382161561037f5781600160a060020a031663ae25532e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156102ba57600080fd5b505af11580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102f29190810190610733565b90508460ff168160ff1614606060405190810160405280602b81526020017f4e65772061737365742070726f787920696420646f6573206e6f74206d61746381526020017f6820676976656e2069642e00000000000000000000000000000000000000000081525090151561037d5760405160e560020a62461bcd0281526004016101a591906108b8565b505b60ff851660009081526001602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055517f27ef5f484e50f2daf7c2d82c60fe4ce409009541176eb64095beac369db1d260906103eb908790879087906108d9565b60405180910390a15050505050565b610406848484846104a5565b50505050565b600054600160a060020a031681565b60ff16600090815260016020526040902054600160a060020a031690565b60005433600160a060020a0390811691161461046a5760405160e560020a62461bcd0281526004016101a5906108c9565b600160a060020a038116156104a2576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b60008060008311156105e457855160408051808201909152601e81527f4c656e677468206d7573742062652067726561746572207468616e20302e00006020820152906001111561050c5760405160e560020a62461bcd0281526004016101a591906108b8565b5085600081518110151561051c57fe5b602091018101517f01000000000000000000000000000000000000000000000000000000000000009081900481020460ff8116600090815260019092526040918290205491517fa85e59e4000000000000000000000000000000000000000000000000000000008152909350600160a060020a039091169150819063a85e59e4906105b1908990899089908990600401610867565b600060405180830381600087803b1580156105cb57600080fd5b505af11580156105df573d6000803e3d6000fd5b505050505b505050505050565b60006105f88235610954565b9392505050565b6000601f8201831361061057600080fd5b813561062361061e82610928565b610901565b9150808252602083016020830185838301111561063f57600080fd5b61064a838284610974565b50505092915050565b60006105f88235610960565b60006105f88235610963565b60006105f88251610963565b60006020828403121561068957600080fd5b600061069584846105ec565b949350505050565b600080600080608085870312156106b357600080fd5b843567ffffffffffffffff8111156106ca57600080fd5b6106d6878288016105ff565b94505060206106e7878288016105ec565b93505060406106f8878288016105ec565b925050606061070987828801610653565b91505092959194509250565b60006020828403121561072757600080fd5b6000610695848461065f565b60006020828403121561074557600080fd5b6000610695848461066b565b60008060006060848603121561076657600080fd5b6000610772868661065f565b9350506020610783868287016105ec565b9250506040610794868287016105ec565b9150509250925092565b6107a781610954565b82525050565b60006107b882610950565b8084526107cc816020860160208601610980565b6107d5816109ac565b9093016020019392505050565b6107a781610969565b603381527f4f6e6c7920636f6e7472616374206f776e657220697320616c6c6f776564207460208201527f6f2063616c6c2074686973206d6574686f642e00000000000000000000000000604082015260600190565b6107a781610960565b6107a781610963565b60208101610861828461079e565b92915050565b6080808252810161087881876107ad565b9050610887602083018661079e565b610894604083018561079e565b6108a16060830184610841565b95945050505050565b6020810161086182846107e2565b602080825281016105f881846107ad565b60208082528101610861816107eb565b606081016108e7828661084a565b6108f4602083018561079e565b610695604083018461079e565b60405181810167ffffffffffffffff8111828210171561092057600080fd5b604052919050565b600067ffffffffffffffff82111561093f57600080fd5b506020601f91909101601f19160190565b5190565b600160a060020a031690565b90565b60ff1690565b600061086182610954565b82818337506000910152565b60005b8381101561099b578181015183820152602001610983565b838111156104065750506000910152565b601f01601f1916905600a265627a7a7230582021508317d95b4f5cfac8fe1e90b2641f767cfaf033da09b914942f838c8979346c6578706572696d656e74616cf50037",
                "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB CALLER AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH2 0x9F0 DUP1 PUSH2 0x30 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x77 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x38077164 DUP2 EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x5C78D0C7 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x889B6D8D EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x92C1421E EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x715 JUMP JUMPDEST PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x8AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0xCD CALLDATASIZE PUSH1 0x4 PUSH2 0x751 JUMP JUMPDEST PUSH2 0x171 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x69D JUMP JUMPDEST PUSH2 0x3FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x40C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x715 JUMP JUMPDEST PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x677 JUMP JUMPDEST PUSH2 0x439 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1AE JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP1 PUSH2 0x8C9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH32 0x4F6C642061737365742070726F787920646F6573206E6F74206D617463682061 SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x737365742070726F787920617420676976656E2069642E000000000000000000 SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 DUP2 AND SWAP2 AND EQ PUSH2 0x250 JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST POP DUP4 SWAP2 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO PUSH2 0x37F JUMPI DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xAE25532E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x733 JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0xFF AND DUP2 PUSH1 0xFF AND EQ PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4E65772061737365742070726F787920696420646F6573206E6F74206D617463 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6820676976656E2069642E000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 ISZERO ISZERO PUSH2 0x37D JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST POP JUMPDEST PUSH1 0xFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND OR SWAP1 SSTORE MLOAD PUSH32 0x27EF5F484E50F2DAF7C2D82C60FE4CE409009541176EB64095BEAC369DB1D260 SWAP1 PUSH2 0x3EB SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH2 0x8D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x406 DUP5 DUP5 DUP5 DUP5 PUSH2 0x4A5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x46A JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP1 PUSH2 0x8C9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND OR SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 GT ISZERO PUSH2 0x5E4 JUMPI DUP6 MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH32 0x4C656E677468206D7573742062652067726561746572207468616E20302E0000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 GT ISZERO PUSH2 0x50C JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST POP DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x51C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP2 ADD DUP2 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH32 0xA85E59E400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 PUSH4 0xA85E59E4 SWAP1 PUSH2 0x5B1 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x867 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 DUP3 CALLDATALOAD PUSH2 0x954 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x623 PUSH2 0x61E DUP3 PUSH2 0x928 JUMP JUMPDEST PUSH2 0x901 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64A DUP4 DUP3 DUP5 PUSH2 0x974 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 DUP3 CALLDATALOAD PUSH2 0x960 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 DUP3 CALLDATALOAD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 DUP3 MLOAD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x695 DUP5 DUP5 PUSH2 0x5EC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D6 DUP8 DUP3 DUP9 ADD PUSH2 0x5FF JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x6E7 DUP8 DUP3 DUP9 ADD PUSH2 0x5EC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x6F8 DUP8 DUP3 DUP9 ADD PUSH2 0x5EC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x709 DUP8 DUP3 DUP9 ADD PUSH2 0x653 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x695 DUP5 DUP5 PUSH2 0x65F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x695 DUP5 DUP5 PUSH2 0x66B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x772 DUP7 DUP7 PUSH2 0x65F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x783 DUP7 DUP3 DUP8 ADD PUSH2 0x5EC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x794 DUP7 DUP3 DUP8 ADD PUSH2 0x5EC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x7A7 DUP2 PUSH2 0x954 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B8 DUP3 PUSH2 0x950 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x7CC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x980 JUMP JUMPDEST PUSH2 0x7D5 DUP2 PUSH2 0x9AC JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7A7 DUP2 PUSH2 0x969 JUMP JUMPDEST PUSH1 0x33 DUP2 MSTORE PUSH32 0x4F6E6C7920636F6E7472616374206F776E657220697320616C6C6F7765642074 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6F2063616C6C2074686973206D6574686F642E00000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0x7A7 DUP2 PUSH2 0x960 JUMP JUMPDEST PUSH2 0x7A7 DUP2 PUSH2 0x963 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x861 DUP3 DUP5 PUSH2 0x79E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x878 DUP2 DUP8 PUSH2 0x7AD JUMP JUMPDEST SWAP1 POP PUSH2 0x887 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x894 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x8A1 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x841 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x861 DUP3 DUP5 PUSH2 0x7E2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5F8 DUP2 DUP5 PUSH2 0x7AD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x861 DUP2 PUSH2 0x7EB JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x8E7 DUP3 DUP7 PUSH2 0x84A JUMP JUMPDEST PUSH2 0x8F4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x695 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x861 DUP3 PUSH2 0x954 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x99B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x983 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x406 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP STOP LOG2 PUSH6 0x627A7A723058 KECCAK256 0x21 POP DUP4 OR 0xd9 JUMPDEST 0x4f 0x5c STATICCALL 0xc8 INVALID 0x1e SWAP1 0xb2 PUSH5 0x1F767CFAF0 CALLER 0xda MULMOD 0xb9 EQ SWAP5 0x2f DUP4 DUP13 DUP10 PUSH26 0x346C6578706572696D656E74616CF50037000000000000000000 ",
                "sourceMap": "705:299:6:-;;;363:5:8;:18;;-1:-1:-1;;;;;371:10:8;363:18;-1:-1:-1;;;;;;363:18:8;;;;;;705:299:6;;;;;;"
            },
            "deployedBytecode": {
                "linkReferences": {},
                "object": "0x6080604052600436106100775763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166338077164811461007c5780635c78d0c7146100b2578063889b6d8d146100d45780638da5cb5b146100f457806392c1421e14610116578063f2fde38b14610136575b600080fd5b34801561008857600080fd5b5061009c610097366004610715565b610156565b6040516100a991906108aa565b60405180910390f35b3480156100be57600080fd5b506100d26100cd366004610751565b610171565b005b3480156100e057600080fd5b506100d26100ef36600461069d565b6103fa565b34801561010057600080fd5b5061010961040c565b6040516100a99190610853565b34801561012257600080fd5b50610109610131366004610715565b61041b565b34801561014257600080fd5b506100d2610151366004610677565b610439565b600160205260009081526040902054600160a060020a031681565b60008054819033600160a060020a039081169116146101ae5760405160e560020a62461bcd0281526004016101a5906108c9565b60405180910390fd5b60ff8516600090815260016020908152604091829020548251606081018452603781527f4f6c642061737365742070726f787920646f6573206e6f74206d617463682061928101929092527f737365742070726f787920617420676976656e2069642e0000000000000000009282019290925290600160a060020a038581169116146102505760405160e560020a62461bcd0281526004016101a591906108b8565b50839150600160a060020a0382161561037f5781600160a060020a031663ae25532e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156102ba57600080fd5b505af11580156102ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102f29190810190610733565b90508460ff168160ff1614606060405190810160405280602b81526020017f4e65772061737365742070726f787920696420646f6573206e6f74206d61746381526020017f6820676976656e2069642e00000000000000000000000000000000000000000081525090151561037d5760405160e560020a62461bcd0281526004016101a591906108b8565b505b60ff851660009081526001602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055517f27ef5f484e50f2daf7c2d82c60fe4ce409009541176eb64095beac369db1d260906103eb908790879087906108d9565b60405180910390a15050505050565b610406848484846104a5565b50505050565b600054600160a060020a031681565b60ff16600090815260016020526040902054600160a060020a031690565b60005433600160a060020a0390811691161461046a5760405160e560020a62461bcd0281526004016101a5906108c9565b600160a060020a038116156104a2576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b60008060008311156105e457855160408051808201909152601e81527f4c656e677468206d7573742062652067726561746572207468616e20302e00006020820152906001111561050c5760405160e560020a62461bcd0281526004016101a591906108b8565b5085600081518110151561051c57fe5b602091018101517f01000000000000000000000000000000000000000000000000000000000000009081900481020460ff8116600090815260019092526040918290205491517fa85e59e4000000000000000000000000000000000000000000000000000000008152909350600160a060020a039091169150819063a85e59e4906105b1908990899089908990600401610867565b600060405180830381600087803b1580156105cb57600080fd5b505af11580156105df573d6000803e3d6000fd5b505050505b505050505050565b60006105f88235610954565b9392505050565b6000601f8201831361061057600080fd5b813561062361061e82610928565b610901565b9150808252602083016020830185838301111561063f57600080fd5b61064a838284610974565b50505092915050565b60006105f88235610960565b60006105f88235610963565b60006105f88251610963565b60006020828403121561068957600080fd5b600061069584846105ec565b949350505050565b600080600080608085870312156106b357600080fd5b843567ffffffffffffffff8111156106ca57600080fd5b6106d6878288016105ff565b94505060206106e7878288016105ec565b93505060406106f8878288016105ec565b925050606061070987828801610653565b91505092959194509250565b60006020828403121561072757600080fd5b6000610695848461065f565b60006020828403121561074557600080fd5b6000610695848461066b565b60008060006060848603121561076657600080fd5b6000610772868661065f565b9350506020610783868287016105ec565b9250506040610794868287016105ec565b9150509250925092565b6107a781610954565b82525050565b60006107b882610950565b8084526107cc816020860160208601610980565b6107d5816109ac565b9093016020019392505050565b6107a781610969565b603381527f4f6e6c7920636f6e7472616374206f776e657220697320616c6c6f776564207460208201527f6f2063616c6c2074686973206d6574686f642e00000000000000000000000000604082015260600190565b6107a781610960565b6107a781610963565b60208101610861828461079e565b92915050565b6080808252810161087881876107ad565b9050610887602083018661079e565b610894604083018561079e565b6108a16060830184610841565b95945050505050565b6020810161086182846107e2565b602080825281016105f881846107ad565b60208082528101610861816107eb565b606081016108e7828661084a565b6108f4602083018561079e565b610695604083018461079e565b60405181810167ffffffffffffffff8111828210171561092057600080fd5b604052919050565b600067ffffffffffffffff82111561093f57600080fd5b506020601f91909101601f19160190565b5190565b600160a060020a031690565b90565b60ff1690565b600061086182610954565b82818337506000910152565b60005b8381101561099b578181015183820152602001610983565b838111156104065750506000910152565b601f01601f1916905600a265627a7a7230582021508317d95b4f5cfac8fe1e90b2641f767cfaf033da09b914942f838c8979346c6578706572696d656e74616cf50037",
                "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x77 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x38077164 DUP2 EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x5C78D0C7 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x889B6D8D EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x92C1421E EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x136 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x715 JUMP JUMPDEST PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x8AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0xCD CALLDATASIZE PUSH1 0x4 PUSH2 0x751 JUMP JUMPDEST PUSH2 0x171 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x69D JUMP JUMPDEST PUSH2 0x3FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x40C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x715 JUMP JUMPDEST PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x677 JUMP JUMPDEST PUSH2 0x439 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1AE JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP1 PUSH2 0x8C9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH32 0x4F6C642061737365742070726F787920646F6573206E6F74206D617463682061 SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x737365742070726F787920617420676976656E2069642E000000000000000000 SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 DUP2 AND SWAP2 AND EQ PUSH2 0x250 JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST POP DUP4 SWAP2 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO PUSH2 0x37F JUMPI DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xAE25532E PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2F2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x733 JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0xFF AND DUP2 PUSH1 0xFF AND EQ PUSH1 0x60 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4E65772061737365742070726F787920696420646F6573206E6F74206D617463 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6820676976656E2069642E000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 ISZERO ISZERO PUSH2 0x37D JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST POP JUMPDEST PUSH1 0xFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP6 AND OR SWAP1 SSTORE MLOAD PUSH32 0x27EF5F484E50F2DAF7C2D82C60FE4CE409009541176EB64095BEAC369DB1D260 SWAP1 PUSH2 0x3EB SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH2 0x8D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x406 DUP5 DUP5 DUP5 DUP5 PUSH2 0x4A5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x46A JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP1 PUSH2 0x8C9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND OR SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 GT ISZERO PUSH2 0x5E4 JUMPI DUP6 MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH32 0x4C656E677468206D7573742062652067726561746572207468616E20302E0000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 GT ISZERO PUSH2 0x50C JUMPI PUSH1 0x40 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST POP DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x51C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP2 ADD DUP2 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH32 0xA85E59E400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 PUSH4 0xA85E59E4 SWAP1 PUSH2 0x5B1 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x867 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 DUP3 CALLDATALOAD PUSH2 0x954 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x623 PUSH2 0x61E DUP3 PUSH2 0x928 JUMP JUMPDEST PUSH2 0x901 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64A DUP4 DUP3 DUP5 PUSH2 0x974 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 DUP3 CALLDATALOAD PUSH2 0x960 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 DUP3 CALLDATALOAD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 DUP3 MLOAD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x695 DUP5 DUP5 PUSH2 0x5EC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D6 DUP8 DUP3 DUP9 ADD PUSH2 0x5FF JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x6E7 DUP8 DUP3 DUP9 ADD PUSH2 0x5EC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x6F8 DUP8 DUP3 DUP9 ADD PUSH2 0x5EC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x709 DUP8 DUP3 DUP9 ADD PUSH2 0x653 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x695 DUP5 DUP5 PUSH2 0x65F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x695 DUP5 DUP5 PUSH2 0x66B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x772 DUP7 DUP7 PUSH2 0x65F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x783 DUP7 DUP3 DUP8 ADD PUSH2 0x5EC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x794 DUP7 DUP3 DUP8 ADD PUSH2 0x5EC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x7A7 DUP2 PUSH2 0x954 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B8 DUP3 PUSH2 0x950 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x7CC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x980 JUMP JUMPDEST PUSH2 0x7D5 DUP2 PUSH2 0x9AC JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7A7 DUP2 PUSH2 0x969 JUMP JUMPDEST PUSH1 0x33 DUP2 MSTORE PUSH32 0x4F6E6C7920636F6E7472616374206F776E657220697320616C6C6F7765642074 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x6F2063616C6C2074686973206D6574686F642E00000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0x7A7 DUP2 PUSH2 0x960 JUMP JUMPDEST PUSH2 0x7A7 DUP2 PUSH2 0x963 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x861 DUP3 DUP5 PUSH2 0x79E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x878 DUP2 DUP8 PUSH2 0x7AD JUMP JUMPDEST SWAP1 POP PUSH2 0x887 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x894 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x8A1 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x841 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x861 DUP3 DUP5 PUSH2 0x7E2 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x5F8 DUP2 DUP5 PUSH2 0x7AD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x861 DUP2 PUSH2 0x7EB JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x8E7 DUP3 DUP7 PUSH2 0x84A JUMP JUMPDEST PUSH2 0x8F4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x79E JUMP JUMPDEST PUSH2 0x695 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x861 DUP3 PUSH2 0x954 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x99B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x983 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x406 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP STOP LOG2 PUSH6 0x627A7A723058 KECCAK256 0x21 POP DUP4 OR 0xd9 JUMPDEST 0x4f 0x5c STATICCALL 0xc8 INVALID 0x1e SWAP1 0xb2 PUSH5 0x1F767CFAF0 CALLER 0xda MULMOD 0xb9 EQ SWAP5 0x2f DUP4 DUP13 DUP10 PUSH26 0x346C6578706572696D656E74616CF50037000000000000000000 ",
                "sourceMap": "705:299:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;959:50:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;959:50:2;;;;;;;;;;;;;;;;;;;;;;;;;1423:962;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1423:962:2;;;;;;;;;;;774:228:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;774:228:6;;;;;;;;;292:20:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;292:20:8;;;;;;;;;;;;2575:203:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2575:203:2;;;;;;;;;566:167:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;566:167:8;;;;;;;;;959:50:2;;;;;;;;;;;;-1:-1:-1;;;;;959:50:2;;:::o;1423:962::-;1801:22;460:5:8;;1801:22:2;;446:10:8;-1:-1:-1;;;;;446:19:8;;;460:5;;446:19;425:117;;;;-1:-1:-1;;;;;425:117:8;;;;;;;;;;;;;;;;;1715:26:2;;;;;;;:12;:26;;;;;;;;;;1756:24;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1690:52:2;;;1715:26;;1690:52;1669:121;;;;-1:-1:-1;;;;;1669:121:2;;;;;;;;;;-1:-1:-1;1838:13:2;;-1:-1:-1;;;;;;1981:27:2;;;1977:231;;2048:10;-1:-1:-1;;;;;2048:21:2;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2048:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2048:23:2;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2048:23:2;;;;;;;;;2024:47;;2129:12;2110:31;;:15;:31;;;2159:24;;;;;;;;;;;;;;;;;;;;;;;2085:112;;;;;;;-1:-1:-1;;;;;2085:112:2;;;;;;;;;;;1977:231;2267:26;;;;;;;:12;:26;;;;;;;:39;;-1:-1:-1;;2267:39:2;-1:-1:-1;;;;;2267:39:2;;;;;2321:57;;;;;2267:26;;2349:13;;2364;;2321:57;;;;;;;;;;1423:962;;;;;:::o;774:228:6:-;942:53;963:13;978:4;984:2;988:6;942:20;:53::i;:::-;774:228;;;;:::o;292:20:8:-;;;-1:-1:-1;;;;;292:20:8;;:::o;2575:203:2:-;2717:26;;2665:7;2717:26;;;:12;:26;;;;;;-1:-1:-1;;;;;2717:26:2;;2575:203::o;566:167:8:-;460:5;;446:10;-1:-1:-1;;;;;446:19:8;;;460:5;;446:19;425:117;;;;-1:-1:-1;;;;;425:117:8;;;;;;;;;-1:-1:-1;;;;;662:22:8;;;658:69;;700:5;:16;;-1:-1:-1;;700:16:8;-1:-1:-1;;;;;700:16:8;;;;;658:69;566:167;:::o;3114:660:2:-;3519:18;3577:22;3349:1;3340:6;:10;3336:432;;;3425:20;;3468:23;;;;;;;;;;;;;;;;;;3449:1;-1:-1:-1;3425:25:2;3400:105;;;;-1:-1:-1;;;;;3400:105:2;;;;;;;;;;;3546:13;3560:1;3546:16;;;;;;;;;;;;;;;;;;;;;;;3540:23;3602:26;;;;;;;:12;:26;;;;;;;;;3701:56;;;;;3540:23;;-1:-1:-1;;;;;;3602:26:2;;;;-1:-1:-1;3602:26:2;;3701:23;;:56;;3725:13;;3740:4;;3746:2;;3750:6;;3701:56;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3701:56:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3701:56:2;;;;3336:432;3114:660;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;57:66;-1:-1;;;57:66;131:440;;225:4;213:17;;209:27;-1:-1;199:2;;250:1;247;240:12;199:2;287:6;274:20;309:64;324:48;365:6;324:48;;;309:64;;;300:73;;393:6;386:5;379:21;429:4;421:6;417:17;462:4;455:5;451:16;497:3;488:6;483:3;479:16;476:25;473:2;;;514:1;511;504:12;473:2;524:41;558:6;553:3;548;524:41;;;192:379;;;;;;;;579:118;;646:46;684:6;671:20;646:46;;704:114;;769:44;805:6;792:20;769:44;;825:118;;901:37;930:6;924:13;901:37;;950:241;;1054:2;1042:9;1033:7;1029:23;1025:32;1022:2;;;1070:1;1067;1060:12;1022:2;1105:1;1122:53;1167:7;1147:9;1122:53;;;1112:63;1016:175;-1:-1;;;;1016:175;1198:721;;;;;1362:3;1350:9;1341:7;1337:23;1333:33;1330:2;;;1379:1;1376;1369:12;1330:2;1414:31;;1465:18;1454:30;;1451:2;;;1497:1;1494;1487:12;1451:2;1517:62;1571:7;1562:6;1551:9;1547:22;1517:62;;;1507:72;;1393:192;1616:2;1634:53;1679:7;1670:6;1659:9;1655:22;1634:53;;;1624:63;;1595:98;1724:2;1742:53;1787:7;1778:6;1767:9;1763:22;1742:53;;;1732:63;;1703:98;1832:2;1850:53;1895:7;1886:6;1875:9;1871:22;1850:53;;;1840:63;;1811:98;1324:595;;;;;;;;1926:237;;2028:2;2016:9;2007:7;2003:23;1999:32;1996:2;;;2044:1;2041;2034:12;1996:2;2079:1;2096:51;2139:7;2119:9;2096:51;;2170:259;;2283:2;2271:9;2262:7;2258:23;2254:32;2251:2;;;2299:1;2296;2289:12;2251:2;2334:1;2351:62;2405:7;2385:9;2351:62;;2436:487;;;;2572:2;2560:9;2551:7;2547:23;2543:32;2540:2;;;2588:1;2585;2578:12;2540:2;2623:1;2640:51;2683:7;2663:9;2640:51;;;2630:61;;2602:95;2728:2;2746:53;2791:7;2782:6;2771:9;2767:22;2746:53;;;2736:63;;2707:98;2836:2;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;;;2844:63;;2815:98;2534:389;;;;;;2930:110;3003:31;3028:5;3003:31;;;2998:3;2991:44;2985:55;;;3047:297;;3147:38;3179:5;3147:38;;;3202:6;3197:3;3190:19;3214:63;3270:6;3263:4;3258:3;3254:14;3247:4;3240:5;3236:16;3214:63;;;3309:29;3331:6;3309:29;;;3289:50;;;3302:4;3289:50;;3127:217;-1:-1;;;3127:217;3351:154;3443:56;3493:5;3443:56;;3812:397;3967:2;3955:15;;4004:66;3999:2;3990:12;;3983:88;4105:66;4100:2;4091:12;;4084:88;4200:2;4191:12;;3948:261;4217:110;4290:31;4315:5;4290:31;;4334:104;4403:29;4426:5;4403:29;;4445:193;4553:2;4538:18;;4567:61;4542:9;4601:6;4567:61;;;4524:114;;;;;4645:581;4855:3;4870:47;;;4840:19;;4931:66;4840:19;4983:6;4931:66;;;4923:74;;5008:62;5066:2;5055:9;5051:18;5042:6;5008:62;;;5081;5139:2;5128:9;5124:18;5115:6;5081:62;;;5154;5212:2;5201:9;5197:18;5188:6;5154:62;;;4826:400;;;;;;;;5233:231;5360:2;5345:18;;5374:80;5349:9;5427:6;5374:80;;5471:273;5595:2;5609:47;;;5580:18;;5670:64;5580:18;5720:6;5670:64;;5751:387;5932:2;5946:47;;;5917:18;;6007:121;5917:18;6007:121;;6145:387;6305:2;6290:18;;6319:57;6294:9;6349:6;6319:57;;;6387:62;6445:2;6434:9;6430:18;6421:6;6387:62;;;6460;6518:2;6507:9;6503:18;6494:6;6460:62;;6539:256;6601:2;6595:9;6627:17;;;6702:18;6687:34;;6723:22;;;6684:62;6681:2;;;6759:1;6756;6749:12;6681:2;6775;6768:22;6579:216;;-1:-1;6579:216;6802:258;;6945:18;6937:6;6934:30;6931:2;;;6977:1;6974;6967:12;6931:2;-1:-1;7050:4;7021;6998:17;;;;-1:-1;;6994:33;7040:15;;6868:192;7067:91;7141:12;;7125:33;7260:128;-1:-1;;;;;7329:54;;7312:76;7395:79;7464:5;7447:27;7481:88;7559:4;7548:16;;7531:38;7892:134;;7990:31;8015:5;7990:31;;8034:145;8115:6;8110:3;8105;8092:30;-1:-1;8171:1;8153:16;;8146:27;8085:94;8188:268;8253:1;8260:101;8274:6;8271:1;8268:13;8260:101;;;8341:11;;;8335:18;8322:11;;;8315:39;8296:2;8289:10;8260:101;;;8376:6;8373:1;8370:13;8367:2;;;-1:-1;;8441:1;8423:16;;8416:27;8237:219;8464:97;8552:2;8532:14;-1:-1;;8528:28;;8512:49"
            }
        }
    },
    "sources": {
        "current/protocol/AssetProxy/interfaces/IAssetProxy.sol": {
            "id": 0
        },
        "current/protocol/AssetProxy/interfaces/IAuthorizable.sol": {
            "id": 1
        },
        "current/protocol/Exchange/MixinAssetProxyDispatcher.sol": {
            "id": 2
        },
        "current/protocol/Exchange/interfaces/IAssetProxyDispatcher.sol": {
            "id": 3
        },
        "current/protocol/Exchange/libs/LibExchangeErrors.sol": {
            "id": 4
        },
        "current/protocol/Exchange/mixins/MAssetProxyDispatcher.sol": {
            "id": 5
        },
        "current/test/TestAssetProxyDispatcher/TestAssetProxyDispatcher.sol": {
            "id": 6
        },
        "current/utils/Ownable/IOwnable.sol": {
            "id": 7
        },
        "current/utils/Ownable/Ownable.sol": {
            "id": 8
        }
    },
    "sourceCodes": {
        "current/protocol/AssetProxy/interfaces/IAssetProxy.sol": "/*\n\n  Copyright 2018 ZeroEx Intl.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\nimport \"./IAuthorizable.sol\";\n\ncontract IAssetProxy is\n    IAuthorizable\n{\n\n    /// @dev Transfers assets. Either succeeds or throws.\n    /// @param assetMetadata Byte array encoded for the respective asset proxy.\n    /// @param from Address to transfer asset from.\n    /// @param to Address to transfer asset to.\n    /// @param amount Amount of asset to transfer.\n    function transferFrom(\n        bytes assetMetadata,\n        address from,\n        address to,\n        uint256 amount)\n        external;\n    \n    /// @dev Makes multiple transfers of assets. Either succeeds or throws.\n    /// @param assetMetadata Array of byte arrays encoded for the respective asset proxy.\n    /// @param from Array of addresses to transfer assets from.\n    /// @param to Array of addresses to transfer assets to.\n    /// @param amounts Array of amounts of assets to transfer.\n    function batchTransferFrom(\n        bytes[] memory assetMetadata,\n        address[] memory from,\n        address[] memory to,\n        uint256[] memory amounts)\n        public;\n\n    /// @dev Gets the proxy id associated with the proxy address.\n    /// @return Proxy id.\n    function getProxyId()\n        external\n        view\n        returns (uint8);\n}\n\n",
        "current/protocol/AssetProxy/interfaces/IAuthorizable.sol": "/*\n\n  Copyright 2018 ZeroEx Intl.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\nimport \"../../../utils/Ownable/IOwnable.sol\";\n\ncontract IAuthorizable is\n    IOwnable\n{\n\n    /// @dev Gets all authorized addresses.\n    /// @return Array of authorized addresses.\n    function getAuthorizedAddresses()\n        external\n        view\n        returns (address[]);\n\n    /// @dev Authorizes an address.\n    /// @param target Address to authorize.\n    function addAuthorizedAddress(address target)\n        external;\n\n    /// @dev Removes authorizion of an address.\n    /// @param target Address to remove authorization from.\n    function removeAuthorizedAddress(address target)\n        external;\n\n    /// @dev Removes authorizion of an address.\n    /// @param target Address to remove authorization from.\n    /// @param index Index of target in authorities array.\n    function removeAuthorizedAddressAtIndex(address target, uint256 index)\n        external;\n}\n",
        "current/protocol/Exchange/MixinAssetProxyDispatcher.sol": "/*\n\n  Copyright 2018 ZeroEx Intl.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\n\nimport \"../../utils/Ownable/Ownable.sol\";\nimport \"../AssetProxy/interfaces/IAssetProxy.sol\";\nimport \"./libs/LibExchangeErrors.sol\";\nimport \"./mixins/MAssetProxyDispatcher.sol\";\n\ncontract MixinAssetProxyDispatcher is\n    LibExchangeErrors,\n    Ownable,\n    MAssetProxyDispatcher\n{\n    // Mapping from Asset Proxy Id's to their respective Asset Proxy\n    mapping (uint8 => IAssetProxy) public assetProxies;\n\n    /// @dev Registers an asset proxy to an asset proxy id.\n    ///      An id can only be assigned to a single proxy at a given time.\n    /// @param assetProxyId Id to register`newAssetProxy` under.\n    /// @param newAssetProxy Address of new asset proxy to register, or 0x0 to unset assetProxyId.\n    /// @param oldAssetProxy Existing asset proxy to overwrite, or 0x0 if assetProxyId is currently unused.\n    function registerAssetProxy(\n        uint8 assetProxyId,\n        address newAssetProxy,\n        address oldAssetProxy)\n        external\n        onlyOwner\n    {\n        // Ensure the existing asset proxy is not unintentionally overwritten\n        require(\n            oldAssetProxy == address(assetProxies[assetProxyId]),\n            OLD_ASSET_PROXY_MISMATCH\n        );\n\n        IAssetProxy assetProxy = IAssetProxy(newAssetProxy);\n\n        // Ensure that the id of newAssetProxy matches the passed in assetProxyId, unless it is being reset to 0.\n        if (newAssetProxy != address(0)) {\n            uint8 newAssetProxyId = assetProxy.getProxyId();\n            require(\n                newAssetProxyId == assetProxyId,\n                NEW_ASSET_PROXY_MISMATCH\n            );\n        }\n\n        // Add asset proxy and log registration.\n        assetProxies[assetProxyId] = assetProxy;\n        emit AssetProxySet(assetProxyId, newAssetProxy, oldAssetProxy);\n    }\n\n    /// @dev Gets an asset proxy.\n    /// @param assetProxyId Id of the asset proxy.\n    /// @return The asset proxy registered to assetProxyId. Returns 0x0 if no proxy is registered.\n    function getAssetProxy(uint8 assetProxyId)\n        external\n        view\n        returns (address)\n    {\n        address assetProxy = address(assetProxies[assetProxyId]);\n        return assetProxy;\n    }\n\n    /// @dev Forwards arguments to assetProxy and calls `transferFrom`. Either succeeds or throws.\n    /// @param assetMetadata Byte array encoded for the respective asset proxy.\n    /// @param from Address to transfer token from.\n    /// @param to Address to transfer token to.\n    /// @param amount Amount of token to transfer.\n    function dispatchTransferFrom(\n        bytes memory assetMetadata,\n        address from,\n        address to,\n        uint256 amount)\n        internal\n    {\n        // Do nothing if no amount should be transferred.\n        if (amount > 0) {\n            // Lookup asset proxy\n            require(\n                assetMetadata.length >= 1,\n                GT_ZERO_LENGTH_REQUIRED\n            );\n            uint8 assetProxyId = uint8(assetMetadata[0]);\n            IAssetProxy assetProxy = assetProxies[assetProxyId];\n\n            // transferFrom will either succeed or throw.\n            assetProxy.transferFrom(assetMetadata, from, to, amount);\n        }\n    }\n}\n",
        "current/protocol/Exchange/interfaces/IAssetProxyDispatcher.sol": "/*\n\n  Copyright 2018 ZeroEx Intl.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\n\ncontract IAssetProxyDispatcher {\n\n    /// @dev Registers an asset proxy to an asset proxy id.\n    ///      An id can only be assigned to a single proxy at a given time.\n    /// @param assetProxyId Id to register`newAssetProxy` under.\n    /// @param newAssetProxy Address of new asset proxy to register, or 0x0 to unset assetProxyId.\n    /// @param oldAssetProxy Existing asset proxy to overwrite, or 0x0 if assetProxyId is currently unused.\n    function registerAssetProxy(\n        uint8 assetProxyId,\n        address newAssetProxy,\n        address oldAssetProxy)\n        external;\n\n    /// @dev Gets an asset proxy.\n    /// @param assetProxyId Id of the asset proxy.\n    /// @return The asset proxy registered to assetProxyId. Returns 0x0 if no proxy is registered.\n    function getAssetProxy(uint8 assetProxyId)\n        external\n        view\n        returns (address);\n}\n",
        "current/protocol/Exchange/libs/LibExchangeErrors.sol": "/*\n\n  Copyright 2018 ZeroEx Intl.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\n\ncontract LibExchangeErrors {\n\n    // Error Codes\n    enum Errors {\n        ORDER_EXPIRED,                     // Order has already expired\n        ORDER_FULLY_FILLED,                // Order has already been fully filled\n        ORDER_CANCELLED,                   // Order has already been cancelled\n        ROUNDING_ERROR_TOO_LARGE,          // Rounding error too large\n        INSUFFICIENT_BALANCE_OR_ALLOWANCE  // Insufficient balance or allowance for token transfer\n    }\n\n    event ExchangeError(uint8 indexed errorId, bytes32 indexed orderHash);\n\n    // Core revert reasons\n    string constant GT_ZERO_AMOUNT_REQUIRED = \"Amount must be greater than 0.\";\n    string constant SIGNATURE_VALIDATION_FAILED = \"Signature validation failed.\";\n    string constant INVALID_SENDER = \"Invalid `msg.sender`.\";\n    string constant INVALID_CONTEXT = \"Function called in an invalid context.\";\n    string constant INVALID_NEW_MAKER_EPOCH = \"Specified salt must be greater than or equal to existing makerEpoch.\";\n\n    // Transaction revert reasons\n    string constant DUPLICATE_TRANSACTION_HASH = \"Transaction has already been executed.\";\n    string constant TRANSACTION_EXECUTION_FAILED = \"Transaction execution failed.\";\n\n    // Wrapper revert reasons\n    string constant COMPLETE_FILL_FAILED = \"Desired fill amount could not be completely filled.\";\n    string constant ASSET_DATA_MISMATCH = \"Asset data must be the same for each order.\";\n\n    // Asset proxy dispatcher revert reasons\n    string constant GT_ZERO_LENGTH_REQUIRED = \"Length must be greater than 0.\";\n    string constant OLD_ASSET_PROXY_MISMATCH = \"Old asset proxy does not match asset proxy at given id.\";\n    string constant NEW_ASSET_PROXY_MISMATCH = \"New asset proxy id does not match given id.\";\n\n    // Signature validator revert reasons\n    string constant INVALID_SIGNATURE_LENGTH = \"Invalid signature length.\";\n    string constant ILLEGAL_SIGNATURE_TYPE = \"Illegal signature type.\";\n    string constant UNSUPPORTED_SIGNATURE_TYPE = \"Unsupported signature type.\";\n}\n",
        "current/protocol/Exchange/mixins/MAssetProxyDispatcher.sol": "/*\n\n  Copyright 2018 ZeroEx Intl.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\n\nimport \"../interfaces/IAssetProxyDispatcher.sol\";\n\ncontract MAssetProxyDispatcher is\n    IAssetProxyDispatcher\n{\n\n    // Logs registration of new asset proxy\n    event AssetProxySet(\n        uint8 id,\n        address newAssetProxy,\n        address oldAssetProxy\n    );\n\n    /// @dev Forwards arguments to assetProxy and calls `transferFrom`. Either succeeds or throws.\n    /// @param assetMetadata Byte array encoded for the respective asset proxy.\n    /// @param from Address to transfer token from.\n    /// @param to Address to transfer token to.\n    /// @param amount Amount of token to transfer.\n    function dispatchTransferFrom(\n        bytes memory assetMetadata,\n        address from,\n        address to,\n        uint256 amount)\n        internal;\n}\n",
        "current/test/TestAssetProxyDispatcher/TestAssetProxyDispatcher.sol": "/*\n\n  Copyright 2018 ZeroEx Intl.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n\n*/\n\npragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\nimport \"../../protocol/Exchange/MixinAssetProxyDispatcher.sol\";\n\ncontract TestAssetProxyDispatcher is MixinAssetProxyDispatcher {\n    function publicDispatchTransferFrom(\n        bytes memory assetMetadata,\n        address from,\n        address to,\n        uint256 amount)\n        public\n    {\n        dispatchTransferFrom(assetMetadata, from, to, amount);\n    }\n}\n",
        "current/utils/Ownable/IOwnable.sol": "pragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\n/*\n * Ownable\n *\n * Base contract with an owner.\n * Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner.\n */\n\ncontract IOwnable {\n    function transferOwnership(address newOwner)\n        public;\n}\n",
        "current/utils/Ownable/Ownable.sol": "pragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\n/*\n * Ownable\n *\n * Base contract with an owner.\n * Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner.\n */\n\nimport \"./IOwnable.sol\";\n\ncontract Ownable is IOwnable {\n    address public owner;\n\n    constructor ()\n        public\n    {\n        owner = msg.sender;\n    }\n\n    modifier onlyOwner() {\n        require(\n            msg.sender == owner,\n            \"Only contract owner is allowed to call this method.\"\n        );\n        _;\n    }\n\n    function transferOwnership(address newOwner)\n        public\n        onlyOwner\n    {\n        if (newOwner != address(0)) {\n            owner = newOwner;\n        }\n    }\n}\n"
    },
    "sourceTreeHashHex": "0xca98b412fdf7ee1fd12cde7da977940083a8664ee66968873946219a74acd033",
    "compiler": {
        "name": "solc",
        "version": "0.4.23",
        "settings": {
            "optimizer": {
                "enabled": true,
                "runs": 200
            },
            "outputSelection": {
                "*": {
                    "*": [
                        "abi",
                        "evm.bytecode.object",
                        "evm.bytecode.sourceMap",
                        "evm.deployedBytecode.object",
                        "evm.deployedBytecode.sourceMap"
                    ]
                }
            }
        }
    },
    "networks": {}
}