├── .babelrc
├── .gitignore
├── README.md
├── bin
├── compile-typings
└── test
├── chai-bignumber.d.ts
├── contracts.d.ts
├── contracts
├── Migrations.sol
└── SimpleSale.sol
├── ethpm.json
├── generate.ts
├── installed_contracts
└── zeppelin
│ ├── ethpm.json
│ ├── lock.json
│ └── lock.uri
├── migrations
├── 1_initial_migration.js
└── 2_deploy_contracts.js
├── package.json
├── test
└── SimpleSale.ts
├── truffle.d.ts
├── truffle.js
├── tsconfig.json
├── web3.d.ts
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "stage-2", "stage-3"]
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /build
3 | coverage.json
4 | coverage/
5 |
6 | # Ignore our compiled js_test directory
7 | /js_test
8 |
9 | # Don't check in our installed ethpm dependency source. Just the lockfile details.
10 | installed_contracts/**/*.sol
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # TypeScript + Solidity
2 |
3 | * Run `yarn` then `./node_modules/.bin/truffle install` to get setup
4 | * `./node_modules/.bin/truffle compile` to make sure everything builds
5 | * `bin/compile-typings` to compile TypeScript typings from ABIs
6 | * `bin/test` to run test suite
7 |
--------------------------------------------------------------------------------
/bin/compile-typings:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | compile_typings() {
4 | ./node_modules/.bin/ts-node generate.ts
5 | }
6 |
7 | format_typings() {
8 | ./node_modules/.bin/prettier
9 | }
10 |
11 | update_typings() {
12 | compile_typings | format_typings > contracts.d.ts
13 | }
14 |
15 | compile_solidity() {
16 | ./node_modules/.bin/truffle compile
17 | }
18 |
19 | compile_solidity
20 | update_typings
21 |
--------------------------------------------------------------------------------
/bin/test:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Exit script as soon as a command fails.
4 | set -o errexit
5 |
6 | # Executes cleanup function at script exit.
7 | trap cleanup EXIT
8 |
9 | cleanup() {
10 | # Kill the testrpc instance that we started (if we started one and if it's still running).
11 | if descendant_testrpc_exists; then
12 | kill_descendant_testrpc "$background_pid"
13 | fi
14 | }
15 |
16 | if [ "$SOLIDITY_COVERAGE" = true ]; then
17 | testrpc_port=8555
18 | else
19 | testrpc_port=8545
20 | fi
21 |
22 | kill_descendant_testrpc() {
23 | local parent_pid="$1"
24 |
25 | # The `-P` flag only looks for processes that are a child of the provided
26 | # pid. This makes sure we don't kill other testrpc commands that might be running.
27 | #
28 | # The `-f` flag lets us match against arguments which is important because the
29 | # testrpc command looks like this:
30 | #
31 | # 32938 s002 S 0:03.05 node node_modules/.bin/testrpc --gasLimit 100000000
32 | #
33 | # where `node` is the process name and `testrpc` is just part of an argument
34 | pkill -P "$parent_pid" -f testrpc > /dev/null
35 | }
36 |
37 | descendant_testrpc_exists() {
38 | pgrep -f testrpc > /dev/null
39 | }
40 |
41 | testrpc_running() {
42 | nc -z localhost "$testrpc_port"
43 | }
44 |
45 | testrpc() {
46 | if [ "$SOLIDITY_COVERAGE" = true ]; then
47 | node_modules/.bin/testrpc-sc --gasLimit 0xfffffffffff --port "$testrpc_port" "$@"
48 | else
49 | node_modules/.bin/testrpc "$@"
50 | fi
51 | }
52 |
53 | remove_compiled_tests() {
54 | if [ -d ./js_test ]; then
55 | rm -r ./js_test
56 | fi
57 | }
58 |
59 | compile_tests() {
60 | remove_compiled_tests
61 |
62 | # Copy over files so we include things like mock contracts
63 | cp -r ./test ./js_test
64 |
65 | # Compile into the js_test directory
66 | node_modules/.bin/tsc
67 | }
68 |
69 | compiled_test_files() {
70 | # Return a list of compiled test files
71 | find js_test -type f
72 | }
73 |
74 | if testrpc_running; then
75 | echo "Using existing testrpc instance"
76 | else
77 | echo "Starting our own testrpc instance"
78 | testrpc --gasLimit 100000000 > /dev/null &
79 | background_pid="$!"
80 | fi
81 |
82 | if [ "$SOLIDITY_COVERAGE" = true ]; then
83 | node_modules/.bin/solidity-coverage
84 | else
85 | compile_tests
86 | compiled_test_files | xargs node_modules/.bin/truffle test "$@"
87 | fi
88 |
--------------------------------------------------------------------------------
/chai-bignumber.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | declare module "chai-bignumber" {
4 | function chaiBignumber(bignumber: any): (chai: any, utils: any) => void;
5 |
6 | namespace chaiBignumber {
7 |
8 | }
9 |
10 | export = chaiBignumber;
11 | }
12 |
13 | declare namespace Chai {
14 | // For BDD API
15 | interface Assertion extends LanguageChains, NumericComparison, TypeComparison {
16 | bignumber: Assertion;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/contracts.d.ts:
--------------------------------------------------------------------------------
1 | import * as Web3 from "web3";
2 | import * as BigNumber from "bignumber.js";
3 |
4 | type Address = string;
5 | type TransactionOptions = Partial;
6 | type UInt = number | BigNumber.BigNumber;
7 |
8 | interface Transaction {
9 | hash: string;
10 | nonce: number;
11 | blockHash: string | null;
12 | blockNumber: number | null;
13 | transactionIndex: number | null;
14 | from: Address | ContractInstance;
15 | to: string | null;
16 | value: UInt;
17 | gasPrice: UInt;
18 | gas: number;
19 | input: string;
20 | }
21 |
22 | interface ContractInstance {
23 | address: string;
24 | sendTransaction(options?: TransactionOptions): Promise;
25 | }
26 |
27 | export interface BasicTokenInstance extends ContractInstance {
28 | totalSupply(options?: TransactionOptions): Promise;
29 | balanceOf(
30 | owner: Address,
31 | options?: TransactionOptions
32 | ): Promise;
33 | transfer(
34 | to: Address,
35 | value: UInt,
36 | options?: TransactionOptions
37 | ): Promise;
38 | }
39 |
40 | export interface CrowdsaleInstance extends ContractInstance {
41 | rate(options?: TransactionOptions): Promise;
42 | endTime(options?: TransactionOptions): Promise;
43 | weiRaised(options?: TransactionOptions): Promise;
44 | wallet(options?: TransactionOptions): Promise;
45 | startTime(options?: TransactionOptions): Promise;
46 | buyTokens(beneficiary: Address, options?: TransactionOptions): Promise;
47 | hasEnded(options?: TransactionOptions): Promise;
48 | token(options?: TransactionOptions): Promise;
49 | }
50 |
51 | export interface ERC20Instance extends ContractInstance {
52 | approve(
53 | spender: Address,
54 | value: UInt,
55 | options?: TransactionOptions
56 | ): Promise;
57 | totalSupply(options?: TransactionOptions): Promise;
58 | transferFrom(
59 | from: Address,
60 | to: Address,
61 | value: UInt,
62 | options?: TransactionOptions
63 | ): Promise;
64 | balanceOf(
65 | who: Address,
66 | options?: TransactionOptions
67 | ): Promise;
68 | transfer(
69 | to: Address,
70 | value: UInt,
71 | options?: TransactionOptions
72 | ): Promise;
73 | allowance(
74 | owner: Address,
75 | spender: Address,
76 | options?: TransactionOptions
77 | ): Promise;
78 | }
79 |
80 | export interface ERC20BasicInstance extends ContractInstance {
81 | totalSupply(options?: TransactionOptions): Promise;
82 | balanceOf(
83 | who: Address,
84 | options?: TransactionOptions
85 | ): Promise;
86 | transfer(
87 | to: Address,
88 | value: UInt,
89 | options?: TransactionOptions
90 | ): Promise;
91 | }
92 |
93 | export interface LimitedTransferTokenInstance extends ContractInstance {
94 | approve(
95 | spender: Address,
96 | value: UInt,
97 | options?: TransactionOptions
98 | ): Promise;
99 | totalSupply(options?: TransactionOptions): Promise;
100 | transferFrom(
101 | from: Address,
102 | to: Address,
103 | value: UInt,
104 | options?: TransactionOptions
105 | ): Promise;
106 | balanceOf(
107 | who: Address,
108 | options?: TransactionOptions
109 | ): Promise;
110 | transfer(
111 | to: Address,
112 | value: UInt,
113 | options?: TransactionOptions
114 | ): Promise;
115 | transferableTokens(
116 | holder: Address,
117 | time: UInt,
118 | options?: TransactionOptions
119 | ): Promise;
120 | allowance(
121 | owner: Address,
122 | spender: Address,
123 | options?: TransactionOptions
124 | ): Promise;
125 | }
126 |
127 | export interface MathInstance extends ContractInstance {}
128 |
129 | export interface MigrationsInstance extends ContractInstance {
130 | upgrade(new_address: Address, options?: TransactionOptions): Promise;
131 | last_completed_migration(
132 | options?: TransactionOptions
133 | ): Promise;
134 | owner(options?: TransactionOptions): Promise;
135 | setCompleted(completed: UInt, options?: TransactionOptions): Promise;
136 | }
137 |
138 | export interface MintableTokenInstance extends ContractInstance {
139 | mintingFinished(options?: TransactionOptions): Promise;
140 | approve(
141 | spender: Address,
142 | value: UInt,
143 | options?: TransactionOptions
144 | ): Promise;
145 | totalSupply(options?: TransactionOptions): Promise;
146 | transferFrom(
147 | from: Address,
148 | to: Address,
149 | value: UInt,
150 | options?: TransactionOptions
151 | ): Promise;
152 | mint(
153 | to: Address,
154 | amount: UInt,
155 | options?: TransactionOptions
156 | ): Promise;
157 | decreaseApproval(
158 | spender: Address,
159 | subtractedValue: UInt,
160 | options?: TransactionOptions
161 | ): Promise;
162 | balanceOf(
163 | owner: Address,
164 | options?: TransactionOptions
165 | ): Promise;
166 | finishMinting(options?: TransactionOptions): Promise;
167 | owner(options?: TransactionOptions): Promise;
168 | transfer(
169 | to: Address,
170 | value: UInt,
171 | options?: TransactionOptions
172 | ): Promise;
173 | increaseApproval(
174 | spender: Address,
175 | addedValue: UInt,
176 | options?: TransactionOptions
177 | ): Promise;
178 | allowance(
179 | owner: Address,
180 | spender: Address,
181 | options?: TransactionOptions
182 | ): Promise;
183 | transferOwnership(
184 | newOwner: Address,
185 | options?: TransactionOptions
186 | ): Promise;
187 | }
188 |
189 | export interface OwnableInstance extends ContractInstance {
190 | owner(options?: TransactionOptions): Promise;
191 | transferOwnership(
192 | newOwner: Address,
193 | options?: TransactionOptions
194 | ): Promise;
195 | }
196 |
197 | export interface SafeMathInstance extends ContractInstance {}
198 |
199 | export interface SimpleSaleInstance extends ContractInstance {
200 | rate(options?: TransactionOptions): Promise;
201 | endTime(options?: TransactionOptions): Promise;
202 | weiRaised(options?: TransactionOptions): Promise;
203 | wallet(options?: TransactionOptions): Promise;
204 | startTime(options?: TransactionOptions): Promise;
205 | buyTokens(beneficiary: Address, options?: TransactionOptions): Promise;
206 | hasEnded(options?: TransactionOptions): Promise;
207 | token(options?: TransactionOptions): Promise;
208 | }
209 |
210 | export interface SimpleTokenInstance extends ContractInstance {
211 | mintingFinished(options?: TransactionOptions): Promise;
212 | approve(
213 | spender: Address,
214 | value: UInt,
215 | options?: TransactionOptions
216 | ): Promise;
217 | totalSupply(options?: TransactionOptions): Promise;
218 | transferFrom(
219 | from: Address,
220 | to: Address,
221 | value: UInt,
222 | options?: TransactionOptions
223 | ): Promise;
224 | mint(
225 | to: Address,
226 | amount: UInt,
227 | options?: TransactionOptions
228 | ): Promise;
229 | decreaseApproval(
230 | spender: Address,
231 | subtractedValue: UInt,
232 | options?: TransactionOptions
233 | ): Promise;
234 | balanceOf(
235 | owner: Address,
236 | options?: TransactionOptions
237 | ): Promise;
238 | finishMinting(options?: TransactionOptions): Promise;
239 | owner(options?: TransactionOptions): Promise;
240 | transfer(
241 | to: Address,
242 | value: UInt,
243 | options?: TransactionOptions
244 | ): Promise;
245 | increaseApproval(
246 | spender: Address,
247 | addedValue: UInt,
248 | options?: TransactionOptions
249 | ): Promise;
250 | allowance(
251 | owner: Address,
252 | spender: Address,
253 | options?: TransactionOptions
254 | ): Promise;
255 | transferOwnership(
256 | newOwner: Address,
257 | options?: TransactionOptions
258 | ): Promise;
259 | }
260 |
261 | export interface StandardTokenInstance extends ContractInstance {
262 | approve(
263 | spender: Address,
264 | value: UInt,
265 | options?: TransactionOptions
266 | ): Promise;
267 | totalSupply(options?: TransactionOptions): Promise;
268 | transferFrom(
269 | from: Address,
270 | to: Address,
271 | value: UInt,
272 | options?: TransactionOptions
273 | ): Promise;
274 | decreaseApproval(
275 | spender: Address,
276 | subtractedValue: UInt,
277 | options?: TransactionOptions
278 | ): Promise;
279 | balanceOf(
280 | owner: Address,
281 | options?: TransactionOptions
282 | ): Promise;
283 | transfer(
284 | to: Address,
285 | value: UInt,
286 | options?: TransactionOptions
287 | ): Promise;
288 | increaseApproval(
289 | spender: Address,
290 | addedValue: UInt,
291 | options?: TransactionOptions
292 | ): Promise;
293 | allowance(
294 | owner: Address,
295 | spender: Address,
296 | options?: TransactionOptions
297 | ): Promise;
298 | }
299 |
300 | export interface VestedTokenInstance extends ContractInstance {
301 | tokenGrantsCount(
302 | holder: Address,
303 | options?: TransactionOptions
304 | ): Promise;
305 | approve(
306 | spender: Address,
307 | value: UInt,
308 | options?: TransactionOptions
309 | ): Promise;
310 | totalSupply(options?: TransactionOptions): Promise;
311 | transferFrom(
312 | from: Address,
313 | to: Address,
314 | value: UInt,
315 | options?: TransactionOptions
316 | ): Promise;
317 | grants(
318 | unnamed0: Address,
319 | unnamed1: UInt,
320 | options?: TransactionOptions
321 | ): Promise<
322 | [
323 | Address,
324 | BigNumber.BigNumber,
325 | BigNumber.BigNumber,
326 | BigNumber.BigNumber,
327 | BigNumber.BigNumber,
328 | boolean,
329 | boolean
330 | ]
331 | >;
332 | tokenGrant(
333 | holder: Address,
334 | grantId: UInt,
335 | options?: TransactionOptions
336 | ): Promise<
337 | [
338 | Address,
339 | BigNumber.BigNumber,
340 | BigNumber.BigNumber,
341 | BigNumber.BigNumber,
342 | BigNumber.BigNumber,
343 | BigNumber.BigNumber,
344 | boolean,
345 | boolean
346 | ]
347 | >;
348 | decreaseApproval(
349 | spender: Address,
350 | subtractedValue: UInt,
351 | options?: TransactionOptions
352 | ): Promise;
353 | lastTokenIsTransferableDate(
354 | holder: Address,
355 | options?: TransactionOptions
356 | ): Promise;
357 | balanceOf(
358 | owner: Address,
359 | options?: TransactionOptions
360 | ): Promise;
361 | grantVestedTokens(
362 | to: Address,
363 | value: UInt,
364 | start: UInt,
365 | cliff: UInt,
366 | vesting: UInt,
367 | revokable: boolean,
368 | burnsOnRevoke: boolean,
369 | options?: TransactionOptions
370 | ): Promise;
371 | transfer(
372 | to: Address,
373 | value: UInt,
374 | options?: TransactionOptions
375 | ): Promise;
376 | transferableTokens(
377 | holder: Address,
378 | time: UInt,
379 | options?: TransactionOptions
380 | ): Promise;
381 | increaseApproval(
382 | spender: Address,
383 | addedValue: UInt,
384 | options?: TransactionOptions
385 | ): Promise;
386 | allowance(
387 | owner: Address,
388 | spender: Address,
389 | options?: TransactionOptions
390 | ): Promise;
391 | calculateVestedTokens(
392 | tokens: UInt,
393 | time: UInt,
394 | start: UInt,
395 | cliff: UInt,
396 | vesting: UInt,
397 | options?: TransactionOptions
398 | ): Promise;
399 | revokeTokenGrant(
400 | holder: Address,
401 | grantId: UInt,
402 | options?: TransactionOptions
403 | ): Promise;
404 | }
405 |
--------------------------------------------------------------------------------
/contracts/Migrations.sol:
--------------------------------------------------------------------------------
1 | pragma solidity ^0.4.4;
2 |
3 | contract Migrations {
4 | address public owner;
5 | uint public last_completed_migration;
6 |
7 | modifier restricted() {
8 | if (msg.sender == owner) _;
9 | }
10 |
11 | function Migrations() {
12 | owner = msg.sender;
13 | }
14 |
15 | function setCompleted(uint completed) restricted {
16 | last_completed_migration = completed;
17 | }
18 |
19 | function upgrade(address new_address) restricted {
20 | Migrations upgraded = Migrations(new_address);
21 | upgraded.setCompleted(last_completed_migration);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/contracts/SimpleSale.sol:
--------------------------------------------------------------------------------
1 | pragma solidity ^0.4.15;
2 |
3 | import "zeppelin/token/MintableToken.sol";
4 | import "zeppelin/crowdsale/Crowdsale.sol";
5 |
6 | contract SimpleToken is MintableToken {
7 | }
8 |
9 | contract SimpleSale is Crowdsale {
10 | function SimpleSale (
11 | uint256 _startTime,
12 | uint256 _endTime,
13 | uint256 _rate,
14 | address _wallet
15 | )
16 | Crowdsale(_startTime, _endTime, _rate, _wallet)
17 | {
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/ethpm.json:
--------------------------------------------------------------------------------
1 | {
2 | "package_name": "sample-crowdsale",
3 | "version": "0.0.1",
4 | "description": "Sample crowdsale",
5 | "authors": ["John Backus "],
6 | "keywords": ["ethereum", "typescript"],
7 | "dependencies": {
8 | "zeppelin": "1.3.0"
9 | },
10 | "license": "MIT"
11 | }
12 |
--------------------------------------------------------------------------------
/generate.ts:
--------------------------------------------------------------------------------
1 | interface ConstructorMember {
2 | inputs: FunctionMemberInput[];
3 | payable: false;
4 | type: "constructor";
5 | }
6 |
7 | interface EventMember {
8 | inputs: FunctionMemberInput[];
9 | name: string;
10 | type: "event";
11 | }
12 |
13 | interface FunctionMember {
14 | inputs: FunctionMemberInput[];
15 | outputs: FunctionMemberInput[];
16 | name: string;
17 | constant: boolean;
18 | payable: boolean;
19 | type: "function";
20 | }
21 |
22 | interface FallbackMember {
23 | type: "fallback";
24 | payable: boolean;
25 | }
26 |
27 | interface UnknownMember {
28 | type: string;
29 | }
30 |
31 | type SolidityType =
32 | | "address"
33 | | "address[]"
34 | | "bool"
35 | | "bytes"
36 | | "string"
37 | | "uint8"
38 | | "uint64"
39 | | "uint256"
40 | | "uint256[]";
41 |
42 | interface FunctionMemberInput {
43 | name: string;
44 | type: SolidityType;
45 | }
46 |
47 | type Member = ConstructorMember | EventMember | FunctionMember | FallbackMember;
48 |
49 | type Abi = (EventMember | FunctionMember)[];
50 |
51 | interface Definition {
52 | contract_name: string;
53 | abi: Abi;
54 | }
55 |
56 | function generateHeader(): string {
57 | return `
58 | import * as Web3 from "web3";
59 | import * as BigNumber from "bignumber.js";
60 |
61 | type Address = string;
62 | type TransactionOptions = Partial;
63 | type UInt = number | BigNumber.BigNumber;
64 |
65 | interface Transaction {
66 | hash: string;
67 | nonce: number;
68 | blockHash: string | null;
69 | blockNumber: number | null;
70 | transactionIndex: number | null;
71 | from: Address | ContractInstance;
72 | to: string | null;
73 | value: UInt;
74 | gasPrice: UInt;
75 | gas: number;
76 | input: string;
77 | }
78 |
79 | interface ContractInstance {
80 | address: string;
81 | sendTransaction(options?: TransactionOptions): Promise;
82 | }
83 | `;
84 | }
85 |
86 | function buildContract(definition: Definition) {
87 | return `
88 | export interface ${definition.contract_name}Instance extends ContractInstance {
89 | ${buildMembers(definition.abi)}
90 | }
91 | `;
92 | }
93 |
94 | function buildMembers(abi: Abi): string {
95 | return abi.map(buildMember).join("\n");
96 | }
97 |
98 | function buildMember(member: Member): string {
99 | switch (member.type) {
100 | case "function":
101 | return buildFunctionMember(member);
102 | case "event":
103 | return buildEventMember(member);
104 | case "constructor":
105 | return buildConstructorMember(member);
106 | case "fallback":
107 | return buildFallbackMember(member);
108 | default:
109 | throw "Exhaustiveness miss!";
110 | }
111 | }
112 |
113 | function buildFunctionMember(member: FunctionMember) {
114 | let args = member.inputs.map(buildFunctionArgument).join(", ");
115 |
116 | if (args.length > 0) {
117 | args += ", ";
118 | }
119 |
120 | return `${member.name}(${args}options?: TransactionOptions): ${translateOutputs(
121 | member.outputs
122 | )};`;
123 | }
124 |
125 | function translateOutputs(outputs: FunctionMemberInput[]) {
126 | let valueType;
127 | if (outputs.length === 1) {
128 | valueType = translateOutput(outputs[0]);
129 | } else if (outputs.length === 0) {
130 | valueType = "void";
131 | } else {
132 | valueType = `[${outputs.map(translateOutput).join(", ")}]`;
133 | }
134 |
135 | return `Promise<${valueType}>`;
136 | }
137 |
138 | function translateOutput(output: FunctionMemberInput) {
139 | return translateType(output.type, { UInt: "BigNumber.BigNumber" });
140 | }
141 |
142 | let unnamedArgumentNumber = 0;
143 |
144 | function unnamedArgumentName(): string {
145 | return `unnamed${unnamedArgumentNumber++}`;
146 | }
147 |
148 | function buildFunctionArgument(input: FunctionMemberInput): string {
149 | let name = input.name;
150 | if (name[0] == "_") {
151 | name = name.slice(1);
152 | }
153 | const type = translateType(input.type);
154 |
155 | if (name.length === 0) {
156 | name = unnamedArgumentName();
157 | }
158 |
159 | return `${name}: ${type}`;
160 | }
161 |
162 | function translateType(type: SolidityType, options = { UInt: "UInt" }): string {
163 | switch (type) {
164 | case "string":
165 | return "string";
166 | case "address":
167 | return "Address";
168 | case "address[]":
169 | return "Address[]";
170 | case "bool":
171 | return "boolean";
172 | case "bytes":
173 | return "string";
174 | case "uint8":
175 | case "uint64":
176 | case "uint256":
177 | return options.UInt;
178 | case "uint256[]":
179 | return `${options.UInt}[]`;
180 | default:
181 | throw `Unexpected case! ${type}`;
182 | }
183 | }
184 |
185 | function buildEventMember(_member: Member) {
186 | return "";
187 | }
188 |
189 | function buildConstructorMember(_member: Member) {
190 | return "";
191 | }
192 |
193 | function buildFallbackMember(_member: Member) {
194 | return "";
195 | }
196 |
197 | const glob = require("glob");
198 |
199 | glob("./build/contracts/*.json", {}, (err: string, files: string[]) => {
200 | if (err) {
201 | console.log("Error!", err);
202 | return;
203 | }
204 |
205 | console.log(generateHeader());
206 |
207 | files.forEach(file => {
208 | let definition: Definition = require(file);
209 |
210 | console.log(buildContract(definition));
211 | });
212 | });
213 |
--------------------------------------------------------------------------------
/installed_contracts/zeppelin/ethpm.json:
--------------------------------------------------------------------------------
1 | {
2 | "authors": [
3 | "Manuel Araoz "
4 | ],
5 | "license": "MIT",
6 | "description": "Secure Smart Contract library for Solidity",
7 | "keywords": [
8 | "solidity",
9 | "ethereum",
10 | "smart",
11 | "contracts",
12 | "security",
13 | "zeppelin"
14 | ],
15 | "links": {},
16 | "sources": [
17 | "./contracts/Bounty.sol",
18 | "./contracts/DayLimit.sol",
19 | "./contracts/ECRecovery.sol",
20 | "./contracts/LimitBalance.sol",
21 | "./contracts/MerkleProof.sol",
22 | "./contracts/ReentrancyGuard.sol",
23 | "./contracts/crowdsale/CappedCrowdsale.sol",
24 | "./contracts/crowdsale/Crowdsale.sol",
25 | "./contracts/crowdsale/FinalizableCrowdsale.sol",
26 | "./contracts/crowdsale/RefundableCrowdsale.sol",
27 | "./contracts/crowdsale/RefundVault.sol",
28 | "./contracts/examples/SampleCrowdsale.sol",
29 | "./contracts/examples/SimpleToken.sol",
30 | "./contracts/lifecycle/Destructible.sol",
31 | "./contracts/lifecycle/Migrations.sol",
32 | "./contracts/lifecycle/Pausable.sol",
33 | "./contracts/lifecycle/TokenDestructible.sol",
34 | "./contracts/math/Math.sol",
35 | "./contracts/math/SafeMath.sol",
36 | "./contracts/ownership/CanReclaimToken.sol",
37 | "./contracts/ownership/Claimable.sol",
38 | "./contracts/ownership/Contactable.sol",
39 | "./contracts/ownership/DelayedClaimable.sol",
40 | "./contracts/ownership/HasNoContracts.sol",
41 | "./contracts/ownership/HasNoEther.sol",
42 | "./contracts/ownership/HasNoTokens.sol",
43 | "./contracts/ownership/NoOwner.sol",
44 | "./contracts/ownership/Ownable.sol",
45 | "./contracts/payment/PullPayment.sol",
46 | "./contracts/token/BasicToken.sol",
47 | "./contracts/token/BurnableToken.sol",
48 | "./contracts/token/ERC20.sol",
49 | "./contracts/token/ERC20Basic.sol",
50 | "./contracts/token/LimitedTransferToken.sol",
51 | "./contracts/token/MintableToken.sol",
52 | "./contracts/token/PausableToken.sol",
53 | "./contracts/token/SafeERC20.sol",
54 | "./contracts/token/StandardToken.sol",
55 | "./contracts/token/TokenTimelock.sol",
56 | "./contracts/token/VestedToken.sol"
57 | ],
58 | "dependencies": {},
59 | "manifest_version": 1,
60 | "package_name": "zeppelin",
61 | "version": "1.3.0"
62 | }
--------------------------------------------------------------------------------
/installed_contracts/zeppelin/lock.json:
--------------------------------------------------------------------------------
1 | {"lockfile_version":"1","package_name":"zeppelin","meta":{"authors":["Manuel Araoz "],"license":"MIT","description":"Secure Smart Contract library for Solidity","keywords":["solidity","ethereum","smart","contracts","security","zeppelin"],"links":{}},"version":"1.3.0","contract_types":{"Bounty":{"contract_name":"Bounty","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"totalPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"researchers","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"}],"name":"claim","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdrawPayments","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"createTarget","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"payments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"claimed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"destroyAndSend","outputs":[],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"createdAddress","type":"address"}],"name":"TargetCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Target":{"contract_name":"Target","bytecode":"0x","abi":[{"constant":false,"inputs":[],"name":"checkInvariant","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"}]},"DayLimit":{"contract_name":"DayLimit","bytecode":"0x6060604052341561000f57600080fd5b60405160208061016b833981016040528080519150505b60008190556100406401000000006100c861004a82021704565b6002555b50610059565b600062015180425b0490505b90565b610103806100686000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166367eeba0c811460505780636b0c932d146072578063f059cf2b146094575b600080fd5b3415605a57600080fd5b606060b6565b60405190815260200160405180910390f35b3415607c57600080fd5b606060bc565b60405190815260200160405180910390f35b3415609e57600080fd5b606060c2565b60405190815260200160405180910390f35b60005481565b60025481565b60015481565b600062015180425b0490505b905600a165627a7a723058206c890288d74e7b298c9f814cd374a059687dc07a0ae486041d4eb0e73d573b050029","abi":[{"constant":true,"inputs":[],"name":"dailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lastDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"spentToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_limit","type":"uint256"}],"payable":false,"type":"constructor"}]},"ECRecovery":{"contract_name":"ECRecovery","bytecode":"0x6060604052341561000f57600080fd5b5b6101be8061001f6000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166319045a25811461003d575b600080fd5b610088600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506100b195505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008060008084516041146100c95760009350610188565b6020850151925060408501519150606085015160001a9050601b8160ff1610156100f157601b015b8060ff16601b1415801561010957508060ff16601c14155b156101175760009350610188565b6001868285856040518060005260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561017c57600080fd5b50506020604051035193505b5b505050929150505600a165627a7a723058203738288d3b51ea575ef915c00868fae4d079ca560c0d0fd0f9b7cc548d23db8c0029","abi":[{"constant":true,"inputs":[{"name":"hash","type":"bytes32"},{"name":"sig","type":"bytes"}],"name":"recover","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"}]},"MerkleProof":{"contract_name":"MerkleProof","bytecode":"0x6060604052341561000f57600080fd5b5b61015e8061001f6000396000f300606060405263ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663101f13e2811461003d575b600080fd5b61008a60046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505084359460200135935061009e92505050565b604051901515815260200160405180910390f35b600080600080602087518115156100b157fe5b06156100c05760009350610128565b5083905060205b8651811161012257808701519250828210156100fd57818360405191825260208201526040908101905180910390209150610119565b8282604051918252602082015260409081019051809103902091505b5b6020016100c7565b81861493505b50505093925050505600a165627a7a72305820bf88301d5cd1ecb6e2d200dbc786ddc7bdc21448cee48e926099fa4f104f065d0029","abi":[{"constant":true,"inputs":[{"name":"_proof","type":"bytes"},{"name":"_root","type":"bytes32"},{"name":"_leaf","type":"bytes32"}],"name":"verifyProof","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"}]},"ReentrancyGuard":{"contract_name":"ReentrancyGuard","bytecode":"0x60606040526000805460ff191690553415601857600080fd5b5b60368060266000396000f30060606040525b600080fd00a165627a7a723058208a88889789ce730045be8a404984662f86d41fffff1402fe3a8ea0555f02ed7e0029","abi":[]},"LimitBalance":{"contract_name":"LimitBalance","bytecode":"0x60606040523415600e57600080fd5b6040516020806100cb833981016040528080519150505b60008190555b505b60908061003b6000396000f300606060405263ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663a4d66daf8114603c575b600080fd5b3415604657600080fd5b604c605e565b60405190815260200160405180910390f35b600054815600a165627a7a72305820b69b7938d320534ce690d99786a268b32409a33889e83c06e5104374354d0ee00029","abi":[{"constant":true,"inputs":[],"name":"limit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_limit","type":"uint256"}],"payable":false,"type":"constructor"}]},"SampleCrowdsaleToken":{"contract_name":"SampleCrowdsaleToken","bytecode":"0x60606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610c40806100416000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100e857806306fdde031461010f578063095ea7b31461019a57806318160ddd146101d057806323b872dd146101f5578063313ce5671461023157806340c10f191461025a578063661884631461029057806370a08231146102c65780637d64bcb4146102f75780638da5cb5b1461031e57806395d89b411461034d578063a9059cbb146103d8578063d73dd6231461040e578063dd62ed3e14610444578063f2fde38b1461047b575b600080fd5b34156100f357600080fd5b6100fb61049c565b604051901515815260200160405180910390f35b341561011a57600080fd5b6101226104bd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101a557600080fd5b6100fb600160a060020a03600435166024356104f4565b604051901515815260200160405180910390f35b34156101db57600080fd5b6101e3610561565b60405190815260200160405180910390f35b341561020057600080fd5b6100fb600160a060020a0360043581169060243516604435610567565b604051901515815260200160405180910390f35b341561023c57600080fd5b610244610693565b60405160ff909116815260200160405180910390f35b341561026557600080fd5b6100fb600160a060020a0360043516602435610698565b604051901515815260200160405180910390f35b341561029b57600080fd5b6100fb600160a060020a03600435166024356107b9565b604051901515815260200160405180910390f35b34156102d157600080fd5b6101e3600160a060020a03600435166108b5565b60405190815260200160405180910390f35b341561030257600080fd5b6100fb6108d4565b604051901515815260200160405180910390f35b341561032957600080fd5b61033161095b565b604051600160a060020a03909116815260200160405180910390f35b341561035857600080fd5b61012261096a565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103e357600080fd5b6100fb600160a060020a03600435166024356109a1565b604051901515815260200160405180910390f35b341561041957600080fd5b6100fb600160a060020a0360043516602435610a78565b604051901515815260200160405180910390f35b341561044f57600080fd5b6101e3600160a060020a0360043581169060243516610b1d565b60405190815260200160405180910390f35b341561048657600080fd5b61049a600160a060020a0360043516610b4a565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052601681527f53616d706c652043726f776473616c6520546f6b656e00000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a038416151561057f57600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546105c5908463ffffffff610be316565b600160a060020a0380871660009081526001602052604080822093909355908616815220546105fa908463ffffffff610bfa16565b600160a060020a038516600090815260016020526040902055610623818463ffffffff610be316565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b601281565b60035460009033600160a060020a039081169116146106b657600080fd5b60035474010000000000000000000000000000000000000000900460ff16156106de57600080fd5b6000546106f1908363ffffffff610bfa16565b6000908155600160a060020a03841681526001602052604090205461071c908363ffffffff610bfa16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561081657600160a060020a03338116600090815260026020908152604080832093881683529290529081205561084d565b610826818463ffffffff610be316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146108f257600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b60408051908101604052600381527f5343540000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a03831615156109b857600080fd5b600160a060020a0333166000908152600160205260409020546109e1908363ffffffff610be316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610a16908363ffffffff610bfa16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610ab0908363ffffffff610bfa16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a03908116911614610b6557600080fd5b600160a060020a0381161515610b7a57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610bef57fe5b508082035b92915050565b600082820183811015610c0957fe5b8091505b50929150505600a165627a7a723058209658980abe5b6ef896acdca4a65e069845ffd50d665a7101da5791ed3afd03020029","abi":[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"SampleCrowdsale":{"contract_name":"SampleCrowdsale","bytecode":"0x60606040526007805460a060020a60ff0219169055341561001f57600080fd5b60405160c080612aa38339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519150505b825b5b825b878787855b4284101561007057600080fd5b8383101561007d57600080fd5b6000821161008a57600080fd5b600160a060020a038116151561009f57600080fd5b6100b46401000000006108df6101b082021704565b60008054600160a060020a0319908116600160a060020a0393841617909155600186905560028590556004849055600380549091169183169190911790555b5050505060008111151561010657600080fd5b60068190555b5060078054600160a060020a03191633600160a060020a03161790555b6000811161013657600080fd5b600354600160a060020a031661014a6101d6565b600160a060020a039091168152602001604051809103906000f080151561017057600080fd5b60098054600160a060020a031916600160a060020a039290921691909117905560088190555b50818311156101a457600080fd5b5b5050505050506101f6565b60006101ba6101e6565b604051809103906000f08015156101d057600080fd5b90505b90565b60405161065b806117c783390190565b604051610c8180611e2283390190565b6115c2806102056000396000f300606060405236156100d55763ffffffff60e060020a6000350416632c4e722e81146100e75780633197cbb61461010c578063355274ea1461013157806340193883146101565780634042b66f1461017b5780634bb278f3146101a0578063521eb273146101b557806378e97925146101e45780637d3d6522146102095780638d4e4083146102305780638da5cb5b14610257578063b5545a3c14610286578063ec8ac4d81461029b578063ecb70fb7146102b1578063f2fde38b146102d8578063fbfa77cf146102f9578063fc0c546a14610328575b6100e55b6100e233610357565b5b565b005b34156100f257600080fd5b6100fa61048c565b60405190815260200160405180910390f35b341561011757600080fd5b6100fa610492565b60405190815260200160405180910390f35b341561013c57600080fd5b6100fa610498565b60405190815260200160405180910390f35b341561016157600080fd5b6100fa61049e565b60405190815260200160405180910390f35b341561018657600080fd5b6100fa6104a4565b60405190815260200160405180910390f35b34156101ab57600080fd5b6100e56104aa565b005b34156101c057600080fd5b6101c861054b565b604051600160a060020a03909116815260200160405180910390f35b34156101ef57600080fd5b6100fa61055a565b60405190815260200160405180910390f35b341561021457600080fd5b61021c610560565b604051901515815260200160405180910390f35b341561023b57600080fd5b61021c61056c565b604051901515815260200160405180910390f35b341561026257600080fd5b6101c861057c565b604051600160a060020a03909116815260200160405180910390f35b341561029157600080fd5b6100e561058b565b005b6100e5600160a060020a0360043516610357565b005b34156102bc57600080fd5b61021c61061c565b604051901515815260200160405180910390f35b34156102e357600080fd5b6100e5600160a060020a036004351661063f565b005b341561030457600080fd5b6101c86106d8565b604051600160a060020a03909116815260200160405180910390f35b341561033357600080fd5b6101c86106e7565b604051600160a060020a03909116815260200160405180910390f35b600080600160a060020a038316151561036f57600080fd5b6103776106f6565b151561038257600080fd5b60045434925061039990839063ffffffff61072d16565b6005549091506103af908363ffffffff61075c16565b60055560008054600160a060020a0316906340c10f1990859084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561041457600080fd5b6102c65a03f1151561042557600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a3610486610776565b5b505050565b60045481565b60025481565b60065481565b60085481565b60055481565b60075433600160a060020a039081169116146104c557600080fd5b60075460a060020a900460ff16156104dc57600080fd5b6104e461061c565b15156104ef57600080fd5b6104f76107de565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a16007805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b600354600160a060020a031681565b60015481565b60085460055410155b90565b60075460a060020a900460ff1681565b600754600160a060020a031681565b60075460a060020a900460ff1615156105a357600080fd5b6105ab610560565b156105b557600080fd5b600954600160a060020a031663fa89401a3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561060557600080fd5b6102c65a03f1151561048657600080fd5b5050505b565b6006546005546000919010156106306108a2565b806106385750805b91505b5090565b60075433600160a060020a0390811691161461065a57600080fd5b600160a060020a038116151561066f57600080fd5b600754600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600954600160a060020a031681565b600054600160a060020a031681565b6000806006546107113460055461075c90919063ffffffff16565b1115905061071d6108ab565b80156106385750805b91505b5090565b6000828202831580610749575082848281151561074657fe5b04145b151561075157fe5b8091505b5092915050565b60008282018381101561075157fe5b8091505b5092915050565b600954600160a060020a031663f340fa01343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b15156107c657600080fd5b6125ee5a03f115156107d757600080fd5b505050505b565b6107e6610560565b1561084357600954600160a060020a03166343d726d66040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561082a57600080fd5b6102c65a03f1151561083b57600080fd5b505050610897565b600954600160a060020a0316638c52dc416040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561088257600080fd5b6102c65a03f1151561089357600080fd5b5050505b6100e26100e2565b5b565b60025442115b90565b600080600060015442101580156108c457506002544211155b9150503415158180156108d45750805b92505b505090565b5b565b60006108e9610905565b604051809103906000f08015156108ff57600080fd5b90505b90565b604051610c818061091683390190560060606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610c40806100416000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100e857806306fdde031461010f578063095ea7b31461019a57806318160ddd146101d057806323b872dd146101f5578063313ce5671461023157806340c10f191461025a578063661884631461029057806370a08231146102c65780637d64bcb4146102f75780638da5cb5b1461031e57806395d89b411461034d578063a9059cbb146103d8578063d73dd6231461040e578063dd62ed3e14610444578063f2fde38b1461047b575b600080fd5b34156100f357600080fd5b6100fb61049c565b604051901515815260200160405180910390f35b341561011a57600080fd5b6101226104bd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101a557600080fd5b6100fb600160a060020a03600435166024356104f4565b604051901515815260200160405180910390f35b34156101db57600080fd5b6101e3610561565b60405190815260200160405180910390f35b341561020057600080fd5b6100fb600160a060020a0360043581169060243516604435610567565b604051901515815260200160405180910390f35b341561023c57600080fd5b610244610693565b60405160ff909116815260200160405180910390f35b341561026557600080fd5b6100fb600160a060020a0360043516602435610698565b604051901515815260200160405180910390f35b341561029b57600080fd5b6100fb600160a060020a03600435166024356107b9565b604051901515815260200160405180910390f35b34156102d157600080fd5b6101e3600160a060020a03600435166108b5565b60405190815260200160405180910390f35b341561030257600080fd5b6100fb6108d4565b604051901515815260200160405180910390f35b341561032957600080fd5b61033161095b565b604051600160a060020a03909116815260200160405180910390f35b341561035857600080fd5b61012261096a565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103e357600080fd5b6100fb600160a060020a03600435166024356109a1565b604051901515815260200160405180910390f35b341561041957600080fd5b6100fb600160a060020a0360043516602435610a78565b604051901515815260200160405180910390f35b341561044f57600080fd5b6101e3600160a060020a0360043581169060243516610b1d565b60405190815260200160405180910390f35b341561048657600080fd5b61049a600160a060020a0360043516610b4a565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052601681527f53616d706c652043726f776473616c6520546f6b656e00000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a038416151561057f57600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546105c5908463ffffffff610be316565b600160a060020a0380871660009081526001602052604080822093909355908616815220546105fa908463ffffffff610bfa16565b600160a060020a038516600090815260016020526040902055610623818463ffffffff610be316565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b601281565b60035460009033600160a060020a039081169116146106b657600080fd5b60035474010000000000000000000000000000000000000000900460ff16156106de57600080fd5b6000546106f1908363ffffffff610bfa16565b6000908155600160a060020a03841681526001602052604090205461071c908363ffffffff610bfa16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561081657600160a060020a03338116600090815260026020908152604080832093881683529290529081205561084d565b610826818463ffffffff610be316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146108f257600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b60408051908101604052600381527f5343540000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a03831615156109b857600080fd5b600160a060020a0333166000908152600160205260409020546109e1908363ffffffff610be316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610a16908363ffffffff610bfa16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610ab0908363ffffffff610bfa16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a03908116911614610b6557600080fd5b600160a060020a0381161515610b7a57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610bef57fe5b508082035b92915050565b600082820183811015610c0957fe5b8091505b50929150505600a165627a7a723058209658980abe5b6ef896acdca4a65e069845ffd50d665a7101da5791ed3afd03020029a165627a7a723058209f246a429fd326743f36778af6c5c8399a21ab7383195141ff1fe26197ed109f00296060604052341561000f57600080fd5b60405160208061065b833981016040528080519150505b5b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a038116151561005857600080fd5b60028054600160a060020a031916600160a060020a038316178082556000919060a060020a60ff02191674010000000000000000000000000000000000000000835b02179055505b505b6105aa806100b16000396000f300606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166343d726d6811461009b578063521eb273146100b05780638c52dc41146100df5780638da5cb5b146100f4578063c19d93fb14610123578063cb13cddb1461015a578063f2fde38b1461018b578063f340fa01146101ac578063fa89401a146101c2575b600080fd5b34156100a657600080fd5b6100ae6101e3565b005b34156100bb57600080fd5b6100c36102b6565b604051600160a060020a03909116815260200160405180910390f35b34156100ea57600080fd5b6100ae6102c5565b005b34156100ff57600080fd5b6100c3610361565b604051600160a060020a03909116815260200160405180910390f35b341561012e57600080fd5b610136610370565b6040518082600281111561014657fe5b60ff16815260200191505060405180910390f35b341561016557600080fd5b610179600160a060020a0360043516610380565b60405190815260200160405180910390f35b341561019657600080fd5b6100ae600160a060020a0360043516610392565b005b6100ae600160a060020a036004351661042b565b005b34156101cd57600080fd5b6100ae600160a060020a03600435166104b2565b005b60005433600160a060020a039081169116146101fe57600080fd5b60005b6002805460a060020a900460ff169081111561021957fe5b1461022357600080fd5b60028054819074ff0000000000000000000000000000000000000000191660a060020a825b02179055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156102b257600080fd5b5b5b565b600254600160a060020a031681565b60005433600160a060020a039081169116146102e057600080fd5b60005b6002805460a060020a900460ff16908111156102fb57fe5b1461030557600080fd5b600280546001919074ff0000000000000000000000000000000000000000191660a060020a835b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a15b5b565b600054600160a060020a031681565b60025460a060020a900460ff1681565b60016020526000908152604090205481565b60005433600160a060020a039081169116146103ad57600080fd5b600160a060020a03811615156103c257600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a0390811691161461044657600080fd5b60005b6002805460a060020a900460ff169081111561046157fe5b1461046b57600080fd5b600160a060020a038116600090815260016020526040902054610494903463ffffffff61056416565b600160a060020a0382166000908152600160205260409020555b5b50565b600060015b6002805460a060020a900460ff16908111156104cf57fe5b146104d957600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f19350505050151561052257600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25b5050565b60008282018381101561057357fe5b8091505b50929150505600a165627a7a7230582003c9f36fbee00f417f341def39ddd971dd6f117a31fffcbc0ff74153557d91fd002960606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610c40806100416000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100e857806306fdde031461010f578063095ea7b31461019a57806318160ddd146101d057806323b872dd146101f5578063313ce5671461023157806340c10f191461025a578063661884631461029057806370a08231146102c65780637d64bcb4146102f75780638da5cb5b1461031e57806395d89b411461034d578063a9059cbb146103d8578063d73dd6231461040e578063dd62ed3e14610444578063f2fde38b1461047b575b600080fd5b34156100f357600080fd5b6100fb61049c565b604051901515815260200160405180910390f35b341561011a57600080fd5b6101226104bd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101a557600080fd5b6100fb600160a060020a03600435166024356104f4565b604051901515815260200160405180910390f35b34156101db57600080fd5b6101e3610561565b60405190815260200160405180910390f35b341561020057600080fd5b6100fb600160a060020a0360043581169060243516604435610567565b604051901515815260200160405180910390f35b341561023c57600080fd5b610244610693565b60405160ff909116815260200160405180910390f35b341561026557600080fd5b6100fb600160a060020a0360043516602435610698565b604051901515815260200160405180910390f35b341561029b57600080fd5b6100fb600160a060020a03600435166024356107b9565b604051901515815260200160405180910390f35b34156102d157600080fd5b6101e3600160a060020a03600435166108b5565b60405190815260200160405180910390f35b341561030257600080fd5b6100fb6108d4565b604051901515815260200160405180910390f35b341561032957600080fd5b61033161095b565b604051600160a060020a03909116815260200160405180910390f35b341561035857600080fd5b61012261096a565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103e357600080fd5b6100fb600160a060020a03600435166024356109a1565b604051901515815260200160405180910390f35b341561041957600080fd5b6100fb600160a060020a0360043516602435610a78565b604051901515815260200160405180910390f35b341561044f57600080fd5b6101e3600160a060020a0360043581169060243516610b1d565b60405190815260200160405180910390f35b341561048657600080fd5b61049a600160a060020a0360043516610b4a565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052601681527f53616d706c652043726f776473616c6520546f6b656e00000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a038416151561057f57600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546105c5908463ffffffff610be316565b600160a060020a0380871660009081526001602052604080822093909355908616815220546105fa908463ffffffff610bfa16565b600160a060020a038516600090815260016020526040902055610623818463ffffffff610be316565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b601281565b60035460009033600160a060020a039081169116146106b657600080fd5b60035474010000000000000000000000000000000000000000900460ff16156106de57600080fd5b6000546106f1908363ffffffff610bfa16565b6000908155600160a060020a03841681526001602052604090205461071c908363ffffffff610bfa16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561081657600160a060020a03338116600090815260026020908152604080832093881683529290529081205561084d565b610826818463ffffffff610be316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146108f257600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b60408051908101604052600381527f5343540000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a03831615156109b857600080fd5b600160a060020a0333166000908152600160205260409020546109e1908363ffffffff610be316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610a16908363ffffffff610bfa16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610ab0908363ffffffff610bfa16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a03908116911614610b6557600080fd5b600160a060020a0381161515610b7a57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610bef57fe5b508082035b92915050565b600082820183811015610c0957fe5b8091505b50929150505600a165627a7a723058209658980abe5b6ef896acdca4a65e069845ffd50d665a7101da5791ed3afd03020029","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"goal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_goal","type":"uint256"},{"name":"_cap","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]},"SimpleToken":{"contract_name":"SimpleToken","bytecode":"0x6060604052341561000f57600080fd5b5b69021e19e0c9bab24000006000818155600160a060020a0333168152600160205260409020555b5b610902806100476000396000f300606060405236156100b75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100bc578063095ea7b31461014757806318160ddd1461017d57806323b872dd146101a25780632ff2e9dc146101de578063313ce56714610203578063661884631461022c57806370a082311461026257806395d89b4114610293578063a9059cbb1461031e578063d73dd62314610354578063dd62ed3e1461038a575b600080fd5b34156100c757600080fd5b6100cf6103c1565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010c5780820151818401525b6020016100f3565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610169600160a060020a03600435166024356103f8565b604051901515815260200160405180910390f35b341561018857600080fd5b610190610465565b60405190815260200160405180910390f35b34156101ad57600080fd5b610169600160a060020a036004358116906024351660443561046b565b604051901515815260200160405180910390f35b34156101e957600080fd5b610190610597565b60405190815260200160405180910390f35b341561020e57600080fd5b6102166105a5565b60405160ff909116815260200160405180910390f35b341561023757600080fd5b610169600160a060020a03600435166024356105aa565b604051901515815260200160405180910390f35b341561026d57600080fd5b610190600160a060020a03600435166106a6565b60405190815260200160405180910390f35b341561029e57600080fd5b6100cf6106c5565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010c5780820151818401525b6020016100f3565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032957600080fd5b610169600160a060020a03600435166024356106fc565b604051901515815260200160405180910390f35b341561035f57600080fd5b610169600160a060020a03600435166024356107d3565b604051901515815260200160405180910390f35b341561039557600080fd5b610190600160a060020a0360043581169060243516610878565b60405190815260200160405180910390f35b60408051908101604052600b81527f53696d706c65546f6b656e000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a038416151561048357600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546104c9908463ffffffff6108a516565b600160a060020a0380871660009081526001602052604080822093909355908616815220546104fe908463ffffffff6108bc16565b600160a060020a038516600090815260016020526040902055610527818463ffffffff6108a516565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b69021e19e0c9bab240000081565b601281565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561060757600160a060020a03338116600090815260026020908152604080832093881683529290529081205561063e565b610617818463ffffffff6108a516565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60408051908101604052600381527f53494d0000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a038316151561071357600080fd5b600160a060020a03331660009081526001602052604090205461073c908363ffffffff6108a516565b600160a060020a033381166000908152600160205260408082209390935590851681522054610771908363ffffffff6108bc16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205461080b908363ffffffff6108bc16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b6000828211156108b157fe5b508082035b92915050565b6000828201838110156108cb57fe5b8091505b50929150505600a165627a7a723058209931cc9bede545d95130441b7d2c6102b5c413048d906e243d2baeae084eee4d0029","abi":[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"Math":{"contract_name":"Math","bytecode":"0x60606040523415600e57600080fd5b5b603680601c6000396000f30060606040525b600080fd00a165627a7a72305820b8899c9b2b5161622dd3db6537a052bdd2306f46e50f5662836ecdef0dd12a690029","abi":[]},"SafeMath":{"contract_name":"SafeMath","bytecode":"0x60606040523415600e57600080fd5b5b603680601c6000396000f30060606040525b600080fd00a165627a7a7230582097f6b5ecc0500486b668cba0db35d4271cae9c721508478c64da37d47b70dcb40029","abi":[]},"Destructible":{"contract_name":"Destructible","bytecode":"0x60606040525b5b60008054600160a060020a03191633600160a060020a03161790555b5b5b61020f806100336000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166383197ef0811461005e5780638da5cb5b14610073578063f2fde38b146100a2578063f5074f41146100c3575b600080fd5b341561006957600080fd5b6100716100e4565b005b341561007e57600080fd5b610086610110565b604051600160a060020a03909116815260200160405180910390f35b34156100ad57600080fd5b610071600160a060020a036004351661011f565b005b34156100ce57600080fd5b610071600160a060020a03600435166101b8565b005b60005433600160a060020a039081169116146100ff57600080fd5b600054600160a060020a0316ff5b5b565b600054600160a060020a031681565b60005433600160a060020a0390811691161461013a57600080fd5b600160a060020a038116151561014f57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a039081169116146101d357600080fd5b80600160a060020a0316ff5b5b505600a165627a7a72305820d81f192eb82b751d3df1faffd08e406901be2f041a72d23981c67a074786a4750029","abi":[{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"destroyAndSend","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Migrations":{"contract_name":"Migrations","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b6102b0806100316000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630900f01081146100695780638da5cb5b1461008a578063f2fde38b146100b9578063fbdbad3c146100da578063fdacd576146100ff575b600080fd5b341561007457600080fd5b610088600160a060020a0360043516610117565b005b341561009557600080fd5b61009d6101b1565b604051600160a060020a03909116815260200160405180910390f35b34156100c457600080fd5b610088600160a060020a03600435166101c0565b005b34156100e557600080fd5b6100ed610259565b60405190815260200160405180910390f35b341561010a57600080fd5b61008860043561025f565b005b6000805433600160a060020a0390811691161461013357600080fd5b81905080600160a060020a031663fdacd5766001546040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401600060405180830381600087803b151561019757600080fd5b6102c65a03f115156101a857600080fd5b5050505b5b5050565b600054600160a060020a031681565b60005433600160a060020a039081169116146101db57600080fd5b600160a060020a03811615156101f057600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60015481565b60005433600160a060020a0390811691161461027a57600080fd5b60018190555b5b505600a165627a7a72305820099c36a5c95df42a997285234bab79e8cb449523071711b2417b4a54c41225c90029","abi":[{"constant":false,"inputs":[{"name":"newAddress","type":"address"}],"name":"upgrade","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lastCompletedMigration","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"completed","type":"uint256"}],"name":"setCompleted","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Pausable":{"contract_name":"Pausable","bytecode":"0x60606040526000805460a060020a60ff02191690555b60008054600160a060020a03191633600160a060020a03161790555b5b6102f7806100416000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633f4ba83a81146100695780635c975abb1461007e5780638456cb59146100a55780638da5cb5b146100ba578063f2fde38b146100e9575b600080fd5b341561007457600080fd5b61007c61010a565b005b341561008957600080fd5b61009161018c565b604051901515815260200160405180910390f35b34156100b057600080fd5b61007c61019c565b005b34156100c557600080fd5b6100cd610223565b604051600160a060020a03909116815260200160405180910390f35b34156100f457600080fd5b61007c600160a060020a0360043516610232565b005b60005433600160a060020a0390811691161461012557600080fd5b60005460a060020a900460ff16151561013d57600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15b5b5b565b60005460a060020a900460ff1681565b60005433600160a060020a039081169116146101b757600080fd5b60005460a060020a900460ff16156101ce57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15b5b5b565b600054600160a060020a031681565b60005433600160a060020a0390811691161461024d57600080fd5b600160a060020a038116151561026257600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a72305820be7bb4e11b32d7807fd15f8563d708683a204873fa5ddfb5a14ff1b61f80f1710029","abi":[{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"TokenDestructible":{"contract_name":"TokenDestructible","bytecode":"0x60606040525b5b60008054600160a060020a03191633600160a060020a03161790555b5b5b610309806100336000396000f300606060405263ffffffff60e060020a6000350416638da5cb5b811461003a578063c6786e5a14610069578063f2fde38b146100ba575b600080fd5b341561004557600080fd5b61004d6100db565b604051600160a060020a03909116815260200160405180910390f35b341561007457600080fd5b6100b860046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506100ea95505050505050565b005b34156100c557600080fd5b6100b8600160a060020a0360043516610244565b005b600054600160a060020a031681565b600080548190819033600160a060020a0390811691161461010a57600080fd5b600092505b835183101561022f5783838151811061012457fe5b90602001906020020151915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561018757600080fd5b6102c65a03f1151561019857600080fd5b505050604051805160008054919350600160a060020a03808616935063a9059cbb92169084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561020857600080fd5b6102c65a03f1151561021957600080fd5b505050604051805150505b60019092019161010f565b600054600160a060020a0316ff5b5b50505050565b60005433600160a060020a0390811691161461025f57600080fd5b600160a060020a038116151561027457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a72305820a56d9c086f83cde55917629102cddd9d0c5348b0b33702297033c8ba5c5de9db0029","abi":[{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokens","type":"address[]"}],"name":"destroy","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"CanReclaimToken":{"contract_name":"CanReclaimToken","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b6102bb806100316000396000f300606060405263ffffffff60e060020a60003504166317ffc320811461003a5780638da5cb5b1461005b578063f2fde38b1461008a575b600080fd5b341561004557600080fd5b610059600160a060020a03600435166100ab565b005b341561006657600080fd5b61006e610161565b604051600160a060020a03909116815260200160405180910390f35b341561009557600080fd5b610059600160a060020a0360043516610170565b005b6000805433600160a060020a039081169116146100c757600080fd5b81600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561011e57600080fd5b6102c65a03f1151561012f57600080fd5b505050604051805160005490925061015b9150600160a060020a0384811691168363ffffffff61020916565b5b5b5050565b600054600160a060020a031681565b60005433600160a060020a0390811691161461018b57600080fd5b600160a060020a03811615156101a057600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561026657600080fd5b6102c65a03f1151561027757600080fd5b50505060405180519050151561028957fe5b5b5050505600a165627a7a72305820b7afc758694e3a2ac9f47c14382f77b68475f01b9a38219bb058a0cf171717000029","abi":[{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Claimable":{"contract_name":"Claimable","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610214806100316000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634e71e0c8811461005e5780638da5cb5b14610073578063e30c3978146100a2578063f2fde38b146100d1575b600080fd5b341561006957600080fd5b6100716100f2565b005b341561007e57600080fd5b610086610182565b604051600160a060020a03909116815260200160405180910390f35b34156100ad57600080fd5b610086610191565b604051600160a060020a03909116815260200160405180910390f35b34156100dc57600080fd5b610071600160a060020a03600435166101a0565b005b60015433600160a060020a0390811691161461010d57600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a038416179091551690555b5b565b600054600160a060020a031681565b600154600160a060020a031681565b60005433600160a060020a039081169116146101bb57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a7230582091ef39bfdd33d2858ba513f238457f2784da6a56d633ea1ee8c74b8f3b61942e0029","abi":[{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Contactable":{"contract_name":"Contactable","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b6103d2806100316000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166336f7ab5e811461005e5780638da5cb5b146100e9578063b967a52e14610118578063f2fde38b1461016b575b600080fd5b341561006957600080fd5b61007161018c565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156100ae5780820151818401525b602001610095565b50505050905090810190601f1680156100db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156100f457600080fd5b6100fc61022a565b604051600160a060020a03909116815260200160405180910390f35b341561012357600080fd5b61016960046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061023995505050505050565b005b341561017657600080fd5b610169600160a060020a036004351661026d565b005b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102225780601f106101f757610100808354040283529160200191610222565b820191906000526020600020905b81548152906001019060200180831161020557829003601f168201915b505050505081565b600054600160a060020a031681565b60005433600160a060020a0390811691161461025457600080fd5b6001818051610267929160200190610306565b505b5b50565b60005433600160a060020a0390811691161461028857600080fd5b600160a060020a038116151561029d57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061034757805160ff1916838001178555610374565b82800160010185558215610374579182015b82811115610374578251825591602001919060010190610359565b5b50610381929150610385565b5090565b6103a391905b80821115610381576000815560010161038b565b5090565b905600a165627a7a72305820f0bad196126ef3892a6d977b07501fd036b98c3b879eb85d20f8d69ff91c84600029","abi":[{"constant":true,"inputs":[],"name":"contactInformation","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"info","type":"string"}],"name":"setContactInformation","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"DelayedClaimable":{"contract_name":"DelayedClaimable","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610308806100316000396000f300606060405236156100805763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634e71e0c881146100855780638da5cb5b1461009a578063be9a6555146100c9578063c4590d3f146100ee578063e30c397814610109578063efbe1c1c14610138578063f2fde38b1461015d575b600080fd5b341561009057600080fd5b61009861017e565b005b34156100a557600080fd5b6100ad610232565b604051600160a060020a03909116815260200160405180910390f35b34156100d457600080fd5b6100dc610241565b60405190815260200160405180910390f35b34156100f957600080fd5b610098600435602435610247565b005b341561011457600080fd5b6100ad61027f565b604051600160a060020a03909116815260200160405180910390f35b341561014357600080fd5b6100dc61028e565b60405190815260200160405180910390f35b341561016857600080fd5b610098600160a060020a0360043516610294565b005b60015433600160a060020a0390811691161461019957600080fd5b60025443111580156101ad57506003544310155b15156101b857600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a0384161782559091169091556002555b5b565b600054600160a060020a031681565b60035481565b60005433600160a060020a0390811691161461026257600080fd5b8082111561026f57600080fd5b600281905560038290555b5b5050565b600154600160a060020a031681565b60025481565b60005433600160a060020a039081169116146102af57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a72305820f72a91b5fc7409be1e1ae55a97d292835ee988d4512ea2cc52b276a047d94d3a0029","abi":[{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"start","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_start","type":"uint256"},{"name":"_end","type":"uint256"}],"name":"setLimits","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"end","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"HasNoContracts":{"contract_name":"HasNoContracts","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b61023e806100316000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632aed7f3f81146100535780638da5cb5b14610074578063f2fde38b146100a3575b600080fd5b341561005e57600080fd5b610072600160a060020a03600435166100c4565b005b341561007f57600080fd5b61008761016a565b604051600160a060020a03909116815260200160405180910390f35b34156100ae57600080fd5b610072600160a060020a0360043516610179565b005b6000805433600160a060020a039081169116146100e057600080fd5b506000548190600160a060020a038083169163f2fde38b91166040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561015057600080fd5b6102c65a03f1151561016157600080fd5b5050505b5b5050565b600054600160a060020a031681565b60005433600160a060020a0390811691161461019457600080fd5b600160a060020a03811615156101a957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a7230582017377e522ff53222ab399a901939ebe2a66463aee51606105092dc199cfdb6bc0029","abi":[{"constant":false,"inputs":[{"name":"contractAddr","type":"address"}],"name":"reclaimContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"HasNoEther":{"contract_name":"HasNoEther","bytecode":"0x60606040525b5b60008054600160a060020a03191633600160a060020a03161790555b341561002d57600080fd5b5b5b6101f68061003e6000396000f300606060405236156100545763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416638da5cb5b81146100685780639f727c2714610097578063f2fde38b146100ac575b341561005f57600080fd5b6100665b5b565b005b341561007357600080fd5b61007b6100cd565b604051600160a060020a03909116815260200160405180910390f35b34156100a257600080fd5b6100666100dc565b005b34156100b757600080fd5b610066600160a060020a0360043516610131565b005b600054600160a060020a031681565b60005433600160a060020a039081169116146100f757600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561006357fe5b5b5b565b60005433600160a060020a0390811691161461014c57600080fd5b600160a060020a038116151561016157600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a7230582070e6c918d78faf899e134bca40c5a12586fc834fca2d5e46e70f883954941ad70029","abi":[{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"HasNoTokens":{"contract_name":"HasNoTokens","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610302806100316000396000f300606060405263ffffffff60e060020a60003504166317ffc32081146100455780638da5cb5b14610066578063c0ee0b8a14610095578063f2fde38b146100c6575b600080fd5b341561005057600080fd5b610064600160a060020a03600435166100e7565b005b341561007157600080fd5b61007961019d565b604051600160a060020a03909116815260200160405180910390f35b34156100a057600080fd5b61006460048035600160a060020a0316906024803591604435918201910135610040565b005b34156100d157600080fd5b610064600160a060020a03600435166101b7565b005b6000805433600160a060020a0390811691161461010357600080fd5b81600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561015a57600080fd5b6102c65a03f1151561016b57600080fd5b50505060405180516000549092506101979150600160a060020a0384811691168363ffffffff61025016565b5b5b5050565b600054600160a060020a031681565b600080fd5b50505050565b60005433600160a060020a039081169116146101d257600080fd5b600160a060020a03811615156101e757600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156102ad57600080fd5b6102c65a03f115156102be57600080fd5b5050506040518051905015156102d057fe5b5b5050505600a165627a7a72305820767d59fecad075dccef3a05536660235de1e0953bf393fbd17bc81d4cf6bba200029","abi":[{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"value_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"NoOwner":{"contract_name":"NoOwner","bytecode":"0x60606040525b5b60008054600160a060020a03191633600160a060020a03161790555b341561002d57600080fd5b5b5b6104458061003e6000396000f3006060604052361561005c5763ffffffff60e060020a60003504166317ffc32081146100705780632aed7f3f146100915780638da5cb5b146100b25780639f727c27146100e1578063c0ee0b8a146100f6578063f2fde38b14610127575b341561006757600080fd5b61006e5b5b565b005b341561007b57600080fd5b61006e600160a060020a0360043516610148565b005b341561009c57600080fd5b61006e600160a060020a03600435166101fe565b005b34156100bd57600080fd5b6100c561028b565b604051600160a060020a03909116815260200160405180910390f35b34156100ec57600080fd5b61006e61029a565b005b341561010157600080fd5b61006e60048035600160a060020a03169060248035916044359182019101356102ef565b005b341561013257600080fd5b61006e600160a060020a03600435166102fa565b005b6000805433600160a060020a0390811691161461016457600080fd5b81600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156101bb57600080fd5b6102c65a03f115156101cc57600080fd5b50505060405180516000549092506101f89150600160a060020a0384811691168363ffffffff61039316565b5b5b5050565b6000805433600160a060020a0390811691161461021a57600080fd5b506000548190600160a060020a038083169163f2fde38b911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561027157600080fd5b6102c65a03f1151561028257600080fd5b5050505b5b5050565b600054600160a060020a031681565b60005433600160a060020a039081169116146102b557600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561006b57fe5b5b5b565b600080fd5b50505050565b60005433600160a060020a0390811691161461031557600080fd5b600160a060020a038116151561032a57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156103f057600080fd5b6102c65a03f1151561040157600080fd5b50505060405180519050151561041357fe5b5b5050505600a165627a7a72305820f4793e0dc66ec77ebbb7faab835bc596ca15089a43308bd54114ec92874f7cff0029","abi":[{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"contractAddr","type":"address"}],"name":"reclaimContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"value_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Ownable":{"contract_name":"Ownable","bytecode":"0x6060604052341561000f57600080fd5b5b60008054600160a060020a03191633600160a060020a03161790555b5b61016c8061003c6000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416638da5cb5b8114610048578063f2fde38b14610077575b600080fd5b341561005357600080fd5b61005b610098565b604051600160a060020a03909116815260200160405180910390f35b341561008257600080fd5b610096600160a060020a03600435166100a7565b005b600054600160a060020a031681565b60005433600160a060020a039081169116146100c257600080fd5b600160a060020a03811615156100d757600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a72305820b3f1626dde2341fa87a16a8d14916c7185cd0bc711eb58c172d814ec669c80ee0029","abi":[{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"BasicToken":{"contract_name":"BasicToken","bytecode":"0x6060604052341561000f57600080fd5b5b6102388061001f6000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166318160ddd811461005357806370a0823114610078578063a9059cbb146100a9575b600080fd5b341561005e57600080fd5b6100666100df565b60405190815260200160405180910390f35b341561008357600080fd5b610066600160a060020a03600435166100e5565b60405190815260200160405180910390f35b34156100b457600080fd5b6100cb600160a060020a0360043516602435610104565b604051901515815260200160405180910390f35b60005481565b600160a060020a0381166000908152600160205260409020545b919050565b6000600160a060020a038316151561011b57600080fd5b600160a060020a033316600090815260016020526040902054610144908363ffffffff6101db16565b600160a060020a033381166000908152600160205260408082209390935590851681522054610179908363ffffffff6101f216565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b6000828211156101e757fe5b508082035b92915050565b60008282018381101561020157fe5b8091505b50929150505600a165627a7a7230582012c9c398953643ebfe8856386ecad730a70cd88a17ee4939d5b98e41a86f2d180029","abi":[{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"BurnableToken":{"contract_name":"BurnableToken","bytecode":"0x6060604052341561000f57600080fd5b5b6107b98061001f6000396000f300606060405236156100965763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b3811461009b57806318160ddd146100d157806323b872dd146100f657806342966c6814610132578063661884631461014a57806370a0823114610180578063a9059cbb146101b1578063d73dd623146101e7578063dd62ed3e1461021d575b600080fd5b34156100a657600080fd5b6100bd600160a060020a0360043516602435610254565b604051901515815260200160405180910390f35b34156100dc57600080fd5b6100e46102c1565b60405190815260200160405180910390f35b341561010157600080fd5b6100bd600160a060020a03600435811690602435166044356102c7565b604051901515815260200160405180910390f35b341561013d57600080fd5b6101486004356103f3565b005b341561015557600080fd5b6100bd600160a060020a0360043516602435610498565b604051901515815260200160405180910390f35b341561018b57600080fd5b6100e4600160a060020a0360043516610594565b60405190815260200160405180910390f35b34156101bc57600080fd5b6100bd600160a060020a03600435166024356105b3565b604051901515815260200160405180910390f35b34156101f257600080fd5b6100bd600160a060020a036004351660243561068a565b604051901515815260200160405180910390f35b341561022857600080fd5b6100e4600160a060020a036004358116906024351661072f565b60405190815260200160405180910390f35b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156102df57600080fd5b50600160a060020a03808516600081815260026020908152604080832033909516835293815283822054928252600190529190912054610325908463ffffffff61075c16565b600160a060020a03808716600090815260016020526040808220939093559086168152205461035a908463ffffffff61077316565b600160a060020a038516600090815260016020526040902055610383818463ffffffff61075c16565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600080821161040157600080fd5b5033600160a060020a038116600090815260016020526040902054610426908361075c565b600160a060020a03821660009081526001602052604081209190915554610453908363ffffffff61075c16565b600055600160a060020a0381167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405190815260200160405180910390a25b5050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156104f557600160a060020a03338116600090815260026020908152604080832093881683529290529081205561052c565b610505818463ffffffff61075c16565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b6000600160a060020a03831615156105ca57600080fd5b600160a060020a0333166000908152600160205260409020546105f3908363ffffffff61075c16565b600160a060020a033381166000908152600160205260408082209390935590851681522054610628908363ffffffff61077316565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546106c2908363ffffffff61077316565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60008282111561076857fe5b508082035b92915050565b60008282018381101561078257fe5b8091505b50929150505600a165627a7a72305820c8ae888d656dea70503c4d4d596d472f0f5f09e90811f197b33d8673da14491e0029","abi":[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"ERC20":{"contract_name":"ERC20","bytecode":"0x","abi":[{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"ERC20Basic":{"contract_name":"ERC20Basic","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"LimitedTransferToken":{"contract_name":"LimitedTransferToken","bytecode":"0x","abi":[{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"},{"name":"time","type":"uint64"}],"name":"transferableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"MintableToken":{"contract_name":"MintableToken","bytecode":"0x60606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610a6d806100416000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100c7578063095ea7b3146100ee57806318160ddd1461012457806323b872dd1461014957806340c10f191461018557806366188463146101bb57806370a08231146101f15780637d64bcb4146102225780638da5cb5b14610249578063a9059cbb14610278578063d73dd623146102ae578063dd62ed3e146102e4578063f2fde38b1461031b575b600080fd5b34156100d257600080fd5b6100da61033c565b604051901515815260200160405180910390f35b34156100f957600080fd5b6100da600160a060020a036004351660243561035d565b604051901515815260200160405180910390f35b341561012f57600080fd5b6101376103ca565b60405190815260200160405180910390f35b341561015457600080fd5b6100da600160a060020a03600435811690602435166044356103d0565b604051901515815260200160405180910390f35b341561019057600080fd5b6100da600160a060020a03600435166024356104fc565b604051901515815260200160405180910390f35b34156101c657600080fd5b6100da600160a060020a036004351660243561061d565b604051901515815260200160405180910390f35b34156101fc57600080fd5b610137600160a060020a0360043516610719565b60405190815260200160405180910390f35b341561022d57600080fd5b6100da610738565b604051901515815260200160405180910390f35b341561025457600080fd5b61025c6107bf565b604051600160a060020a03909116815260200160405180910390f35b341561028357600080fd5b6100da600160a060020a03600435166024356107ce565b604051901515815260200160405180910390f35b34156102b957600080fd5b6100da600160a060020a03600435166024356108a5565b604051901515815260200160405180910390f35b34156102ef57600080fd5b610137600160a060020a036004358116906024351661094a565b60405190815260200160405180910390f35b341561032657600080fd5b61033a600160a060020a0360043516610977565b005b60035474010000000000000000000000000000000000000000900460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156103e857600080fd5b50600160a060020a0380851660008181526002602090815260408083203390951683529381528382205492825260019052919091205461042e908463ffffffff610a1016565b600160a060020a038087166000908152600160205260408082209390935590861681522054610463908463ffffffff610a2716565b600160a060020a03851660009081526001602052604090205561048c818463ffffffff610a1016565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60035460009033600160a060020a0390811691161461051a57600080fd5b60035474010000000000000000000000000000000000000000900460ff161561054257600080fd5b600054610555908363ffffffff610a2716565b6000908155600160a060020a038416815260016020526040902054610580908363ffffffff610a2716565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561067a57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556106b1565b61068a818463ffffffff610a1016565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a0390811691161461075657600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b6000600160a060020a03831615156107e557600080fd5b600160a060020a03331660009081526001602052604090205461080e908363ffffffff610a1016565b600160a060020a033381166000908152600160205260408082209390935590851681522054610843908363ffffffff610a2716565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546108dd908363ffffffff610a2716565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461099257600080fd5b600160a060020a03811615156109a757600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610a1c57fe5b508082035b92915050565b600082820183811015610a3657fe5b8091505b50929150505600a165627a7a723058203bd32e77debf4781e7203d19c1b7ff116cb97c8ff79278744304dcd255487d020029","abi":[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"PausableToken":{"contract_name":"PausableToken","bytecode":"0x60606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610a72806100416000396000f300606060405236156100c25763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b381146100c757806318160ddd146100fd57806323b872dd146101225780633f4ba83a1461015e5780635c975abb14610173578063661884631461019a57806370a08231146101d05780638456cb59146102015780638da5cb5b14610216578063a9059cbb14610245578063d73dd6231461027b578063dd62ed3e146102b1578063f2fde38b146102e8575b600080fd5b34156100d257600080fd5b6100e9600160a060020a0360043516602435610309565b604051901515815260200160405180910390f35b341561010857600080fd5b610110610337565b60405190815260200160405180910390f35b341561012d57600080fd5b6100e9600160a060020a036004358116906024351660443561033d565b604051901515815260200160405180910390f35b341561016957600080fd5b61017161036d565b005b341561017e57600080fd5b6100e96103ef565b604051901515815260200160405180910390f35b34156101a557600080fd5b6100e9600160a060020a03600435166024356103ff565b604051901515815260200160405180910390f35b34156101db57600080fd5b610110600160a060020a036004351661042d565b60405190815260200160405180910390f35b341561020c57600080fd5b61017161044c565b005b341561022157600080fd5b6102296104d3565b604051600160a060020a03909116815260200160405180910390f35b341561025057600080fd5b6100e9600160a060020a03600435166024356104e2565b604051901515815260200160405180910390f35b341561028657600080fd5b6100e9600160a060020a0360043516602435610510565b604051901515815260200160405180910390f35b34156102bc57600080fd5b610110600160a060020a036004358116906024351661053e565b60405190815260200160405180910390f35b34156102f357600080fd5b610171600160a060020a036004351661056b565b005b60035460009060a060020a900460ff161561032357600080fd5b61032d8383610604565b90505b5b92915050565b60005481565b60035460009060a060020a900460ff161561035757600080fd5b610362848484610671565b90505b5b9392505050565b60035433600160a060020a0390811691161461038857600080fd5b60035460a060020a900460ff1615156103a057600080fd5b6003805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15b5b5b565b60035460a060020a900460ff1681565b60035460009060a060020a900460ff161561041957600080fd5b61032d838361079d565b90505b5b92915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035433600160a060020a0390811691161461046757600080fd5b60035460a060020a900460ff161561047e57600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15b5b5b565b600354600160a060020a031681565b60035460009060a060020a900460ff16156104fc57600080fd5b61032d8383610899565b90505b5b92915050565b60035460009060a060020a900460ff161561052a57600080fd5b61032d8383610970565b90505b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461058657600080fd5b600160a060020a038116151561059b57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600080600160a060020a038416151561068957600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546106cf908463ffffffff610a1516565b600160a060020a038087166000908152600160205260408082209390935590861681522054610704908463ffffffff610a2c16565b600160a060020a03851660009081526001602052604090205561072d818463ffffffff610a1516565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156107fa57600160a060020a033381166000908152600260209081526040808320938816835292905290812055610831565b61080a818463ffffffff610a1516565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b6000600160a060020a03831615156108b057600080fd5b600160a060020a0333166000908152600160205260409020546108d9908363ffffffff610a1516565b600160a060020a03338116600090815260016020526040808220939093559085168152205461090e908363ffffffff610a2c16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546109a8908363ffffffff610a2c16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600082821115610a2157fe5b508082035b92915050565b600082820183811015610a3b57fe5b8091505b50929150505600a165627a7a723058209c3aa43df8e1a1001c443c4183b06b4828d8268d34e0a2b776aa51d05e6dc57b0029","abi":[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"SafeERC20":{"contract_name":"SafeERC20","bytecode":"0x60606040523415600e57600080fd5b5b603680601c6000396000f30060606040525b600080fd00a165627a7a72305820a5c8a778d8321b7036364b8c31629716c5f64b25c934547cc7f85eb258eb27e20029","abi":[]},"StandardToken":{"contract_name":"StandardToken","bytecode":"0x6060604052341561000f57600080fd5b5b6106f18061001f6000396000f3006060604052361561008b5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b3811461009057806318160ddd146100c657806323b872dd146100eb578063661884631461012757806370a082311461015d578063a9059cbb1461018e578063d73dd623146101c4578063dd62ed3e146101fa575b600080fd5b341561009b57600080fd5b6100b2600160a060020a0360043516602435610231565b604051901515815260200160405180910390f35b34156100d157600080fd5b6100d961029e565b60405190815260200160405180910390f35b34156100f657600080fd5b6100b2600160a060020a03600435811690602435166044356102a4565b604051901515815260200160405180910390f35b341561013257600080fd5b6100b2600160a060020a03600435166024356103d0565b604051901515815260200160405180910390f35b341561016857600080fd5b6100d9600160a060020a03600435166104cc565b60405190815260200160405180910390f35b341561019957600080fd5b6100b2600160a060020a03600435166024356104eb565b604051901515815260200160405180910390f35b34156101cf57600080fd5b6100b2600160a060020a03600435166024356105c2565b604051901515815260200160405180910390f35b341561020557600080fd5b6100d9600160a060020a0360043581169060243516610667565b60405190815260200160405180910390f35b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156102bc57600080fd5b50600160a060020a03808516600081815260026020908152604080832033909516835293815283822054928252600190529190912054610302908463ffffffff61069416565b600160a060020a038087166000908152600160205260408082209390935590861681522054610337908463ffffffff6106ab16565b600160a060020a038516600090815260016020526040902055610360818463ffffffff61069416565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561042d57600160a060020a033381166000908152600260209081526040808320938816835292905290812055610464565b61043d818463ffffffff61069416565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b6000600160a060020a038316151561050257600080fd5b600160a060020a03331660009081526001602052604090205461052b908363ffffffff61069416565b600160a060020a033381166000908152600160205260408082209390935590851681522054610560908363ffffffff6106ab16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546105fa908363ffffffff6106ab16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b6000828211156106a057fe5b508082035b92915050565b6000828201838110156106ba57fe5b8091505b50929150505600a165627a7a723058204f6a8c528480157e04bac8b9f439b28416747b5afd3a4aca7babaf20d95c72e10029","abi":[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"TokenTimelock":{"contract_name":"TokenTimelock","bytecode":"0x6060604052341561000f57600080fd5b6040516060806103c18339810160405280805191906020018051919060200180519150505b426001604060020a0382161161004957600080fd5b60008054600160a060020a03808616600160a060020a031992831617909255600180546001604060020a038516740100000000000000000000000000000000000000000260a060020a60e060020a03199487169190931617929092161790555b5050505b610305806100bc6000396000f300606060405263ffffffff60e060020a60003504166338af3eed81146100505780634e71d92d1461007f57806386d1a69f14610094578063b91d4001146100a9578063fc0c546a146100d9575b600080fd5b341561005b57600080fd5b610063610108565b604051600160a060020a03909116815260200160405180910390f35b341561008a57600080fd5b610092610117565b005b341561009f57600080fd5b61009261013d565b005b34156100b457600080fd5b6100bc61021c565b60405167ffffffffffffffff909116815260200160405180910390f35b34156100e457600080fd5b610063610244565b604051600160a060020a03909116815260200160405180910390f35b600154600160a060020a031681565b60015433600160a060020a0390811691161461013257600080fd5b61013a61013d565b5b565b60015460009074010000000000000000000000000000000000000000900467ffffffffffffffff1642101561017157600080fd5b60008054600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156101cc57600080fd5b6102c65a03f115156101dd57600080fd5b5050506040518051915050600081116101f557600080fd5b60015460005461021891600160a060020a0391821691168363ffffffff61025316565b5b50565b60015474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b600054600160a060020a031681565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156102b057600080fd5b6102c65a03f115156102c157600080fd5b5050506040518051905015156102d357fe5b5b5050505600a165627a7a723058202d3d6dccd0b014b1e5401ab23a86e3117687ef9b231d4c58b36e3f63a2519fb70029","abi":[{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"release","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"releaseTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_beneficiary","type":"address"},{"name":"_releaseTime","type":"uint64"}],"payable":false,"type":"constructor"}]},"VestedToken":{"contract_name":"VestedToken","bytecode":"0x60606040526014600355341561001457600080fd5b5b6116b5806100246000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302a72a4c81146100e8578063095ea7b31461011957806318160ddd1461014f57806323b872dd146101745780632c71e60a146101b0578063600e85b71461022b57806366188463146102ac5780636c182e99146102e257806370a082311461031e5780639754a4d91461034f578063a9059cbb14610396578063d347c205146103cc578063d73dd6231461040a578063dd62ed3e14610440578063df3c211b14610477578063eb944e4c146104ab575b600080fd5b34156100f357600080fd5b610107600160a060020a03600435166104cf565b60405190815260200160405180910390f35b341561012457600080fd5b61013b600160a060020a03600435166024356104ee565b604051901515815260200160405180910390f35b341561015a57600080fd5b61010761055b565b60405190815260200160405180910390f35b341561017f57600080fd5b61013b600160a060020a0360043581169060243516604435610561565b604051901515815260200160405180910390f35b34156101bb57600080fd5b6101d2600160a060020a0360043516602435610593565b604051600160a060020a039097168752602087019590955267ffffffffffffffff93841660408088019190915292841660608701529216608085015290151560a084015290151560c083015260e0909101905180910390f35b341561023657600080fd5b61024d600160a060020a0360043516602435610619565b604051600160a060020a039098168852602088019690965260408088019590955267ffffffffffffffff9384166060880152918316608087015290911660a0850152151560c084015290151560e0830152610100909101905180910390f35b34156102b757600080fd5b61013b600160a060020a0360043516602435610766565b604051901515815260200160405180910390f35b34156102ed57600080fd5b610301600160a060020a0360043516610862565b60405167ffffffffffffffff909116815260200160405180910390f35b341561032957600080fd5b610107600160a060020a03600435166108f4565b60405190815260200160405180910390f35b341561035a57600080fd5b610394600160a060020a036004351660243567ffffffffffffffff6044358116906064358116906084351660a435151560c4351515610913565b005b34156103a157600080fd5b61013b600160a060020a0360043516602435610b9e565b604051901515815260200160405180910390f35b34156103d757600080fd5b610107600160a060020a036004351667ffffffffffffffff60243516610bce565b60405190815260200160405180910390f35b341561041557600080fd5b61013b600160a060020a0360043516602435610d1b565b604051901515815260200160405180910390f35b341561044b57600080fd5b610107600160a060020a0360043581169060243516610dc0565b60405190815260200160405180910390f35b341561048257600080fd5b610107600435602435604435606435608435610ded565b60405190815260200160405180910390f35b34156104b657600080fd5b610394600160a060020a0360043516602435610e45565b005b600160a060020a0381166000908152600460205260409020545b919050565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b6000838261056f8242610bce565b81111561057b57600080fd5b61058686868661126c565b92505b5b50509392505050565b6004602052816000526040600020818154811015156105ae57fe5b906000526020600020906003020160005b5080546001820154600290920154600160a060020a03909116935090915067ffffffffffffffff80821691680100000000000000008104821691608060020a8204169060ff60c060020a820481169160c860020a90041687565b6000806000806000806000806000600460008c600160a060020a0316600160a060020a031681526020019081526020016000208a81548110151561065957fe5b906000526020600020906003020160005b50805460018201546002830154600160a060020a039092169b50995067ffffffffffffffff608060020a820481169850808216975068010000000000000000820416955060ff60c060020a82048116955060c860020a90910416925090506107558160e060405190810160409081528254600160a060020a031682526001830154602083015260029092015467ffffffffffffffff8082169383019390935268010000000000000000810483166060830152608060020a8104909216608082015260ff60c060020a83048116151560a083015260c860020a909204909116151560c082015242611398565b96505b509295985092959890939650565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156107c357600160a060020a0333811660009081526002602090815260408083209388168352929052908120556107fa565b6107d3818463ffffffff6113e816565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a03811660009081526004602052604081205442915b818110156108ec57600160a060020a038416600090815260046020526040902080546108e19190839081106108af57fe5b906000526020600020906003020160005b506002015468010000000000000000900467ffffffffffffffff16846113ff565b92505b60010161087e565b5b5050919050565b600160a060020a0381166000908152600160205260409020545b919050565b60008567ffffffffffffffff168567ffffffffffffffff161015801561094d57508467ffffffffffffffff168467ffffffffffffffff1610155b151561095857600080fd5b600354610964896104cf565b1061096e57600080fd5b600160a060020a038816600090815260046020526040902080546001810161099683826115c1565b916000526020600020906003020160005b60e060405190810160405280876109bf5760006109c1565b335b600160a060020a03168152602081018c905267ffffffffffffffff808b16604083015289811660608301528b16608082015287151560a082015286151560c0909101529190508151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201518160010155604082015160028201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560608201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a082015160028201805491151560c060020a0278ff0000000000000000000000000000000000000000000000001990921691909117905560c08201516002909101805491151560c860020a0279ff0000000000000000000000000000000000000000000000000019909216919091179055509050610b418888610b9e565b5087600160a060020a031633600160a060020a03167ff9565aecd648a0466ffb964a79eeccdf1120ad6276189c687a6e9fe73984d9bb896001850360405191825260208201526040908101905180910390a35b5050505050505050565b60003382610bac8242610bce565b811115610bb857600080fd5b610bc2858561142e565b92505b5b505092915050565b6000806000806000610bdf876104cf565b9350831515610bf957610bf28787611505565b9450610d11565b60009250600091505b83821015610ce757600160a060020a03871660009081526004602052604090208054610cd9918591610cd4919086908110610c3957fe5b906000526020600020906003020160005b5060e060405190810160409081528254600160a060020a031682526001830154602083015260029092015467ffffffffffffffff8082169383019390935268010000000000000000810483166060830152608060020a8104909216608082015260ff60c060020a83048116151560a083015260c860020a909204909116151560c082015289611519565b611542565b92505b600190910190610c02565b610cf9610cf3886108f4565b846113e8565b9050610d0e81610d098989611505565b61155c565b94505b5050505092915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610d53908363ffffffff61154216565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60008083861015610e015760009150610e3b565b828610610e1057869150610e3b565b610e35610e2688610e2189896113e8565b611576565b610e3085886113e8565b6115a5565b90508091505b5095945050505050565b600160a060020a038216600090815260046020526040812080548291829185908110610e6d57fe5b906000526020600020906003020160005b50600281015490935060c060020a900460ff161515610e9c57600080fd5b825433600160a060020a03908116911614610eb657600080fd5b600283015460c860020a900460ff16610ecf5733610ed3565b61dead5b9150610f628360e060405190810160409081528254600160a060020a031682526001830154602083015260029092015467ffffffffffffffff8082169383019390935268010000000000000000810483166060830152608060020a8104909216608082015260ff60c060020a83048116151560a083015260c860020a909204909116151560c082015242611519565b600160a060020a038616600090815260046020526040902080549192509085908110610f8a57fe5b906000526020600020906003020160005b50805473ffffffffffffffffffffffffffffffffffffffff19168155600060018083018290556002909201805479ffffffffffffffffffffffffffffffffffffffffffffffffffff19169055600160a060020a038716815260046020526040902080549091611010919063ffffffff6113e816565b8154811061101a57fe5b906000526020600020906003020160005b50600160a060020a038616600090815260046020526040902080548690811061105057fe5b906000526020600020906003020160005b508154815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03918216178255600180840154908301556002928301805493909201805467ffffffffffffffff191667ffffffffffffffff94851617808255835468010000000000000000908190048616026fffffffffffffffff000000000000000019909116178082558354608060020a9081900490951690940277ffffffffffffffff000000000000000000000000000000001990941693909317808455825460ff60c060020a918290048116151590910278ff0000000000000000000000000000000000000000000000001990921691909117808555925460c860020a9081900490911615150279ff00000000000000000000000000000000000000000000000000199092169190911790915585166000908152600460205260409020805460001901906111af90826115c1565b50600160a060020a0382166000908152600160205260409020546111d9908263ffffffff61154216565b600160a060020a03808416600090815260016020526040808220939093559087168152205461120e908263ffffffff6113e816565b600160a060020a038087166000818152600160205260409081902093909355908416917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a35b5050505050565b600080600160a060020a038416151561128457600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546112ca908463ffffffff6113e816565b600160a060020a0380871660009081526001602052604080822093909355908616815220546112ff908463ffffffff61154216565b600160a060020a038516600090815260016020526040902055611328818463ffffffff6113e816565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60006113df83602001518367ffffffffffffffff16856080015167ffffffffffffffff16866040015167ffffffffffffffff16876060015167ffffffffffffffff16610ded565b90505b92915050565b6000828211156113f457fe5b508082035b92915050565b60008167ffffffffffffffff168367ffffffffffffffff16101561142357816113df565b825b90505b92915050565b6000600160a060020a038316151561144557600080fd5b600160a060020a03331660009081526001602052604090205461146e908363ffffffff6113e816565b600160a060020a0333811660009081526001602052604080822093909355908516815220546114a3908363ffffffff61154216565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b60006113df836108f4565b90505b92915050565b60006113df6115288484611398565b84602001519063ffffffff6113e816565b90505b92915050565b60008282018381101561155157fe5b8091505b5092915050565b600081831061142357816113df565b825b90505b92915050565b6000828202831580611592575082848281151561158f57fe5b04145b151561155157fe5b8091505b5092915050565b60008082848115156115b357fe5b0490508091505b5092915050565b8154818355818115116115ed576003028160030283600052602060002091820191016115ed9190611625565b5b505050565b8154818355818115116115ed576003028160030283600052602060002091820191016115ed9190611625565b5b505050565b61168691905b8082111561168257805473ffffffffffffffffffffffffffffffffffffffff191681556000600182015560028101805479ffffffffffffffffffffffffffffffffffffffffffffffffffff1916905560030161162b565b5090565b905600a165627a7a72305820c3bc2f77ee48d32056260cb35236d3395ee6d0875c39aec752d35f8ca1d268ea0029","abi":[{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"tokenGrantsCount","outputs":[{"name":"index","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"grants","outputs":[{"name":"granter","type":"address"},{"name":"value","type":"uint256"},{"name":"cliff","type":"uint64"},{"name":"vesting","type":"uint64"},{"name":"start","type":"uint64"},{"name":"revokable","type":"bool"},{"name":"burnsOnRevoke","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"},{"name":"_grantId","type":"uint256"}],"name":"tokenGrant","outputs":[{"name":"granter","type":"address"},{"name":"value","type":"uint256"},{"name":"vested","type":"uint256"},{"name":"start","type":"uint64"},{"name":"cliff","type":"uint64"},{"name":"vesting","type":"uint64"},{"name":"revokable","type":"bool"},{"name":"burnsOnRevoke","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"}],"name":"lastTokenIsTransferableDate","outputs":[{"name":"date","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_start","type":"uint64"},{"name":"_cliff","type":"uint64"},{"name":"_vesting","type":"uint64"},{"name":"_revokable","type":"bool"},{"name":"_burnsOnRevoke","type":"bool"}],"name":"grantVestedTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"},{"name":"time","type":"uint64"}],"name":"transferableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"},{"name":"start","type":"uint256"},{"name":"cliff","type":"uint256"},{"name":"vesting","type":"uint256"}],"name":"calculateVestedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_grantId","type":"uint256"}],"name":"revokeTokenGrant","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"grantId","type":"uint256"}],"name":"NewTokenGrant","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"PullPayment":{"contract_name":"PullPayment","bytecode":"0x6060604052341561000f57600080fd5b5b6101e68061001f6000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416625b448781146100525780636103d70b14610077578063e2982c211461008c575b600080fd5b341561005d57600080fd5b6100656100ca565b60405190815260200160405180910390f35b341561008257600080fd5b61008a6100d0565b005b341561009757600080fd5b61006573ffffffffffffffffffffffffffffffffffffffff60043516610191565b60405190815260200160405180910390f35b60015481565b3373ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090205480151561010357600080fd5b73ffffffffffffffffffffffffffffffffffffffff3016318190101561012857600080fd5b60015461013b908263ffffffff6101a316565b60015573ffffffffffffffffffffffffffffffffffffffff82166000818152602081905260408082209190915582156108fc0290839051600060405180830381858888f19350505050151561018c57fe5b5b5050565b60006020819052908152604090205481565b6000828211156101af57fe5b508082035b929150505600a165627a7a723058206fbb605a926c23d36f1098ae86f7e3e4e4d6110ef62977ed33fdec0a20c9c1420029","abi":[{"constant":true,"inputs":[],"name":"totalPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdrawPayments","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"payments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"}]},"CappedCrowdsale":{"contract_name":"CappedCrowdsale","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_cap","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]},"Crowdsale":{"contract_name":"Crowdsale","bytecode":"0x6060604052341561000f57600080fd5b604051608080611ae1833981016040528080519190602001805191906020018051919060200180519150505b4284101561004857600080fd5b8383101561005557600080fd5b6000821161006257600080fd5b600160a060020a038116151561007757600080fd5b61008c64010000000061040a6100d482021704565b60008054600160a060020a0319908116600160a060020a0393841617909155600186905560028590556004849055600380549091169183169190911790555b5050505061010a565b60006100de6100fa565b604051809103906000f08015156100f457600080fd5b90505b90565b604051610aae8061103383390190565b610f1a806101196000396000f3006060604052361561008b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632c4e722e811461009d5780633197cbb6146100c25780634042b66f146100e7578063521eb2731461010c57806378e979251461013b578063ec8ac4d814610160578063ecb70fb714610176578063fc0c546a1461019d575b61009b5b610098336101cc565b5b565b005b34156100a857600080fd5b6100b061031a565b60405190815260200160405180910390f35b34156100cd57600080fd5b6100b0610320565b60405190815260200160405180910390f35b34156100f257600080fd5b6100b0610326565b60405190815260200160405180910390f35b341561011757600080fd5b61011f61032c565b604051600160a060020a03909116815260200160405180910390f35b341561014657600080fd5b6100b061033b565b60405190815260200160405180910390f35b61009b600160a060020a03600435166101cc565b005b341561018157600080fd5b610189610341565b604051901515815260200160405180910390f35b34156101a857600080fd5b61011f61034a565b604051600160a060020a03909116815260200160405180910390f35b600080600160a060020a03831615156101e457600080fd5b6101ec610359565b15156101f757600080fd5b60045434925061020e90839063ffffffff61038a16565b600554909150610224908363ffffffff6103b916565b60055560008054600160a060020a0316906340c10f199085908490604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156102a257600080fd5b6102c65a03f115156102b357600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a36103146103d3565b5b505050565b60045481565b60025481565b60055481565b600354600160a060020a031681565b60015481565b60025442115b90565b600054600160a060020a031681565b6000806000600154421015801561037257506002544211155b9150503415158180156103825750805b92505b505090565b60008282028315806103a657508284828115156103a357fe5b04145b15156103ae57fe5b8091505b5092915050565b6000828201838110156103ae57fe5b8091505b5092915050565b600354600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561009857600080fd5b5b565b6000610414610430565b604051809103906000f080151561042a57600080fd5b90505b90565b604051610aae8061044183390190560060606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610a6d806100416000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100c7578063095ea7b3146100ee57806318160ddd1461012457806323b872dd1461014957806340c10f191461018557806366188463146101bb57806370a08231146101f15780637d64bcb4146102225780638da5cb5b14610249578063a9059cbb14610278578063d73dd623146102ae578063dd62ed3e146102e4578063f2fde38b1461031b575b600080fd5b34156100d257600080fd5b6100da61033c565b604051901515815260200160405180910390f35b34156100f957600080fd5b6100da600160a060020a036004351660243561035d565b604051901515815260200160405180910390f35b341561012f57600080fd5b6101376103ca565b60405190815260200160405180910390f35b341561015457600080fd5b6100da600160a060020a03600435811690602435166044356103d0565b604051901515815260200160405180910390f35b341561019057600080fd5b6100da600160a060020a03600435166024356104fc565b604051901515815260200160405180910390f35b34156101c657600080fd5b6100da600160a060020a036004351660243561061d565b604051901515815260200160405180910390f35b34156101fc57600080fd5b610137600160a060020a0360043516610719565b60405190815260200160405180910390f35b341561022d57600080fd5b6100da610738565b604051901515815260200160405180910390f35b341561025457600080fd5b61025c6107bf565b604051600160a060020a03909116815260200160405180910390f35b341561028357600080fd5b6100da600160a060020a03600435166024356107ce565b604051901515815260200160405180910390f35b34156102b957600080fd5b6100da600160a060020a03600435166024356108a5565b604051901515815260200160405180910390f35b34156102ef57600080fd5b610137600160a060020a036004358116906024351661094a565b60405190815260200160405180910390f35b341561032657600080fd5b61033a600160a060020a0360043516610977565b005b60035474010000000000000000000000000000000000000000900460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156103e857600080fd5b50600160a060020a0380851660008181526002602090815260408083203390951683529381528382205492825260019052919091205461042e908463ffffffff610a1016565b600160a060020a038087166000908152600160205260408082209390935590861681522054610463908463ffffffff610a2716565b600160a060020a03851660009081526001602052604090205561048c818463ffffffff610a1016565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60035460009033600160a060020a0390811691161461051a57600080fd5b60035474010000000000000000000000000000000000000000900460ff161561054257600080fd5b600054610555908363ffffffff610a2716565b6000908155600160a060020a038416815260016020526040902054610580908363ffffffff610a2716565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561067a57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556106b1565b61068a818463ffffffff610a1016565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a0390811691161461075657600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b6000600160a060020a03831615156107e557600080fd5b600160a060020a03331660009081526001602052604090205461080e908363ffffffff610a1016565b600160a060020a033381166000908152600160205260408082209390935590851681522054610843908363ffffffff610a2716565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546108dd908363ffffffff610a2716565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461099257600080fd5b600160a060020a03811615156109a757600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610a1c57fe5b508082035b92915050565b600082820183811015610a3657fe5b8091505b50929150505600a165627a7a723058203bd32e77debf4781e7203d19c1b7ff116cb97c8ff79278744304dcd255487d020029a165627a7a7230582018dab90c9dce4733c40cf376e466c77509d49019c7d01f0d2ac8968646e45e0e002960606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610a6d806100416000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100c7578063095ea7b3146100ee57806318160ddd1461012457806323b872dd1461014957806340c10f191461018557806366188463146101bb57806370a08231146101f15780637d64bcb4146102225780638da5cb5b14610249578063a9059cbb14610278578063d73dd623146102ae578063dd62ed3e146102e4578063f2fde38b1461031b575b600080fd5b34156100d257600080fd5b6100da61033c565b604051901515815260200160405180910390f35b34156100f957600080fd5b6100da600160a060020a036004351660243561035d565b604051901515815260200160405180910390f35b341561012f57600080fd5b6101376103ca565b60405190815260200160405180910390f35b341561015457600080fd5b6100da600160a060020a03600435811690602435166044356103d0565b604051901515815260200160405180910390f35b341561019057600080fd5b6100da600160a060020a03600435166024356104fc565b604051901515815260200160405180910390f35b34156101c657600080fd5b6100da600160a060020a036004351660243561061d565b604051901515815260200160405180910390f35b34156101fc57600080fd5b610137600160a060020a0360043516610719565b60405190815260200160405180910390f35b341561022d57600080fd5b6100da610738565b604051901515815260200160405180910390f35b341561025457600080fd5b61025c6107bf565b604051600160a060020a03909116815260200160405180910390f35b341561028357600080fd5b6100da600160a060020a03600435166024356107ce565b604051901515815260200160405180910390f35b34156102b957600080fd5b6100da600160a060020a03600435166024356108a5565b604051901515815260200160405180910390f35b34156102ef57600080fd5b610137600160a060020a036004358116906024351661094a565b60405190815260200160405180910390f35b341561032657600080fd5b61033a600160a060020a0360043516610977565b005b60035474010000000000000000000000000000000000000000900460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156103e857600080fd5b50600160a060020a0380851660008181526002602090815260408083203390951683529381528382205492825260019052919091205461042e908463ffffffff610a1016565b600160a060020a038087166000908152600160205260408082209390935590861681522054610463908463ffffffff610a2716565b600160a060020a03851660009081526001602052604090205561048c818463ffffffff610a1016565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60035460009033600160a060020a0390811691161461051a57600080fd5b60035474010000000000000000000000000000000000000000900460ff161561054257600080fd5b600054610555908363ffffffff610a2716565b6000908155600160a060020a038416815260016020526040902054610580908363ffffffff610a2716565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561067a57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556106b1565b61068a818463ffffffff610a1016565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a0390811691161461075657600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b6000600160a060020a03831615156107e557600080fd5b600160a060020a03331660009081526001602052604090205461080e908363ffffffff610a1016565b600160a060020a033381166000908152600160205260408082209390935590851681522054610843908363ffffffff610a2716565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546108dd908363ffffffff610a2716565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461099257600080fd5b600160a060020a03811615156109a757600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610a1c57fe5b508082035b92915050565b600082820183811015610a3657fe5b8091505b50929150505600a165627a7a723058203bd32e77debf4781e7203d19c1b7ff116cb97c8ff79278744304dcd255487d020029","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]},"FinalizableCrowdsale":{"contract_name":"FinalizableCrowdsale","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]},"RefundVault":{"contract_name":"RefundVault","bytecode":"0x6060604052341561000f57600080fd5b60405160208061065b833981016040528080519150505b5b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a038116151561005857600080fd5b60028054600160a060020a031916600160a060020a038316178082556000919060a060020a60ff02191674010000000000000000000000000000000000000000835b02179055505b505b6105aa806100b16000396000f300606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166343d726d6811461009b578063521eb273146100b05780638c52dc41146100df5780638da5cb5b146100f4578063c19d93fb14610123578063cb13cddb1461015a578063f2fde38b1461018b578063f340fa01146101ac578063fa89401a146101c2575b600080fd5b34156100a657600080fd5b6100ae6101e3565b005b34156100bb57600080fd5b6100c36102b6565b604051600160a060020a03909116815260200160405180910390f35b34156100ea57600080fd5b6100ae6102c5565b005b34156100ff57600080fd5b6100c3610361565b604051600160a060020a03909116815260200160405180910390f35b341561012e57600080fd5b610136610370565b6040518082600281111561014657fe5b60ff16815260200191505060405180910390f35b341561016557600080fd5b610179600160a060020a0360043516610380565b60405190815260200160405180910390f35b341561019657600080fd5b6100ae600160a060020a0360043516610392565b005b6100ae600160a060020a036004351661042b565b005b34156101cd57600080fd5b6100ae600160a060020a03600435166104b2565b005b60005433600160a060020a039081169116146101fe57600080fd5b60005b6002805460a060020a900460ff169081111561021957fe5b1461022357600080fd5b60028054819074ff0000000000000000000000000000000000000000191660a060020a825b02179055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156102b257600080fd5b5b5b565b600254600160a060020a031681565b60005433600160a060020a039081169116146102e057600080fd5b60005b6002805460a060020a900460ff16908111156102fb57fe5b1461030557600080fd5b600280546001919074ff0000000000000000000000000000000000000000191660a060020a835b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a15b5b565b600054600160a060020a031681565b60025460a060020a900460ff1681565b60016020526000908152604090205481565b60005433600160a060020a039081169116146103ad57600080fd5b600160a060020a03811615156103c257600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a0390811691161461044657600080fd5b60005b6002805460a060020a900460ff169081111561046157fe5b1461046b57600080fd5b600160a060020a038116600090815260016020526040902054610494903463ffffffff61056416565b600160a060020a0382166000908152600160205260409020555b5b50565b600060015b6002805460a060020a900460ff16908111156104cf57fe5b146104d957600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f19350505050151561052257600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25b5050565b60008282018381101561057357fe5b8091505b50929150505600a165627a7a7230582003c9f36fbee00f417f341def39ddd971dd6f117a31fffcbc0ff74153557d91fd0029","abi":[{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"enableRefunds","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"deposited","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"}],"name":"deposit","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"}],"name":"refund","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_wallet","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[],"name":"Closed","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"RefundableCrowdsale":{"contract_name":"RefundableCrowdsale","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"goal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_goal","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]}},"deployments":{},"sources":{"./contracts/Bounty.sol":"ipfs://QmRiCydHy8w3p7ie52bMzpmWA7GM6xDe1msiPfHGobT2g7","./contracts/DayLimit.sol":"ipfs://QmPjDKsBGpVHvDkTn9e48BRFqgaWXaZ7qG6oxhXQ6Spu1W","./contracts/ECRecovery.sol":"ipfs://QmYtjCA79ihdm3Kpb68zUT9tgQpBE6DsBYJF5j6yoU3MCf","./contracts/LimitBalance.sol":"ipfs://QmXQYms1cA4TFqQeFBVBKW29YeB5ZNTh1GF8bbwwFrEisg","./contracts/MerkleProof.sol":"ipfs://QmTKnQjjzvWozgEzg5EDP3SbXQrXEaj5DWXQfFjTK4yHjx","./contracts/ReentrancyGuard.sol":"ipfs://QmcHLaefT7wigDGRB6Q5DK5DBFjZTccp6rQHB13ZAkjeNK","./contracts/crowdsale/CappedCrowdsale.sol":"ipfs://QmbmLMWU5xke4EkRNTMmTFEpxFV2PZo8DqwAHFgKWNm2ig","./contracts/crowdsale/Crowdsale.sol":"ipfs://QmWrBYUiP8K5yopAmwY7Cmv3aLTXyxR8SrgD4ZNs7edf2u","./contracts/crowdsale/FinalizableCrowdsale.sol":"ipfs://QmassyvMwRpUgboKW64ATvcWreGKL7mS4G3cBsa1e5ZrZp","./contracts/crowdsale/RefundableCrowdsale.sol":"ipfs://QmPbCTwPv1DJ5mEksGwnNGFmuCRgJq7Cv8bofrMpKAmgqt","./contracts/crowdsale/RefundVault.sol":"ipfs://QmXFWnSyuyatfyvtxLpxxqnXtj22V4ZSz5raD1RMkphY9j","./contracts/examples/SampleCrowdsale.sol":"ipfs://QmfRuKTv1EgbqzVnVF69NqCWvbCnaqv7Pv6uLhKBdS35sA","./contracts/examples/SimpleToken.sol":"ipfs://QmRF8KRcEpBeLZm1pXppK58K2cBdGuJqqawaYU8ruUPTCx","./contracts/lifecycle/Destructible.sol":"ipfs://QmeCpEXsb2ei4NPCuyxzDRZd2mnmVcvUGxJDqD2VpVs2BV","./contracts/lifecycle/Migrations.sol":"ipfs://QmRYsztCjqfqSTFrgsGziiqVo8R9ta4HHo8CEDsfxbuEeP","./contracts/lifecycle/Pausable.sol":"ipfs://QmNpxBtAvm2uWZ6QKnXtftPRs7qBqspfBBAFMy8zBmFLcr","./contracts/lifecycle/TokenDestructible.sol":"ipfs://QmQR68UDarf2c6nKtfe9yPxR5yad6pWgW9akHSgELPnMXm","./contracts/math/Math.sol":"ipfs://QmW92S9h4kwXpMs8q5AR5fkkbiKG4228oTAXSYYo5T3A2C","./contracts/math/SafeMath.sol":"ipfs://QmWSLu5rYhKC3hu2vHxmgm999kFfiH9o5iZYZc2j7ZUZNX","./contracts/ownership/CanReclaimToken.sol":"ipfs://QmT9WiRVsCHVmTUnrj36C9HYbMXCtwwLZrJo5isA9bmvEk","./contracts/ownership/Claimable.sol":"ipfs://QmUMkFKoP4e4XVrfAJhNUJTKd9V63fNNPHiYgFs1P8C4AJ","./contracts/ownership/Contactable.sol":"ipfs://QmeYkxqQh378Yku9o9Ct9E4yzJFPCCwCf9z2wFRqTHugte","./contracts/ownership/DelayedClaimable.sol":"ipfs://QmXN1cu7Ew8jnUdwvTdTgN3BgptSB3SDEZmKmDWMmMtXMd","./contracts/ownership/HasNoContracts.sol":"ipfs://QmZ1pyaFkJE3JJy3u7dmeWDRuQKsJ9FGbMt9Rxw7Tze4Mt","./contracts/ownership/HasNoEther.sol":"ipfs://Qmd6SKzwWqnttCffjb6t895jgHY9LnGyP76qWGJ3HY5QzP","./contracts/ownership/HasNoTokens.sol":"ipfs://QmWaLfpsneTADa8ht6Pbeqfaqdj6UbcT6X1pbsCjNH34mV","./contracts/ownership/NoOwner.sol":"ipfs://QmeW92BEe8WJFi8vm19284QY8xh5Kn3Fe2BGAdo91YBG7X","./contracts/ownership/Ownable.sol":"ipfs://QmYP2is6EYQLf85jD9k6R1WTYqa5CKLvz3g8dPjZC27b9x","./contracts/payment/PullPayment.sol":"ipfs://QmTNECEe6K6GSPccm9pGzpUWhucy7j9qjKGx6WgA9Ur8bV","./contracts/token/BasicToken.sol":"ipfs://QmTewjoDJ5PS4bdPTXvVMRTFjMiBgJMm4YyjdEPCXk9Lny","./contracts/token/BurnableToken.sol":"ipfs://Qmb7RV7pbTrjFFxg1GKGtDrP52scNusDJiKNby1Ei3CitP","./contracts/token/ERC20.sol":"ipfs://QmcFFg2KzuFrQ9QGdKYoL5h4Kh5dgzA6roqRboobnzQHGc","./contracts/token/ERC20Basic.sol":"ipfs://QmRtyoNm35awHN1bHD7RFpBrSQ8u6BGoRu2FH9mYmoEjPF","./contracts/token/LimitedTransferToken.sol":"ipfs://QmYPMFtSTs8ANew5F3pkSvRSHoJgzUT4Uw1WZKbr6EXiep","./contracts/token/MintableToken.sol":"ipfs://QmVT3q5gNJNjhM8S5YMi1r7hNS9VQSoWxGYRAaSRXSmXTw","./contracts/token/PausableToken.sol":"ipfs://QmQwHWwnqFLeFi9JB4iy4prka1AELqjFVL7qH3Lw7JNPtJ","./contracts/token/SafeERC20.sol":"ipfs://QmfZ7ZdEbp97f4CsC8kL6VehwZ2k8usirVbbDDD8hQd9Sx","./contracts/token/StandardToken.sol":"ipfs://QmNUzFReiMn6pvpWxLka7emEUjmcACHK9bF4Dz1CGTdd7i","./contracts/token/TokenTimelock.sol":"ipfs://QmULfAyT7E1zVT9hFtQuJgiWQAwQw3RxxuP4ZXs7wGxJGA","./contracts/token/VestedToken.sol":"ipfs://QmQmmCNVpASWLD4WVowiVsCSS6u2L5MCipxQ54xzRZMaQh"},"build_dependencies":{}}
--------------------------------------------------------------------------------
/installed_contracts/zeppelin/lock.uri:
--------------------------------------------------------------------------------
1 | ipfs://QmaCaDgbXgTJXdt8JRU46R59sH4UwnDHiAopdbndEDGqxV
--------------------------------------------------------------------------------
/migrations/1_initial_migration.js:
--------------------------------------------------------------------------------
1 | var Migrations = artifacts.require("./Migrations.sol");
2 |
3 | module.exports = function(deployer) {
4 | deployer.deploy(Migrations);
5 | };
6 |
--------------------------------------------------------------------------------
/migrations/2_deploy_contracts.js:
--------------------------------------------------------------------------------
1 | module.exports = function(deployer) {};
2 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sample-crowdsale",
3 | "version": "1.0.0",
4 | "main": "truffle.js",
5 | "author": "John Backus ",
6 | "license": "MIT",
7 | "scripts": {
8 | "test": "bin/test"
9 | },
10 | "dependencies": {
11 | "minimetoken": "^0.1.7",
12 | "truffle": "^3.4.9"
13 | },
14 | "devDependencies": {
15 | "@types/bignumber.js": "^4.0.3",
16 | "@types/chai": "^4.0.4",
17 | "@types/chai-as-promised": "^0.0.31",
18 | "@types/mocha": "^2.2.42",
19 | "@types/node": "^8.0.26",
20 | "babel-polyfill": "^6.26.0",
21 | "babel-preset-es2015": "^6.18.0",
22 | "babel-preset-stage-2": "^6.18.0",
23 | "babel-preset-stage-3": "^6.17.0",
24 | "babel-register": "^6.26.0",
25 | "chai": "^4.1.1",
26 | "chai-as-promised": "^7.1.1",
27 | "chai-bignumber": "^2.0.1",
28 | "ethereumjs-testrpc": "^4.1.1",
29 | "prettier": "^1.6.1",
30 | "solidity-coverage": "^0.2.2",
31 | "truffle-hdwallet-provider": "^0.0.3",
32 | "ts-node": "^3.3.0",
33 | "typescript": "^2.5.2"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/test/SimpleSale.ts:
--------------------------------------------------------------------------------
1 | import * as chai from "chai";
2 |
3 | const chaiBignumber = require("chai-bignumber");
4 |
5 | chai.use(chaiBignumber(web3.BigNumber)).should();
6 |
7 | const SimpleSale = artifacts.require("SimpleSale");
8 | const SimpleToken = artifacts.require("SimpleToken");
9 |
10 | contract("SimpleSale", function([_, buyer, wallet, donor, recipient]) {
11 | function latestBlockTime() {
12 | return latestBlock().timestamp;
13 | }
14 |
15 | function latestBlock() {
16 | const latestBlock = web3.eth.getBlock("latest");
17 |
18 | if (latestBlock && latestBlock.number && latestBlock.timestamp) {
19 | return {
20 | number: latestBlock.number,
21 | timestamp: latestBlock.timestamp
22 | };
23 | } else {
24 | throw `Expected web3.eth.getBlock to return a block object but got ${latestBlock}`;
25 | }
26 | }
27 |
28 | it("allows user to purchase", async () => {
29 | const sale = await SimpleSale.new(
30 | latestBlockTime() + 1,
31 | latestBlockTime() + 10,
32 | 50,
33 | wallet
34 | );
35 |
36 | const token = SimpleToken.at(await sale.token());
37 |
38 | const balanceBefore = await token.balanceOf(buyer);
39 | await sale.sendTransaction({
40 | value: 50,
41 | from: buyer
42 | });
43 | const balanceAfter = await token.balanceOf(buyer);
44 |
45 | balanceBefore.should.be.bignumber.equal(0);
46 | balanceAfter.should.be.bignumber.equal(2500);
47 | });
48 |
49 | it("allows user to buy tokens for another user", async () => {
50 | const sale = await SimpleSale.new(
51 | latestBlockTime() + 1,
52 | latestBlockTime() + 10,
53 | 50,
54 | wallet
55 | );
56 |
57 | const token = SimpleToken.at(await sale.token());
58 |
59 | const recipientBalanceBefore = await token.balanceOf(recipient);
60 | const donorBalanceBefore = await token.balanceOf(donor);
61 |
62 | await sale.buyTokens(recipient, {
63 | value: 50,
64 | from: donor
65 | });
66 |
67 | const recipientBalanceAfter = await token.balanceOf(recipient);
68 | const donorBalanceAfter = await token.balanceOf(donor);
69 |
70 | recipientBalanceBefore.should.be.bignumber.equal(0);
71 | recipientBalanceAfter.should.be.bignumber.equal(2500);
72 | donorBalanceBefore.should.be.bignumber.equal(0);
73 | donorBalanceAfter.should.be.bignumber.equal(0);
74 | });
75 | });
76 |
--------------------------------------------------------------------------------
/truffle.d.ts:
--------------------------------------------------------------------------------
1 | import * as Web3 from "web3";
2 | import { SimpleSaleInstance, SimpleTokenInstance } from "./contracts";
3 |
4 | declare global {
5 | function contract(name: string, test: ContractTest): void;
6 | var artifacts: Artifacts;
7 | var web3: Web3;
8 | var assert: Chai.AssertStatic;
9 | }
10 |
11 | declare type ContractTest = (accounts: string[]) => void;
12 |
13 | interface Contract {
14 | "new"(...args: any[]): Promise;
15 | deployed(): Promise;
16 | at(address: string): T;
17 | }
18 |
19 | interface Artifacts {
20 | require(name: "SimpleSale"): Contract;
21 | require(name: "SimpleToken"): Contract;
22 | }
23 |
--------------------------------------------------------------------------------
/truffle.js:
--------------------------------------------------------------------------------
1 | require("babel-register");
2 | require("babel-polyfill");
3 |
4 | module.exports = {
5 | networks: {
6 | development: {
7 | host: "localhost",
8 | port: 8545,
9 | network_id: "*", // Match any network id
10 | gas: 1e7
11 | },
12 | test: {
13 | provider: require("ethereumjs-testrpc").provider({ gasLimit: 1e7 }),
14 | network_id: "*"
15 | }
16 | }
17 | };
18 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "strict": true,
4 | "noUnusedParameters": true,
5 | "noImplicitReturns": true,
6 | "noUnusedLocals": true,
7 | "strictNullChecks": true,
8 | "outDir": "js_test",
9 | "module": "commonjs",
10 | "lib": ["es6", "es2017", "dom"],
11 | "target": "es5"
12 | },
13 | "include": [
14 | "./truffle.d.ts",
15 | "./web3.d.ts",
16 | "./chai-bignumber.d.ts",
17 | "test/**/*.ts"
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/web3.d.ts:
--------------------------------------------------------------------------------
1 | // Slightly modified typings from https://github.com/0xProject/web3-typescript-typings
2 |
3 | declare module "web3" {
4 | import * as BigNumber from "bignumber.js";
5 |
6 | type MixedData = string | number | object | any[] | BigNumber.BigNumber;
7 |
8 | class Web3 {
9 | public BigNumber: typeof BigNumber;
10 |
11 | public static providers: typeof providers;
12 | public currentProvider: Web3.Provider;
13 |
14 | public eth: Web3.EthApi;
15 | public personal: Web3.PersonalApi | undefined;
16 | public version: Web3.VersionApi;
17 | public net: Web3.NetApi;
18 |
19 | public constructor(provider?: Web3.Provider);
20 |
21 | public isConnected(): boolean;
22 | public setProvider(provider: Web3.Provider): void;
23 | public reset(keepIsSyncing: boolean): void;
24 | public toHex(data: MixedData): string;
25 | public toAscii(hex: string): string;
26 | public fromAscii(ascii: string, padding?: number): string;
27 | public toDecimal(hex: string): number;
28 | public fromDecimal(value: number | string): string;
29 | public fromWei(value: number | string, unit: Web3.Unit): string;
30 | public fromWei(
31 | value: BigNumber.BigNumber,
32 | unit: Web3.Unit
33 | ): BigNumber.BigNumber;
34 | public toWei(amount: number | string, unit: Web3.Unit): string;
35 | public toWei(
36 | amount: BigNumber.BigNumber,
37 | unit: Web3.Unit
38 | ): BigNumber.BigNumber;
39 | public toBigNumber(value: number | string): BigNumber.BigNumber;
40 | public isAddress(address: string): boolean;
41 | public isChecksumAddress(address: string): boolean;
42 | public sha3(value: string, options?: Web3.Sha3Options): string;
43 | }
44 |
45 | namespace providers {
46 | class HttpProvider implements Web3.Provider {
47 | constructor(
48 | url?: string,
49 | timeout?: number,
50 | username?: string,
51 | password?: string
52 | );
53 | sendAsync(
54 | payload: Web3.JSONRPCRequestPayload,
55 | callback: (err: Error, result: Web3.JSONRPCResponsePayload) => void
56 | ): void;
57 | }
58 | }
59 |
60 | namespace Web3 {
61 | type ContractAbi = AbiDefinition[];
62 |
63 | type AbiDefinition = FunctionAbi | EventAbi;
64 |
65 | type FunctionAbi = MethodAbi | ConstructorAbi | FallbackAbi;
66 |
67 | interface MethodAbi {
68 | type: "function";
69 | name: string;
70 | inputs: FunctionParameter[];
71 | outputs: FunctionParameter[];
72 | constant: boolean;
73 | payable: boolean;
74 | }
75 |
76 | interface ConstructorAbi {
77 | type: "constructor";
78 | inputs: FunctionParameter[];
79 | payable: boolean;
80 | }
81 |
82 | interface FallbackAbi {
83 | type: "fallback";
84 | payable: boolean;
85 | }
86 |
87 | interface EventParameter {
88 | name: string;
89 | type: string;
90 | indexed: boolean;
91 | }
92 |
93 | interface EventAbi {
94 | type: "event";
95 | name: string;
96 | inputs: EventParameter[];
97 | anonymous: boolean;
98 | }
99 |
100 | interface FunctionParameter {
101 | name: string;
102 | type: string;
103 | }
104 |
105 | interface ContractInstance {
106 | address: string;
107 | abi: Web3.ContractAbi;
108 | [name: string]: any;
109 | }
110 |
111 | interface Contract {
112 | at(address: string): A;
113 | }
114 |
115 | interface FilterObject {
116 | fromBlock: number | string;
117 | toBlock: number | string;
118 | address: string;
119 | topics: string[];
120 | }
121 |
122 | interface SolidityEvent {
123 | event: string;
124 | address: string;
125 | args: A;
126 | }
127 |
128 | interface FilterResult {
129 | get(callback: () => void): void;
130 | watch(callback: (err: Error, result: SolidityEvent) => void): void;
131 | stopWatching(callback: () => void): void;
132 | }
133 |
134 | export interface JSONRPCRequestPayload {
135 | params?: any[];
136 | method: string;
137 | id: number;
138 | jsonrpc: string;
139 | }
140 |
141 | export interface JSONRPCResponsePayload {
142 | result: any;
143 | id: number;
144 | jsonrpc: string;
145 | }
146 |
147 | interface Provider {
148 | sendAsync(
149 | payload: JSONRPCRequestPayload,
150 | callback: (err: Error, result: JSONRPCResponsePayload) => void
151 | ): void;
152 | }
153 |
154 | interface Sha3Options {
155 | encoding: "hex";
156 | }
157 |
158 | interface EthApi {
159 | coinbase: string;
160 | mining: boolean;
161 | hashrate: number;
162 | gasPrice: BigNumber.BigNumber;
163 | accounts: string[];
164 | blockNumber: number;
165 | defaultAccount: string;
166 | defaultBlock: Web3.BlockParam;
167 | syncing: Web3.SyncingResult;
168 | compile: {
169 | solidity(
170 | sourceString: string,
171 | cb?: (err: Error, result: any) => void
172 | ): object;
173 | };
174 | getMining(cd: (err: Error, mining: boolean) => void): void;
175 | getHashrate(cd: (err: Error, hashrate: number) => void): void;
176 | getGasPrice(
177 | cd: (err: Error, gasPrice: BigNumber.BigNumber) => void
178 | ): void;
179 | getAccounts(cd: (err: Error, accounts: string[]) => void): void;
180 | getBlockNumber(callback: (err: Error, blockNumber: number) => void): void;
181 | getSyncing(cd: (err: Error, syncing: Web3.SyncingResult) => void): void;
182 | isSyncing(
183 | cb: (
184 | err: Error,
185 | isSyncing: boolean,
186 | syncingState: Web3.SyncingState
187 | ) => void
188 | ): Web3.IsSyncing;
189 |
190 | getBlock(
191 | hashStringOrBlockNumber: string | Web3.BlockParam
192 | ): Web3.BlockWithoutTransactionData;
193 | getBlock(
194 | hashStringOrBlockNumber: string | Web3.BlockParam,
195 | callback: (
196 | err: Error,
197 | blockObj: Web3.BlockWithoutTransactionData
198 | ) => void
199 | ): void;
200 | getBlock(
201 | hashStringOrBlockNumber: string | Web3.BlockParam,
202 | returnTransactionObjects: true
203 | ): Web3.BlockWithTransactionData;
204 | getBlock(
205 | hashStringOrBlockNumber: string | Web3.BlockParam,
206 | returnTransactionObjects: true,
207 | callback: (err: Error, blockObj: Web3.BlockWithTransactionData) => void
208 | ): void;
209 |
210 | getBlockTransactionCount(
211 | hashStringOrBlockNumber: string | Web3.BlockParam
212 | ): number;
213 | getBlockTransactionCount(
214 | hashStringOrBlockNumber: string | Web3.BlockParam,
215 | callback: (err: Error, blockTransactionCount: number) => void
216 | ): void;
217 |
218 | // TODO returnTransactionObjects
219 | getUncle(
220 | hashStringOrBlockNumber: string | Web3.BlockParam,
221 | uncleNumber: number
222 | ): Web3.BlockWithoutTransactionData;
223 | getUncle(
224 | hashStringOrBlockNumber: string | Web3.BlockParam,
225 | uncleNumber: number,
226 | callback: (err: Error, uncle: Web3.BlockWithoutTransactionData) => void
227 | ): void;
228 |
229 | getTransaction(transactionHash: string): Web3.Transaction;
230 | getTransaction(
231 | transactionHash: string,
232 | callback: (err: Error, transaction: Web3.Transaction) => void
233 | ): void;
234 |
235 | getTransactionFromBlock(
236 | hashStringOrBlockNumber: string | Web3.BlockParam,
237 | indexNumber: number
238 | ): Web3.Transaction;
239 | getTransactionFromBlock(
240 | hashStringOrBlockNumber: string | Web3.BlockParam,
241 | indexNumber: number,
242 | callback: (err: Error, transaction: Web3.Transaction) => void
243 | ): void;
244 |
245 | contract(abi: Web3.AbiDefinition[]): Web3.Contract;
246 |
247 | // TODO block param
248 | getBalance(addressHexString: string): BigNumber.BigNumber;
249 | getBalance(
250 | addressHexString: string,
251 | callback: (err: Error, result: BigNumber.BigNumber) => void
252 | ): void;
253 |
254 | // TODO block param
255 | getStorageAt(address: string, position: number): string;
256 | getStorageAt(
257 | address: string,
258 | position: number,
259 | callback: (err: Error, storage: string) => void
260 | ): void;
261 |
262 | // TODO block param
263 | getCode(addressHexString: string): string;
264 | getCode(
265 | addressHexString: string,
266 | callback: (err: Error, code: string) => void
267 | ): void;
268 |
269 | filter(value: string | Web3.FilterObject): Web3.FilterResult;
270 |
271 | sendTransaction(txData: Web3.TxData): string;
272 | sendTransaction(
273 | txData: Web3.TxData,
274 | callback: (err: Error, value: string) => void
275 | ): void;
276 |
277 | sendRawTransaction(rawTxData: string): string;
278 | sendRawTransaction(
279 | rawTxData: string,
280 | callback: (err: Error, value: string) => void
281 | ): void;
282 |
283 | sign(address: string, data: string): string;
284 | sign(
285 | address: string,
286 | data: string,
287 | callback: (err: Error, signature: string) => void
288 | ): void;
289 |
290 | getTransactionReceipt(txHash: string): Web3.TransactionReceipt;
291 | getTransactionReceipt(
292 | txHash: string,
293 | callback: (err: Error, receipt: Web3.TransactionReceipt) => void
294 | ): void;
295 |
296 | // TODO block param
297 | call(callData: Web3.CallData): string;
298 | call(
299 | callData: Web3.CallData,
300 | callback: (err: Error, result: string) => void
301 | ): void;
302 |
303 | estimateGas(callData: Web3.CallData): number;
304 | estimateGas(
305 | callData: Web3.CallData,
306 | callback: (err: Error, gas: number) => void
307 | ): void;
308 |
309 | // TODO defaultBlock
310 | getTransactionCount(address: string): number;
311 | getTransactionCount(
312 | address: string,
313 | callback: (err: Error, count: number) => void
314 | ): void;
315 | }
316 |
317 | interface VersionApi {
318 | api: string;
319 | network: string;
320 | node: string;
321 | ethereum: string;
322 | whisper: string;
323 | getNetwork(cd: (err: Error, networkId: string) => void): void;
324 | getNode(cd: (err: Error, nodeVersion: string) => void): void;
325 | getEthereum(cd: (err: Error, ethereum: string) => void): void;
326 | getWhisper(cd: (err: Error, whisper: string) => void): void;
327 | }
328 |
329 | interface PersonalApi {
330 | listAccounts: string[] | undefined;
331 | newAccount(password?: string): string;
332 | unlockAccount(
333 | address: string,
334 | password?: string,
335 | duration?: number
336 | ): boolean;
337 | lockAccount(address: string): boolean;
338 | sign(message: string, account: string, password: string): string;
339 | }
340 |
341 | interface NetApi {
342 | listening: boolean;
343 | peerCount: boolean;
344 | getListening(cd: (err: Error, listening: boolean) => void): void;
345 | getPeerCount(cd: (err: Error, peerCount: number) => void): void;
346 | }
347 |
348 | type BlockParam = number | "earliest" | "latest" | "pending";
349 |
350 | type Unit =
351 | | "kwei"
352 | | "ada"
353 | | "mwei"
354 | | "babbage"
355 | | "gwei"
356 | | "shannon"
357 | | "szabo"
358 | | "finney"
359 | | "ether"
360 | | "kether"
361 | | "grand"
362 | | "einstein"
363 | | "mether"
364 | | "gether"
365 | | "tether";
366 |
367 | interface SyncingState {
368 | startingBlock: number;
369 | currentBlock: number;
370 | highestBlock: number;
371 | }
372 | type SyncingResult = false | SyncingState;
373 |
374 | interface IsSyncing {
375 | addCallback(
376 | cb: (err: Error, isSyncing: boolean, syncingState: SyncingState) => void
377 | ): void;
378 | stopWatching(): void;
379 | }
380 |
381 | interface AbstractBlock {
382 | number: number | null;
383 | hash: string | null;
384 | parentHash: string;
385 | nonce: string | null;
386 | sha3Uncles: string;
387 | logsBloom: string | null;
388 | transactionsRoot: string;
389 | stateRoot: string;
390 | miner: string;
391 | difficulty: BigNumber.BigNumber;
392 | totalDifficulty: BigNumber.BigNumber;
393 | extraData: string;
394 | size: number;
395 | gasLimit: number;
396 | gasUser: number;
397 | timestamp: number;
398 | uncles: string[];
399 | }
400 | interface BlockWithoutTransactionData extends AbstractBlock {
401 | transactions: string[];
402 | }
403 | interface BlockWithTransactionData extends AbstractBlock {
404 | transactions: Transaction[];
405 | }
406 |
407 | interface Transaction {
408 | hash: string;
409 | nonce: number;
410 | blockHash: string | null;
411 | blockNumber: number | null;
412 | transactionIndex: number | null;
413 | from: string;
414 | to: string | null;
415 | value: BigNumber.BigNumber;
416 | gasPrice: BigNumber.BigNumber;
417 | gas: number;
418 | input: string;
419 | }
420 |
421 | interface CallTxDataBase {
422 | to?: string;
423 | value?: number | string | BigNumber.BigNumber;
424 | gas?: number | string | BigNumber.BigNumber;
425 | gasPrice?: number | string | BigNumber.BigNumber;
426 | data?: string;
427 | nonce?: number;
428 | }
429 |
430 | interface TxData extends CallTxDataBase {
431 | from: string;
432 | }
433 |
434 | interface CallData extends CallTxDataBase {
435 | from?: string;
436 | }
437 |
438 | interface TransactionReceipt {
439 | blockHash: string;
440 | blockNumber: number;
441 | transactionHash: string;
442 | transactionIndex: number;
443 | from: string;
444 | to: string;
445 | cumulativeGasUsed: number;
446 | gasUsed: number;
447 | contractAddress: string | null;
448 | logs: LogEntry[];
449 | }
450 |
451 | interface LogEntry {
452 | logIndex: number | null;
453 | transactionIndex: number;
454 | transactionHash: string;
455 | blockHash: string | null;
456 | blockNumber: number | null;
457 | address: string;
458 | data: string;
459 | topics: string[];
460 | }
461 | }
462 | /* tslint:disable */
463 | export = Web3;
464 | /* tslint:enable */
465 | }
466 |
--------------------------------------------------------------------------------