h-agent-swap 2.1.2 → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/abi/SwapRouter.json +260 -2
- package/src/swap-router.js +55 -18
package/package.json
CHANGED
package/src/abi/SwapRouter.json
CHANGED
|
@@ -19,6 +19,104 @@
|
|
|
19
19
|
"stateMutability": "nonpayable",
|
|
20
20
|
"type": "constructor"
|
|
21
21
|
},
|
|
22
|
+
{
|
|
23
|
+
"anonymous": false,
|
|
24
|
+
"inputs": [
|
|
25
|
+
{
|
|
26
|
+
"indexed": false,
|
|
27
|
+
"internalType": "uint256",
|
|
28
|
+
"name": "id",
|
|
29
|
+
"type": "uint256"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"indexed": false,
|
|
33
|
+
"internalType": "uint256",
|
|
34
|
+
"name": "liquidity",
|
|
35
|
+
"type": "uint256"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"indexed": false,
|
|
39
|
+
"internalType": "address",
|
|
40
|
+
"name": "tokenA",
|
|
41
|
+
"type": "address"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"indexed": false,
|
|
45
|
+
"internalType": "uint256",
|
|
46
|
+
"name": "amountA",
|
|
47
|
+
"type": "uint256"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"indexed": false,
|
|
51
|
+
"internalType": "address",
|
|
52
|
+
"name": "tokenB",
|
|
53
|
+
"type": "address"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"indexed": false,
|
|
57
|
+
"internalType": "uint256",
|
|
58
|
+
"name": "amountB",
|
|
59
|
+
"type": "uint256"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"indexed": false,
|
|
63
|
+
"internalType": "uint256",
|
|
64
|
+
"name": "time",
|
|
65
|
+
"type": "uint256"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"name": "AddLiquidity",
|
|
69
|
+
"type": "event"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"anonymous": false,
|
|
73
|
+
"inputs": [
|
|
74
|
+
{
|
|
75
|
+
"indexed": false,
|
|
76
|
+
"internalType": "uint256",
|
|
77
|
+
"name": "id",
|
|
78
|
+
"type": "uint256"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"indexed": false,
|
|
82
|
+
"internalType": "uint256",
|
|
83
|
+
"name": "liquidity",
|
|
84
|
+
"type": "uint256"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"indexed": false,
|
|
88
|
+
"internalType": "address",
|
|
89
|
+
"name": "tokenA",
|
|
90
|
+
"type": "address"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"indexed": false,
|
|
94
|
+
"internalType": "uint256",
|
|
95
|
+
"name": "amountA",
|
|
96
|
+
"type": "uint256"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"indexed": false,
|
|
100
|
+
"internalType": "address",
|
|
101
|
+
"name": "tokenB",
|
|
102
|
+
"type": "address"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"indexed": false,
|
|
106
|
+
"internalType": "uint256",
|
|
107
|
+
"name": "amountB",
|
|
108
|
+
"type": "uint256"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"indexed": false,
|
|
112
|
+
"internalType": "uint256",
|
|
113
|
+
"name": "time",
|
|
114
|
+
"type": "uint256"
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"name": "RemoveLiquidity",
|
|
118
|
+
"type": "event"
|
|
119
|
+
},
|
|
22
120
|
{
|
|
23
121
|
"inputs": [],
|
|
24
122
|
"name": "WETH",
|
|
@@ -269,6 +367,107 @@
|
|
|
269
367
|
"stateMutability": "view",
|
|
270
368
|
"type": "function"
|
|
271
369
|
},
|
|
370
|
+
{
|
|
371
|
+
"inputs": [
|
|
372
|
+
{
|
|
373
|
+
"internalType": "uint256",
|
|
374
|
+
"name": "id",
|
|
375
|
+
"type": "uint256"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"internalType": "address",
|
|
379
|
+
"name": "wallet",
|
|
380
|
+
"type": "address"
|
|
381
|
+
}
|
|
382
|
+
],
|
|
383
|
+
"name": "getTokenAmounts",
|
|
384
|
+
"outputs": [
|
|
385
|
+
{
|
|
386
|
+
"internalType": "uint256",
|
|
387
|
+
"name": "liquidity",
|
|
388
|
+
"type": "uint256"
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"internalType": "uint112",
|
|
392
|
+
"name": "reserve0",
|
|
393
|
+
"type": "uint112"
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"internalType": "uint112",
|
|
397
|
+
"name": "reserve1",
|
|
398
|
+
"type": "uint112"
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"internalType": "address",
|
|
402
|
+
"name": "token0",
|
|
403
|
+
"type": "address"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"internalType": "address",
|
|
407
|
+
"name": "token1",
|
|
408
|
+
"type": "address"
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"internalType": "uint256",
|
|
412
|
+
"name": "totalSupply",
|
|
413
|
+
"type": "uint256"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"internalType": "uint256",
|
|
417
|
+
"name": "balance",
|
|
418
|
+
"type": "uint256"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"internalType": "uint256",
|
|
422
|
+
"name": "balance0",
|
|
423
|
+
"type": "uint256"
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"internalType": "uint256",
|
|
427
|
+
"name": "balance1",
|
|
428
|
+
"type": "uint256"
|
|
429
|
+
}
|
|
430
|
+
],
|
|
431
|
+
"stateMutability": "view",
|
|
432
|
+
"type": "function"
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"inputs": [
|
|
436
|
+
{
|
|
437
|
+
"internalType": "uint256",
|
|
438
|
+
"name": "",
|
|
439
|
+
"type": "uint256"
|
|
440
|
+
}
|
|
441
|
+
],
|
|
442
|
+
"name": "liquidityAmount",
|
|
443
|
+
"outputs": [
|
|
444
|
+
{
|
|
445
|
+
"internalType": "uint256",
|
|
446
|
+
"name": "liquidity",
|
|
447
|
+
"type": "uint256"
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"internalType": "address",
|
|
451
|
+
"name": "pair",
|
|
452
|
+
"type": "address"
|
|
453
|
+
}
|
|
454
|
+
],
|
|
455
|
+
"stateMutability": "view",
|
|
456
|
+
"type": "function"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"inputs": [],
|
|
460
|
+
"name": "liquidityId",
|
|
461
|
+
"outputs": [
|
|
462
|
+
{
|
|
463
|
+
"internalType": "uint256",
|
|
464
|
+
"name": "",
|
|
465
|
+
"type": "uint256"
|
|
466
|
+
}
|
|
467
|
+
],
|
|
468
|
+
"stateMutability": "view",
|
|
469
|
+
"type": "function"
|
|
470
|
+
},
|
|
272
471
|
{
|
|
273
472
|
"inputs": [],
|
|
274
473
|
"name": "owner",
|
|
@@ -665,6 +864,65 @@
|
|
|
665
864
|
"stateMutability": "nonpayable",
|
|
666
865
|
"type": "function"
|
|
667
866
|
},
|
|
867
|
+
{
|
|
868
|
+
"inputs": [
|
|
869
|
+
{
|
|
870
|
+
"internalType": "uint256",
|
|
871
|
+
"name": "id",
|
|
872
|
+
"type": "uint256"
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
"internalType": "address",
|
|
876
|
+
"name": "tokenA",
|
|
877
|
+
"type": "address"
|
|
878
|
+
},
|
|
879
|
+
{
|
|
880
|
+
"internalType": "address",
|
|
881
|
+
"name": "tokenB",
|
|
882
|
+
"type": "address"
|
|
883
|
+
},
|
|
884
|
+
{
|
|
885
|
+
"internalType": "uint256",
|
|
886
|
+
"name": "liquidity",
|
|
887
|
+
"type": "uint256"
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
"internalType": "uint256",
|
|
891
|
+
"name": "amountAMin",
|
|
892
|
+
"type": "uint256"
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
"internalType": "uint256",
|
|
896
|
+
"name": "amountBMin",
|
|
897
|
+
"type": "uint256"
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
"internalType": "address",
|
|
901
|
+
"name": "to",
|
|
902
|
+
"type": "address"
|
|
903
|
+
},
|
|
904
|
+
{
|
|
905
|
+
"internalType": "uint256",
|
|
906
|
+
"name": "deadline",
|
|
907
|
+
"type": "uint256"
|
|
908
|
+
}
|
|
909
|
+
],
|
|
910
|
+
"name": "returnLiquidity",
|
|
911
|
+
"outputs": [
|
|
912
|
+
{
|
|
913
|
+
"internalType": "uint256",
|
|
914
|
+
"name": "amountA",
|
|
915
|
+
"type": "uint256"
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
"internalType": "uint256",
|
|
919
|
+
"name": "amountB",
|
|
920
|
+
"type": "uint256"
|
|
921
|
+
}
|
|
922
|
+
],
|
|
923
|
+
"stateMutability": "nonpayable",
|
|
924
|
+
"type": "function"
|
|
925
|
+
},
|
|
668
926
|
{
|
|
669
927
|
"inputs": [
|
|
670
928
|
{
|
|
@@ -1038,8 +1296,8 @@
|
|
|
1038
1296
|
"type": "receive"
|
|
1039
1297
|
}
|
|
1040
1298
|
],
|
|
1041
|
-
"bytecode": "0x60c060405234801561001057600080fd5b5060405162005378380380620053788339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a052600180546001600160a01b0319163317905560805160601c60a05160601c6151e162000197600039806101cb5280610ea15280610edc52806110f15280611321528061181152806119ea5280611eb65280611fdb528061209152806121d5528061232d52806123b5528061272d528061281952806128e15280612a235280612aca5280612b3e528061314052806134ae5280613504528061353852806135ac52806137c25280613917528061399f525080611191528061126852806113e75280611481528061164b52806118b152806119c85280611bc7528061227a52806123e752806125c05280612b705280612e3a5280613064528061308d528061311e528061331552806134e2528061386752806139d152806142ff5280614342528061462552806147ab5280614c155280614cdc5280614d5c52506151e16000f3fe6080604052600436106101bb5760003560e01c8063880cdc31116100ec578063baa2abde1161008a578063ded9382a11610064578063ded9382a14610c24578063e8e3370014610c97578063f305d71914610d17578063fb3bdb4114610d5d576101f4565b8063baa2abde14610afb578063c45a015514610b58578063d06ca61f14610b6d576101f4565b8063ad5c4648116100c6578063ad5c4648146109d7578063ad615dec146109ec578063af2979eb14610a22578063b6f9de9514610a75576101f4565b8063880cdc311461092c5780638da5cb5b1461095f5780639b19251a14610990576101f4565b80634a25d94a11610159578063791ac94711610133578063791ac947146107405780637ff36ab5146107d857806385f8c2591461085e5780638803dbee14610894576101f4565b80634a25d94a1461059d5780635b0d5984146106355780635c11d795146106a8576101f4565b806318cbafe51161019557806318cbafe5146102e85780631f00ca74146103d05780632195995c1461048757806338ed173914610505576101f4565b806302751cec146101f957806304c8c10014610265578063054d50d4146102a0576101f4565b366101f457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101f257fe5b005b600080fd5b34801561020557600080fd5b5061024c600480360360c081101561021c57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610de3565b6040805192835260208301919091528051918290030190f35b34801561027157600080fd5b506101f26004803603604081101561028857600080fd5b506001600160a01b0381351690602001351515610f6e565b3480156102ac57600080fd5b506102d6600480360360608110156102c357600080fd5b5080359060208101359060400135611016565b60408051918252519081900360200190f35b3480156102f457600080fd5b50610380600480360360a081101561030b57600080fd5b81359160208101359181019060608101604082013564010000000081111561033257600080fd5b82018360208201111561034457600080fd5b8035906020019184602083028401116401000000008311171561036657600080fd5b91935091506001600160a01b03813516906020013561102b565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103bc5781810151838201526020016103a4565b505050509050019250505060405180910390f35b3480156103dc57600080fd5b50610380600480360360408110156103f357600080fd5b8135919081019060408101602082013564010000000081111561041557600080fd5b82018360208201111561042757600080fd5b8035906020019184602083028401116401000000008311171561044957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506113e0945050505050565b34801561049357600080fd5b5061024c60048036036101608110156104ab57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611416565b34801561051157600080fd5b50610380600480360360a081101561052857600080fd5b81359160208101359181019060608101604082013564010000000081111561054f57600080fd5b82018360208201111561056157600080fd5b8035906020019184602083028401116401000000008311171561058357600080fd5b91935091506001600160a01b03813516906020013561158a565b3480156105a957600080fd5b50610380600480360360a08110156105c057600080fd5b8135916020810135918101906060810160408201356401000000008111156105e757600080fd5b8201836020820111156105f957600080fd5b8035906020019184602083028401116401000000008311171561061b57600080fd5b91935091506001600160a01b03813516906020013561174b565b34801561064157600080fd5b506102d6600480360361014081101561065957600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561195f565b3480156106b457600080fd5b506101f2600480360360a08110156106cb57600080fd5b8135916020810135918101906060810160408201356401000000008111156106f257600080fd5b82018360208201111561070457600080fd5b8035906020019184602083028401116401000000008311171561072657600080fd5b91935091506001600160a01b038135169060200135611ae7565b34801561074c57600080fd5b506101f2600480360360a081101561076357600080fd5b81359160208101359181019060608101604082013564010000000081111561078a57600080fd5b82018360208201111561079c57600080fd5b803590602001918460208302840111640100000000831117156107be57600080fd5b91935091506001600160a01b038135169060200135611df2565b610380600480360360808110156107ee57600080fd5b8135919081019060408101602082013564010000000081111561081057600080fd5b82018360208201111561082257600080fd5b8035906020019184602083028401116401000000008311171561084457600080fd5b91935091506001600160a01b038135169060200135612117565b34801561086a57600080fd5b506102d66004803603606081101561088157600080fd5b50803590602081013590604001356124f2565b3480156108a057600080fd5b50610380600480360360a08110156108b757600080fd5b8135916020810135918101906060810160408201356401000000008111156108de57600080fd5b8201836020820111156108f057600080fd5b8035906020019184602083028401116401000000008311171561091257600080fd5b91935091506001600160a01b0381351690602001356124ff565b34801561093857600080fd5b506101f26004803603602081101561094f57600080fd5b50356001600160a01b031661266e565b34801561096b57600080fd5b50610974612707565b604080516001600160a01b039092168252519081900360200190f35b34801561099c57600080fd5b506109c3600480360360208110156109b357600080fd5b50356001600160a01b0316612716565b604080519115158252519081900360200190f35b3480156109e357600080fd5b5061097461272b565b3480156109f857600080fd5b506102d660048036036060811015610a0f57600080fd5b508035906020810135906040013561274f565b348015610a2e57600080fd5b506102d6600480360360c0811015610a4557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561275c565b6101f260048036036080811015610a8b57600080fd5b81359190810190604081016020820135640100000000811115610aad57600080fd5b820183602082011115610abf57600080fd5b80359060200191846020830284011164010000000083111715610ae157600080fd5b91935091506001600160a01b038135169060200135612967565b348015610b0757600080fd5b5061024c600480360360e0811015610b1e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d7b565b348015610b6457600080fd5b50610974613062565b348015610b7957600080fd5b5061038060048036036040811015610b9057600080fd5b81359190810190604081016020820135640100000000811115610bb257600080fd5b820183602082011115610bc457600080fd5b80359060200191846020830284011164010000000083111715610be657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613086945050505050565b348015610c3057600080fd5b5061024c6004803603610140811015610c4857600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130b3565b348015610ca357600080fd5b50610cf96004803603610100811015610cbb57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613241565b60408051938452602084019290925282820152519081900360600190f35b610cf9600480360360c0811015610d2d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a001356133ee565b61038060048036036080811015610d7357600080fd5b81359190810190604081016020820135640100000000811115610d9557600080fd5b820183602082011115610da757600080fd5b80359060200191846020830284011164010000000083111715610dc957600080fd5b91935091506001600160a01b038135169060200135613704565b6000808242811015610e3c576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314610e9b576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b610eca897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d7b565b9093509150610eda898685613b0e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f4057600080fd5b505af1158015610f54573d6000803e3d6000fd5b50505050610f628583613ca6565b50965096945050505050565b6001546001600160a01b03163314610fcd576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6001600160a01b0391909116600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000611023848484613d9e565b949350505050565b60608142811015611083576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166110e7576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061112157fe5b905060200201356001600160a01b03166001600160a01b03161461118c576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6111ea7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e8e92505050565b915086826001845103815181106111fd57fe5b602002602001015110156112425760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b6112e08686600081811061125257fe5b905060200201356001600160a01b0316336112c67f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061129457fe5b905060200201356001600160a01b03168b8b60018181106112b157fe5b905060200201356001600160a01b0316613fda565b856000815181106112d357fe5b60200260200101516140c5565b61131f82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614250915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061135e57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561139c57600080fd5b505af11580156113b0573d6000803e3d6000fd5b505050506113d584836001855103815181106113c857fe5b6020026020010151613ca6565b509695505050505050565b606061140d7f00000000000000000000000000000000000000000000000000000000000000008484614496565b90505b92915050565b60015460009081906001600160a01b0316331461147a576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b60006114a77f00000000000000000000000000000000000000000000000000000000000000008f8f613fda565b90506000876114b6578c6114ba565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561154957600080fd5b505af115801561155d573d6000803e3d6000fd5b505050506115708f8f8f8f8f8f8f612d7b565b809450819550505050509b509b9950505050505050505050565b606081428110156115e2576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611646576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6116a47f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e8e92505050565b915086826001845103815181106116b757fe5b602002602001015110156116fc5760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b61170c8686600081811061125257fe5b6113d582878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614250915050565b606081428110156117a3576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611807576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061184157fe5b905060200201356001600160a01b03166001600160a01b0316146118ac576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b61190a7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061449692505050565b9150868260008151811061191a57fe5b602002602001015111156112425760405162461bcd60e51b81526004018080602001828103825260258152602001806151196025913960400191505060405180910390fd5b6001546000906001600160a01b031633146119c1576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6000611a0e7f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000613fda565b9050600086611a1d578b611a21565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b50505050611ad68d8d8d8d8d8d61275c565b9d9c50505050505050505050505050565b8042811015611b3d576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611ba1576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b611c1685856000818110611bb157fe5b905060200201356001600160a01b031633611c107f000000000000000000000000000000000000000000000000000000000000000089896000818110611bf357fe5b905060200201356001600160a01b03168a8a60018181106112b157fe5b8a6140c5565b600085856000198101818110611c2857fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c8d57600080fd5b505afa158015611ca1573d6000803e3d6000fd5b505050506040513d6020811015611cb757600080fd5b50516040805160208881028281018201909352888252929350611cf99290918991899182918501908490808284376000920191909152508892506145ce915050565b86611dab8288886000198101818110611d0e57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611d7357600080fd5b505afa158015611d87573d6000803e3d6000fd5b505050506040513d6020811015611d9d57600080fd5b50519063ffffffff6148f916565b1015611de85760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b5050505050505050565b8042811015611e48576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611eac576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685856000198101818110611ee657fe5b905060200201356001600160a01b03166001600160a01b031614611f51576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b611f6185856000818110611bb157fe5b611f9f8585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506145ce915050565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b15801561202257600080fd5b505afa158015612036573d6000803e3d6000fd5b505050506040513d602081101561204c57600080fd5b505190508681101561208f5760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120f557600080fd5b505af1158015612109573d6000803e3d6000fd5b50505050611de88482613ca6565b6060814281101561216f576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166121d3576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061220a57fe5b905060200201356001600160a01b03166001600160a01b031614612275576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6122d37f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e8e92505050565b915086826001845103815181106122e657fe5b6020026020010151101561232b5760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061236757fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561239a57600080fd5b505af11580156123ae573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6124137f000000000000000000000000000000000000000000000000000000000000000089896000818110611bf357fe5b8460008151811061242057fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561247757600080fd5b505af115801561248b573d6000803e3d6000fd5b505050506040513d60208110156124a157600080fd5b50516124a957fe5b6124e882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614250915050565b5095945050505050565b6000611023848484614951565b60608142811015612557576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166125bb576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6126197f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061449692505050565b9150868260008151811061262957fe5b602002602001015111156116fc5760405162461bcd60e51b81526004018080602001828103825260258152602001806151196025913960400191505060405180910390fd5b6001546001600160a01b031633146126cd576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b60006020819052908152604090205460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611023848484614a41565b600081428110156127b4576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314612813576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b612842887f00000000000000000000000000000000000000000000000000000000000000008989893089612d7b565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506128df92508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156128ae57600080fd5b505afa1580156128c2573d6000803e3d6000fd5b505050506040513d60208110156128d857600080fd5b5051613b0e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561294557600080fd5b505af1158015612959573d6000803e3d6000fd5b505050506113d58483613ca6565b80428110156129bd576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16612a21576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685856000818110612a5857fe5b905060200201356001600160a01b03166001600160a01b031614612ac3576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2357600080fd5b505af1158015612b37573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612b9c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611bf357fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b505050506040513d6020811015612c1657600080fd5b5051612c1e57fe5b600086866000198101818110612c3057fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612c9557600080fd5b505afa158015612ca9573d6000803e3d6000fd5b505050506040513d6020811015612cbf57600080fd5b50516040805160208981028281018201909352898252929350612d019290918a918a9182918501908490808284376000920191909152508992506145ce915050565b87611dab8289896000198101818110612d1657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611d7357600080fd5b6000808242811015612dd4576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314612e33576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6000612e607f00000000000000000000000000000000000000000000000000000000000000008c8c613fda565b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612ed457600080fd5b505af1158015612ee8573d6000803e3d6000fd5b505050506040513d6020811015612efe57600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f6457600080fd5b505af1158015612f78573d6000803e3d6000fd5b505050506040513d6040811015612f8e57600080fd5b50805160209091015190925090506000612fa88e8e614aed565b509050806001600160a01b03168e6001600160a01b031614612fcb578183612fce565b82825b90975095508a8710156130125760405162461bcd60e51b81526004018080602001828103825260248152602001806150af6024913960400191505060405180910390fd5b898610156130515760405162461bcd60e51b81526004018080602001828103825260248152602001806151886024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606061140d7f00000000000000000000000000000000000000000000000000000000000000008484613e8e565b60015460009081906001600160a01b03163314613117576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b60006131647f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613fda565b9050600087613173578c613177565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561320657600080fd5b505af115801561321a573d6000803e3d6000fd5b5050505061322c8e8e8e8e8e8e610de3565b909f909e509c50505050505050505050505050565b6000806000834281101561329c576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b031633146132fb576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6133098c8c8c8c8c8c614bcb565b9094509250600061333b7f00000000000000000000000000000000000000000000000000000000000000008e8e613fda565b90506133498d3383886140c5565b6133558c3383876140c5565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156133ad57600080fd5b505af11580156133c1573d6000803e3d6000fd5b505050506040513d60208110156133d757600080fd5b5051949d939c50939a509198505050505050505050565b60008060008342811015613449576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b031633146134a8576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6134d68a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614bcb565b909450925060006135287f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613fda565b90506135368b3383886140c5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561359157600080fd5b505af11580156135a5573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561362a57600080fd5b505af115801561363e573d6000803e3d6000fd5b505050506040513d602081101561365457600080fd5b505161365c57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156136b457600080fd5b505af11580156136c8573d6000803e3d6000fd5b505050506040513d60208110156136de57600080fd5b50519250348410156136f6576136f633853403613ca6565b505096509650969350505050565b6060814281101561375c576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166137c0576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106137f757fe5b905060200201356001600160a01b03166001600160a01b031614613862576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6138c07f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061449692505050565b915034826000815181106138d057fe5b602002602001015111156139155760405162461bcd60e51b81526004018080602001828103825260258152602001806151196025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061395157fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561398457600080fd5b505af1158015613998573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6139fd7f000000000000000000000000000000000000000000000000000000000000000089896000818110611bf357fe5b84600081518110613a0a57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613a6157600080fd5b505af1158015613a75573d6000803e3d6000fd5b505050506040513d6020811015613a8b57600080fd5b5051613a9357fe5b613ad282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614250915050565b81600081518110613adf57fe5b60200260200101513411156124e8576124e83383600081518110613aff57fe5b60200260200101513403613ca6565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bb95780518252601f199092019160209182019101613b9a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c1b576040519150601f19603f3d011682016040523d82523d6000602084013e613c20565b606091505b5091509150818015613c4e575080511580613c4e5750808060200190516020811015613c4b57600080fd5b50515b613c9f576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613cf25780518252601f199092019160209182019101613cd3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613d54576040519150601f19603f3d011682016040523d82523d6000602084013e613d59565b606091505b5050905080613d995760405162461bcd60e51b81526004018080602001828103825260238152602001806150f66023913960400191505060405180910390fd5b505050565b6000808411613dde5760405162461bcd60e51b81526004018080602001828103825260298152602001806150106029913960400191505060405180910390fd5b600083118015613dee5750600082115b613e295760405162461bcd60e51b815260040180806020018281038252602681526020018061513e6026913960400191505060405180910390fd5b6000613e3d856126f763ffffffff614e7116565b90506000613e51828563ffffffff614e7116565b90506000613e7783613e6b8861271063ffffffff614e7116565b9063ffffffff614edd16565b9050808281613e8257fe5b04979650505050505050565b6060600282511015613ee7576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613eff57600080fd5b50604051908082528060200260200182016040528015613f29578160200160208202803683370190505b5090508281600081518110613f3a57fe5b60200260200101818152505060005b6001835103811015613fd257600080613f8c87868581518110613f6857fe5b6020026020010151878660010181518110613f7f57fe5b6020026020010151614f35565b91509150613fae848481518110613f9f57fe5b60200260200101518383613d9e565b848460010181518110613fbd57fe5b60209081029190910101525050600101613f49565b509392505050565b6000806000613fe98585614aed565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527fe45c3f6d80a13228fe001e53bf445c5a8f1a7a0248ddcf5e4a3ee22d0577d881609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b602083106141785780518252601f199092019160209182019101614159565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146141da576040519150601f19603f3d011682016040523d82523d6000602084013e6141df565b606091505b509150915081801561420d57508051158061420d575080806020019051602081101561420a57600080fd5b50515b6142485760405162461bcd60e51b81526004018080602001828103825260248152602001806151646024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156144905760008084838151811061426e57fe5b602002602001015185846001018151811061428557fe5b602002602001015191509150600061429d8383614aed565b50905060008785600101815181106142b157fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146142df578260006142e3565b6000835b91509150600060028a510388106142fa578861433b565b61433b7f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061432e57fe5b6020026020010151613fda565b90506143687f00000000000000000000000000000000000000000000000000000000000000008888613fda565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156143a5576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156144165781810151838201526020016143fe565b50505050905090810190601f1680156144435780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561446557600080fd5b505af1158015614479573d6000803e3d6000fd5b505060019099019850614253975050505050505050565b50505050565b60606002825110156144ef576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561450757600080fd5b50604051908082528060200260200182016040528015614531578160200160208202803683370190505b509050828160018351038151811061454557fe5b60209081029190910101528151600019015b8015613fd2576000806145878786600186038151811061457357fe5b6020026020010151878681518110613f7f57fe5b915091506145a984848151811061459a57fe5b60200260200101518383614951565b8460018503815181106145b857fe5b6020908102919091010152505060001901614557565b60005b6001835103811015613d99576000808483815181106145ec57fe5b602002602001015185846001018151811061460357fe5b602002602001015191509150600061461b8383614aed565b509050600061464b7f00000000000000000000000000000000000000000000000000000000000000008585613fda565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561468c57600080fd5b505afa1580156146a0573d6000803e3d6000fd5b505050506040513d60608110156146b657600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a8116908916146146f35782846146f6565b83835b91509150614754828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611d7357600080fd5b9550614761868383613d9e565b945050505050600080856001600160a01b0316886001600160a01b03161461478b5782600061478f565b6000835b91509150600060028c51038a106147a6578a6147da565b6147da7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061432e57fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b8381101561487d578181015183820152602001614865565b50505050905090810190601f1680156148aa5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156148cc57600080fd5b505af11580156148e0573d6000803e3d6000fd5b50506001909b019a506145d19950505050505050505050565b80820382811115611410576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b60008084116149915760405162461bcd60e51b815260040180806020018281038252602a815260200180615039602a913960400191505060405180910390fd5b6000831180156149a15750600082115b6149dc5760405162461bcd60e51b815260040180806020018281038252602681526020018061513e6026913960400191505060405180910390fd5b6000614a006127106149f4868863ffffffff614e7116565b9063ffffffff614e7116565b90506000614a1a6126f76149f4868963ffffffff6148f916565b9050614a376001828481614a2a57fe5b049063ffffffff614edd16565b9695505050505050565b6000808411614a815760405162461bcd60e51b81526004018080602001828103825260238152602001806150d36023913960400191505060405180910390fd5b600083118015614a915750600082115b614acc5760405162461bcd60e51b815260040180806020018281038252602681526020018061513e6026913960400191505060405180910390fd5b82614add858463ffffffff614e7116565b81614ae457fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415614b415760405162461bcd60e51b815260040180806020018281038252602381526020018061508c6023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610614b61578284614b64565b83835b90925090506001600160a01b038216614bc4576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614c5e57600080fd5b505afa158015614c72573d6000803e3d6000fd5b505050506040513d6020811015614c8857600080fd5b50516001600160a01b03161415614d5457604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b158015614d2757600080fd5b505af1158015614d3b573d6000803e3d6000fd5b505050506040513d6020811015614d5157600080fd5b50505b600080614d827f00000000000000000000000000000000000000000000000000000000000000008b8b614f35565b91509150816000148015614d94575080155b15614da457879350869250614e64565b6000614db1898484614a41565b9050878111614e045785811015614df95760405162461bcd60e51b81526004018080602001828103825260248152602001806151886024913960400191505060405180910390fd5b889450925082614e62565b6000614e11898486614a41565b905089811115614e1d57fe5b87811015614e5c5760405162461bcd60e51b81526004018080602001828103825260248152602001806150af6024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000811580614e8c57505080820282828281614e8957fe5b04145b611410576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820182811015611410576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000614f448585614aed565b509050614f52868686613fda565b50600080614f61888888613fda565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015614f9957600080fd5b505afa158015614fad573d6000803e3d6000fd5b505050506040513d6060811015614fc357600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614614ffd578082615000565b81815b9099909850965050505050505056fe50616e63616b654c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b65526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b654c6962726172793a204944454e544943414c5f41444452455353455350616e63616b65526f757465723a20494e53554646494349454e545f415f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c454450616e63616b65526f757465723a204558434553534956455f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450616e63616b65526f757465723a20494e53554646494349454e545f425f414d4f554e54a2646970667358221220ad14a39b81e9a95a23c657e54cd4c9ac453459bd42ddeb03d606ddd553fd0d7464736f6c63430006060033",
|
|
1042
|
-
"deployedBytecode": "0x6080604052600436106101bb5760003560e01c8063880cdc31116100ec578063baa2abde1161008a578063ded9382a11610064578063ded9382a14610c24578063e8e3370014610c97578063f305d71914610d17578063fb3bdb4114610d5d576101f4565b8063baa2abde14610afb578063c45a015514610b58578063d06ca61f14610b6d576101f4565b8063ad5c4648116100c6578063ad5c4648146109d7578063ad615dec146109ec578063af2979eb14610a22578063b6f9de9514610a75576101f4565b8063880cdc311461092c5780638da5cb5b1461095f5780639b19251a14610990576101f4565b80634a25d94a11610159578063791ac94711610133578063791ac947146107405780637ff36ab5146107d857806385f8c2591461085e5780638803dbee14610894576101f4565b80634a25d94a1461059d5780635b0d5984146106355780635c11d795146106a8576101f4565b806318cbafe51161019557806318cbafe5146102e85780631f00ca74146103d05780632195995c1461048757806338ed173914610505576101f4565b806302751cec146101f957806304c8c10014610265578063054d50d4146102a0576101f4565b366101f457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101f257fe5b005b600080fd5b34801561020557600080fd5b5061024c600480360360c081101561021c57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610de3565b6040805192835260208301919091528051918290030190f35b34801561027157600080fd5b506101f26004803603604081101561028857600080fd5b506001600160a01b0381351690602001351515610f6e565b3480156102ac57600080fd5b506102d6600480360360608110156102c357600080fd5b5080359060208101359060400135611016565b60408051918252519081900360200190f35b3480156102f457600080fd5b50610380600480360360a081101561030b57600080fd5b81359160208101359181019060608101604082013564010000000081111561033257600080fd5b82018360208201111561034457600080fd5b8035906020019184602083028401116401000000008311171561036657600080fd5b91935091506001600160a01b03813516906020013561102b565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103bc5781810151838201526020016103a4565b505050509050019250505060405180910390f35b3480156103dc57600080fd5b50610380600480360360408110156103f357600080fd5b8135919081019060408101602082013564010000000081111561041557600080fd5b82018360208201111561042757600080fd5b8035906020019184602083028401116401000000008311171561044957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506113e0945050505050565b34801561049357600080fd5b5061024c60048036036101608110156104ab57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611416565b34801561051157600080fd5b50610380600480360360a081101561052857600080fd5b81359160208101359181019060608101604082013564010000000081111561054f57600080fd5b82018360208201111561056157600080fd5b8035906020019184602083028401116401000000008311171561058357600080fd5b91935091506001600160a01b03813516906020013561158a565b3480156105a957600080fd5b50610380600480360360a08110156105c057600080fd5b8135916020810135918101906060810160408201356401000000008111156105e757600080fd5b8201836020820111156105f957600080fd5b8035906020019184602083028401116401000000008311171561061b57600080fd5b91935091506001600160a01b03813516906020013561174b565b34801561064157600080fd5b506102d6600480360361014081101561065957600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561195f565b3480156106b457600080fd5b506101f2600480360360a08110156106cb57600080fd5b8135916020810135918101906060810160408201356401000000008111156106f257600080fd5b82018360208201111561070457600080fd5b8035906020019184602083028401116401000000008311171561072657600080fd5b91935091506001600160a01b038135169060200135611ae7565b34801561074c57600080fd5b506101f2600480360360a081101561076357600080fd5b81359160208101359181019060608101604082013564010000000081111561078a57600080fd5b82018360208201111561079c57600080fd5b803590602001918460208302840111640100000000831117156107be57600080fd5b91935091506001600160a01b038135169060200135611df2565b610380600480360360808110156107ee57600080fd5b8135919081019060408101602082013564010000000081111561081057600080fd5b82018360208201111561082257600080fd5b8035906020019184602083028401116401000000008311171561084457600080fd5b91935091506001600160a01b038135169060200135612117565b34801561086a57600080fd5b506102d66004803603606081101561088157600080fd5b50803590602081013590604001356124f2565b3480156108a057600080fd5b50610380600480360360a08110156108b757600080fd5b8135916020810135918101906060810160408201356401000000008111156108de57600080fd5b8201836020820111156108f057600080fd5b8035906020019184602083028401116401000000008311171561091257600080fd5b91935091506001600160a01b0381351690602001356124ff565b34801561093857600080fd5b506101f26004803603602081101561094f57600080fd5b50356001600160a01b031661266e565b34801561096b57600080fd5b50610974612707565b604080516001600160a01b039092168252519081900360200190f35b34801561099c57600080fd5b506109c3600480360360208110156109b357600080fd5b50356001600160a01b0316612716565b604080519115158252519081900360200190f35b3480156109e357600080fd5b5061097461272b565b3480156109f857600080fd5b506102d660048036036060811015610a0f57600080fd5b508035906020810135906040013561274f565b348015610a2e57600080fd5b506102d6600480360360c0811015610a4557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561275c565b6101f260048036036080811015610a8b57600080fd5b81359190810190604081016020820135640100000000811115610aad57600080fd5b820183602082011115610abf57600080fd5b80359060200191846020830284011164010000000083111715610ae157600080fd5b91935091506001600160a01b038135169060200135612967565b348015610b0757600080fd5b5061024c600480360360e0811015610b1e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d7b565b348015610b6457600080fd5b50610974613062565b348015610b7957600080fd5b5061038060048036036040811015610b9057600080fd5b81359190810190604081016020820135640100000000811115610bb257600080fd5b820183602082011115610bc457600080fd5b80359060200191846020830284011164010000000083111715610be657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613086945050505050565b348015610c3057600080fd5b5061024c6004803603610140811015610c4857600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130b3565b348015610ca357600080fd5b50610cf96004803603610100811015610cbb57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613241565b60408051938452602084019290925282820152519081900360600190f35b610cf9600480360360c0811015610d2d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a001356133ee565b61038060048036036080811015610d7357600080fd5b81359190810190604081016020820135640100000000811115610d9557600080fd5b820183602082011115610da757600080fd5b80359060200191846020830284011164010000000083111715610dc957600080fd5b91935091506001600160a01b038135169060200135613704565b6000808242811015610e3c576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314610e9b576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b610eca897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d7b565b9093509150610eda898685613b0e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f4057600080fd5b505af1158015610f54573d6000803e3d6000fd5b50505050610f628583613ca6565b50965096945050505050565b6001546001600160a01b03163314610fcd576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6001600160a01b0391909116600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000611023848484613d9e565b949350505050565b60608142811015611083576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166110e7576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061112157fe5b905060200201356001600160a01b03166001600160a01b03161461118c576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6111ea7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e8e92505050565b915086826001845103815181106111fd57fe5b602002602001015110156112425760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b6112e08686600081811061125257fe5b905060200201356001600160a01b0316336112c67f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061129457fe5b905060200201356001600160a01b03168b8b60018181106112b157fe5b905060200201356001600160a01b0316613fda565b856000815181106112d357fe5b60200260200101516140c5565b61131f82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614250915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061135e57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561139c57600080fd5b505af11580156113b0573d6000803e3d6000fd5b505050506113d584836001855103815181106113c857fe5b6020026020010151613ca6565b509695505050505050565b606061140d7f00000000000000000000000000000000000000000000000000000000000000008484614496565b90505b92915050565b60015460009081906001600160a01b0316331461147a576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b60006114a77f00000000000000000000000000000000000000000000000000000000000000008f8f613fda565b90506000876114b6578c6114ba565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561154957600080fd5b505af115801561155d573d6000803e3d6000fd5b505050506115708f8f8f8f8f8f8f612d7b565b809450819550505050509b509b9950505050505050505050565b606081428110156115e2576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611646576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6116a47f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e8e92505050565b915086826001845103815181106116b757fe5b602002602001015110156116fc5760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b61170c8686600081811061125257fe5b6113d582878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614250915050565b606081428110156117a3576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611807576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061184157fe5b905060200201356001600160a01b03166001600160a01b0316146118ac576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b61190a7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061449692505050565b9150868260008151811061191a57fe5b602002602001015111156112425760405162461bcd60e51b81526004018080602001828103825260258152602001806151196025913960400191505060405180910390fd5b6001546000906001600160a01b031633146119c1576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6000611a0e7f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000613fda565b9050600086611a1d578b611a21565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b50505050611ad68d8d8d8d8d8d61275c565b9d9c50505050505050505050505050565b8042811015611b3d576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611ba1576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b611c1685856000818110611bb157fe5b905060200201356001600160a01b031633611c107f000000000000000000000000000000000000000000000000000000000000000089896000818110611bf357fe5b905060200201356001600160a01b03168a8a60018181106112b157fe5b8a6140c5565b600085856000198101818110611c2857fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c8d57600080fd5b505afa158015611ca1573d6000803e3d6000fd5b505050506040513d6020811015611cb757600080fd5b50516040805160208881028281018201909352888252929350611cf99290918991899182918501908490808284376000920191909152508892506145ce915050565b86611dab8288886000198101818110611d0e57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611d7357600080fd5b505afa158015611d87573d6000803e3d6000fd5b505050506040513d6020811015611d9d57600080fd5b50519063ffffffff6148f916565b1015611de85760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b5050505050505050565b8042811015611e48576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611eac576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685856000198101818110611ee657fe5b905060200201356001600160a01b03166001600160a01b031614611f51576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b611f6185856000818110611bb157fe5b611f9f8585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506145ce915050565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b15801561202257600080fd5b505afa158015612036573d6000803e3d6000fd5b505050506040513d602081101561204c57600080fd5b505190508681101561208f5760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120f557600080fd5b505af1158015612109573d6000803e3d6000fd5b50505050611de88482613ca6565b6060814281101561216f576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166121d3576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061220a57fe5b905060200201356001600160a01b03166001600160a01b031614612275576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6122d37f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e8e92505050565b915086826001845103815181106122e657fe5b6020026020010151101561232b5760405162461bcd60e51b81526004018080602001828103825260298152602001806150636029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061236757fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561239a57600080fd5b505af11580156123ae573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6124137f000000000000000000000000000000000000000000000000000000000000000089896000818110611bf357fe5b8460008151811061242057fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561247757600080fd5b505af115801561248b573d6000803e3d6000fd5b505050506040513d60208110156124a157600080fd5b50516124a957fe5b6124e882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614250915050565b5095945050505050565b6000611023848484614951565b60608142811015612557576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166125bb576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6126197f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061449692505050565b9150868260008151811061262957fe5b602002602001015111156116fc5760405162461bcd60e51b81526004018080602001828103825260258152602001806151196025913960400191505060405180910390fd5b6001546001600160a01b031633146126cd576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b60006020819052908152604090205460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611023848484614a41565b600081428110156127b4576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314612813576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b612842887f00000000000000000000000000000000000000000000000000000000000000008989893089612d7b565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506128df92508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156128ae57600080fd5b505afa1580156128c2573d6000803e3d6000fd5b505050506040513d60208110156128d857600080fd5b5051613b0e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561294557600080fd5b505af1158015612959573d6000803e3d6000fd5b505050506113d58483613ca6565b80428110156129bd576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16612a21576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685856000818110612a5857fe5b905060200201356001600160a01b03166001600160a01b031614612ac3576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2357600080fd5b505af1158015612b37573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612b9c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611bf357fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b505050506040513d6020811015612c1657600080fd5b5051612c1e57fe5b600086866000198101818110612c3057fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612c9557600080fd5b505afa158015612ca9573d6000803e3d6000fd5b505050506040513d6020811015612cbf57600080fd5b50516040805160208981028281018201909352898252929350612d019290918a918a9182918501908490808284376000920191909152508992506145ce915050565b87611dab8289896000198101818110612d1657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611d7357600080fd5b6000808242811015612dd4576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314612e33576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6000612e607f00000000000000000000000000000000000000000000000000000000000000008c8c613fda565b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612ed457600080fd5b505af1158015612ee8573d6000803e3d6000fd5b505050506040513d6020811015612efe57600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f6457600080fd5b505af1158015612f78573d6000803e3d6000fd5b505050506040513d6040811015612f8e57600080fd5b50805160209091015190925090506000612fa88e8e614aed565b509050806001600160a01b03168e6001600160a01b031614612fcb578183612fce565b82825b90975095508a8710156130125760405162461bcd60e51b81526004018080602001828103825260248152602001806150af6024913960400191505060405180910390fd5b898610156130515760405162461bcd60e51b81526004018080602001828103825260248152602001806151886024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606061140d7f00000000000000000000000000000000000000000000000000000000000000008484613e8e565b60015460009081906001600160a01b03163314613117576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b60006131647f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613fda565b9050600087613173578c613177565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561320657600080fd5b505af115801561321a573d6000803e3d6000fd5b5050505061322c8e8e8e8e8e8e610de3565b909f909e509c50505050505050505050505050565b6000806000834281101561329c576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b031633146132fb576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6133098c8c8c8c8c8c614bcb565b9094509250600061333b7f00000000000000000000000000000000000000000000000000000000000000008e8e613fda565b90506133498d3383886140c5565b6133558c3383876140c5565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156133ad57600080fd5b505af11580156133c1573d6000803e3d6000fd5b505050506040513d60208110156133d757600080fd5b5051949d939c50939a509198505050505050505050565b60008060008342811015613449576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b031633146134a8576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6134d68a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614bcb565b909450925060006135287f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613fda565b90506135368b3383886140c5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561359157600080fd5b505af11580156135a5573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561362a57600080fd5b505af115801561363e573d6000803e3d6000fd5b505050506040513d602081101561365457600080fd5b505161365c57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156136b457600080fd5b505af11580156136c8573d6000803e3d6000fd5b505050506040513d60208110156136de57600080fd5b50519250348410156136f6576136f633853403613ca6565b505096509650969350505050565b6060814281101561375c576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166137c0576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106137f757fe5b905060200201356001600160a01b03166001600160a01b031614613862576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6138c07f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061449692505050565b915034826000815181106138d057fe5b602002602001015111156139155760405162461bcd60e51b81526004018080602001828103825260258152602001806151196025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061395157fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561398457600080fd5b505af1158015613998573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6139fd7f000000000000000000000000000000000000000000000000000000000000000089896000818110611bf357fe5b84600081518110613a0a57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613a6157600080fd5b505af1158015613a75573d6000803e3d6000fd5b505050506040513d6020811015613a8b57600080fd5b5051613a9357fe5b613ad282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614250915050565b81600081518110613adf57fe5b60200260200101513411156124e8576124e83383600081518110613aff57fe5b60200260200101513403613ca6565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bb95780518252601f199092019160209182019101613b9a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c1b576040519150601f19603f3d011682016040523d82523d6000602084013e613c20565b606091505b5091509150818015613c4e575080511580613c4e5750808060200190516020811015613c4b57600080fd5b50515b613c9f576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613cf25780518252601f199092019160209182019101613cd3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613d54576040519150601f19603f3d011682016040523d82523d6000602084013e613d59565b606091505b5050905080613d995760405162461bcd60e51b81526004018080602001828103825260238152602001806150f66023913960400191505060405180910390fd5b505050565b6000808411613dde5760405162461bcd60e51b81526004018080602001828103825260298152602001806150106029913960400191505060405180910390fd5b600083118015613dee5750600082115b613e295760405162461bcd60e51b815260040180806020018281038252602681526020018061513e6026913960400191505060405180910390fd5b6000613e3d856126f763ffffffff614e7116565b90506000613e51828563ffffffff614e7116565b90506000613e7783613e6b8861271063ffffffff614e7116565b9063ffffffff614edd16565b9050808281613e8257fe5b04979650505050505050565b6060600282511015613ee7576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613eff57600080fd5b50604051908082528060200260200182016040528015613f29578160200160208202803683370190505b5090508281600081518110613f3a57fe5b60200260200101818152505060005b6001835103811015613fd257600080613f8c87868581518110613f6857fe5b6020026020010151878660010181518110613f7f57fe5b6020026020010151614f35565b91509150613fae848481518110613f9f57fe5b60200260200101518383613d9e565b848460010181518110613fbd57fe5b60209081029190910101525050600101613f49565b509392505050565b6000806000613fe98585614aed565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527fe45c3f6d80a13228fe001e53bf445c5a8f1a7a0248ddcf5e4a3ee22d0577d881609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b602083106141785780518252601f199092019160209182019101614159565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146141da576040519150601f19603f3d011682016040523d82523d6000602084013e6141df565b606091505b509150915081801561420d57508051158061420d575080806020019051602081101561420a57600080fd5b50515b6142485760405162461bcd60e51b81526004018080602001828103825260248152602001806151646024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156144905760008084838151811061426e57fe5b602002602001015185846001018151811061428557fe5b602002602001015191509150600061429d8383614aed565b50905060008785600101815181106142b157fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146142df578260006142e3565b6000835b91509150600060028a510388106142fa578861433b565b61433b7f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061432e57fe5b6020026020010151613fda565b90506143687f00000000000000000000000000000000000000000000000000000000000000008888613fda565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156143a5576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156144165781810151838201526020016143fe565b50505050905090810190601f1680156144435780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561446557600080fd5b505af1158015614479573d6000803e3d6000fd5b505060019099019850614253975050505050505050565b50505050565b60606002825110156144ef576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561450757600080fd5b50604051908082528060200260200182016040528015614531578160200160208202803683370190505b509050828160018351038151811061454557fe5b60209081029190910101528151600019015b8015613fd2576000806145878786600186038151811061457357fe5b6020026020010151878681518110613f7f57fe5b915091506145a984848151811061459a57fe5b60200260200101518383614951565b8460018503815181106145b857fe5b6020908102919091010152505060001901614557565b60005b6001835103811015613d99576000808483815181106145ec57fe5b602002602001015185846001018151811061460357fe5b602002602001015191509150600061461b8383614aed565b509050600061464b7f00000000000000000000000000000000000000000000000000000000000000008585613fda565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561468c57600080fd5b505afa1580156146a0573d6000803e3d6000fd5b505050506040513d60608110156146b657600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a8116908916146146f35782846146f6565b83835b91509150614754828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611d7357600080fd5b9550614761868383613d9e565b945050505050600080856001600160a01b0316886001600160a01b03161461478b5782600061478f565b6000835b91509150600060028c51038a106147a6578a6147da565b6147da7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061432e57fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b8381101561487d578181015183820152602001614865565b50505050905090810190601f1680156148aa5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156148cc57600080fd5b505af11580156148e0573d6000803e3d6000fd5b50506001909b019a506145d19950505050505050505050565b80820382811115611410576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b60008084116149915760405162461bcd60e51b815260040180806020018281038252602a815260200180615039602a913960400191505060405180910390fd5b6000831180156149a15750600082115b6149dc5760405162461bcd60e51b815260040180806020018281038252602681526020018061513e6026913960400191505060405180910390fd5b6000614a006127106149f4868863ffffffff614e7116565b9063ffffffff614e7116565b90506000614a1a6126f76149f4868963ffffffff6148f916565b9050614a376001828481614a2a57fe5b049063ffffffff614edd16565b9695505050505050565b6000808411614a815760405162461bcd60e51b81526004018080602001828103825260238152602001806150d36023913960400191505060405180910390fd5b600083118015614a915750600082115b614acc5760405162461bcd60e51b815260040180806020018281038252602681526020018061513e6026913960400191505060405180910390fd5b82614add858463ffffffff614e7116565b81614ae457fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415614b415760405162461bcd60e51b815260040180806020018281038252602381526020018061508c6023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610614b61578284614b64565b83835b90925090506001600160a01b038216614bc4576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614c5e57600080fd5b505afa158015614c72573d6000803e3d6000fd5b505050506040513d6020811015614c8857600080fd5b50516001600160a01b03161415614d5457604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b158015614d2757600080fd5b505af1158015614d3b573d6000803e3d6000fd5b505050506040513d6020811015614d5157600080fd5b50505b600080614d827f00000000000000000000000000000000000000000000000000000000000000008b8b614f35565b91509150816000148015614d94575080155b15614da457879350869250614e64565b6000614db1898484614a41565b9050878111614e045785811015614df95760405162461bcd60e51b81526004018080602001828103825260248152602001806151886024913960400191505060405180910390fd5b889450925082614e62565b6000614e11898486614a41565b905089811115614e1d57fe5b87811015614e5c5760405162461bcd60e51b81526004018080602001828103825260248152602001806150af6024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000811580614e8c57505080820282828281614e8957fe5b04145b611410576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820182811015611410576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000614f448585614aed565b509050614f52868686613fda565b50600080614f61888888613fda565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015614f9957600080fd5b505afa158015614fad573d6000803e3d6000fd5b505050506040513d6060811015614fc357600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614614ffd578082615000565b81815b9099909850965050505050505056fe50616e63616b654c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b65526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b654c6962726172793a204944454e544943414c5f41444452455353455350616e63616b65526f757465723a20494e53554646494349454e545f415f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c454450616e63616b65526f757465723a204558434553534956455f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450616e63616b65526f757465723a20494e53554646494349454e545f425f414d4f554e54a2646970667358221220ad14a39b81e9a95a23c657e54cd4c9ac453459bd42ddeb03d606ddd553fd0d7464736f6c63430006060033",
|
|
1299
|
+
"bytecode": "0x60c060405260006002553480156200001657600080fd5b5060405162005d9038038062005d90833981810160405260408110156200003c57600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a052600180546001600160a01b0319163317905560805160601c60a05160601c615bed620001a3600039806101f75280611030528061106b528061128052806114b052806119c25280611b9b528061206d52806121925280612248528061238c52806124e4528061256c5280612abd5280612ba95280612c715280612db35280612e5a5280612ece52806138255280613b3f5280613b955280613bc95280613c3d5280613e535280613fa8528061403052508061132052806113f75280611576528061161052806117da5280611a625280611b795280611d785280612431528061259e52806127775280612f0052806131cc52806133f6528061341f5280613803528061399b5280613b735280613ef85280614062528061499052806149d35280614cb65280614e3c52806150dc52806154af528061557652806155f65250615bed6000f3fe6080604052600436106101e75760003560e01c8063880cdc3111610102578063baa2abde11610095578063ded9382a11610064578063ded9382a14610db3578063e8e3370014610e26578063f305d71914610ea6578063fb3bdb4114610eec57610220565b8063baa2abde14610beb578063c45a015514610c48578063d06ca61f14610c5d578063d0dc134314610d1457610220565b8063ad5c4648116100d1578063ad5c464814610ac7578063ad615dec14610adc578063af2979eb14610b12578063b6f9de9514610b6557610220565b8063880cdc31146109b85780638da5cb5b146109eb5780639581bafd14610a1c5780639b19251a14610a8057610220565b80634a25d94a1161017a578063791ac94711610149578063791ac947146107cc5780637ff36ab51461086457806385f8c259146108ea5780638803dbee1461092057610220565b80634a25d94a146106145780635b0d5984146106ac5780635c11d7951461071f5780635f6285db146107b757610220565b80631f00ca74116101b65780631f00ca74146103fc5780632195995c146104b357806338ed1739146105315780634868b0f5146105c957610220565b806302751cec1461022557806304c8c10014610291578063054d50d4146102cc57806318cbafe51461031457610220565b3661022057336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461021e57fe5b005b600080fd5b34801561023157600080fd5b50610278600480360360c081101561024857600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610f72565b6040805192835260208301919091528051918290030190f35b34801561029d57600080fd5b5061021e600480360360408110156102b457600080fd5b506001600160a01b03813516906020013515156110fd565b3480156102d857600080fd5b50610302600480360360608110156102ef57600080fd5b50803590602081013590604001356111a5565b60408051918252519081900360200190f35b34801561032057600080fd5b506103ac600480360360a081101561033757600080fd5b81359160208101359181019060608101604082013564010000000081111561035e57600080fd5b82018360208201111561037057600080fd5b8035906020019184602083028401116401000000008311171561039257600080fd5b91935091506001600160a01b0381351690602001356111ba565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103e85781810151838201526020016103d0565b505050509050019250505060405180910390f35b34801561040857600080fd5b506103ac6004803603604081101561041f57600080fd5b8135919081019060408101602082013564010000000081111561044157600080fd5b82018360208201111561045357600080fd5b8035906020019184602083028401116401000000008311171561047557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061156f945050505050565b3480156104bf57600080fd5b5061027860048036036101608110156104d757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff61010082013516906101208101359061014001356115a5565b34801561053d57600080fd5b506103ac600480360360a081101561055457600080fd5b81359160208101359181019060608101604082013564010000000081111561057b57600080fd5b82018360208201111561058d57600080fd5b803590602001918460208302840111640100000000831117156105af57600080fd5b91935091506001600160a01b038135169060200135611719565b3480156105d557600080fd5b506105f3600480360360208110156105ec57600080fd5b50356118da565b604080519283526001600160a01b0390911660208301528051918290030190f35b34801561062057600080fd5b506103ac600480360360a081101561063757600080fd5b81359160208101359181019060608101604082013564010000000081111561065e57600080fd5b82018360208201111561067057600080fd5b8035906020019184602083028401116401000000008311171561069257600080fd5b91935091506001600160a01b0381351690602001356118fc565b3480156106b857600080fd5b5061030260048036036101408110156106d057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611b10565b34801561072b57600080fd5b5061021e600480360360a081101561074257600080fd5b81359160208101359181019060608101604082013564010000000081111561076957600080fd5b82018360208201111561077b57600080fd5b8035906020019184602083028401116401000000008311171561079d57600080fd5b91935091506001600160a01b038135169060200135611c98565b3480156107c357600080fd5b50610302611fa3565b3480156107d857600080fd5b5061021e600480360360a08110156107ef57600080fd5b81359160208101359181019060608101604082013564010000000081111561081657600080fd5b82018360208201111561082857600080fd5b8035906020019184602083028401116401000000008311171561084a57600080fd5b91935091506001600160a01b038135169060200135611fa9565b6103ac6004803603608081101561087a57600080fd5b8135919081019060408101602082013564010000000081111561089c57600080fd5b8201836020820111156108ae57600080fd5b803590602001918460208302840111640100000000831117156108d057600080fd5b91935091506001600160a01b0381351690602001356122ce565b3480156108f657600080fd5b506103026004803603606081101561090d57600080fd5b50803590602081013590604001356126a9565b34801561092c57600080fd5b506103ac600480360360a081101561094357600080fd5b81359160208101359181019060608101604082013564010000000081111561096a57600080fd5b82018360208201111561097c57600080fd5b8035906020019184602083028401116401000000008311171561099e57600080fd5b91935091506001600160a01b0381351690602001356126b6565b3480156109c457600080fd5b5061021e600480360360208110156109db57600080fd5b50356001600160a01b0316612825565b3480156109f757600080fd5b50610a006128be565b604080516001600160a01b039092168252519081900360200190f35b348015610a2857600080fd5b506102786004803603610100811015610a4057600080fd5b508035906001600160a01b036020820135811691604081013582169160608201359160808101359160a08201359160c08101359091169060e001356128cd565b348015610a8c57600080fd5b50610ab360048036036020811015610aa357600080fd5b50356001600160a01b0316612aa6565b604080519115158252519081900360200190f35b348015610ad357600080fd5b50610a00612abb565b348015610ae857600080fd5b5061030260048036036060811015610aff57600080fd5b5080359060208101359060400135612adf565b348015610b1e57600080fd5b50610302600480360360c0811015610b3557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612aec565b61021e60048036036080811015610b7b57600080fd5b81359190810190604081016020820135640100000000811115610b9d57600080fd5b820183602082011115610baf57600080fd5b80359060200191846020830284011164010000000083111715610bd157600080fd5b91935091506001600160a01b038135169060200135612cf7565b348015610bf757600080fd5b50610278600480360360e0811015610c0e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c0013561310b565b348015610c5457600080fd5b50610a006133f4565b348015610c6957600080fd5b506103ac60048036036040811015610c8057600080fd5b81359190810190604081016020820135640100000000811115610ca257600080fd5b820183602082011115610cb457600080fd5b80359060200191846020830284011164010000000083111715610cd657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613418945050505050565b348015610d2057600080fd5b50610d4d60048036036040811015610d3757600080fd5b50803590602001356001600160a01b0316613445565b60408051998a526dffffffffffffffffffffffffffff98891660208b015296909716888701526001600160a01b03948516606089015292909316608087015260a086015260c085019190915260e084015261010083019190915251908190036101200190f35b348015610dbf57600080fd5b506102786004803603610140811015610dd757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135613798565b348015610e3257600080fd5b50610e886004803603610100811015610e4a57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613926565b60408051938452602084019290925282820152519081900360600190f35b610e88600480360360c0811015610ebc57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135613a7f565b6103ac60048036036080811015610f0257600080fd5b81359190810190604081016020820135640100000000811115610f2457600080fd5b820183602082011115610f3657600080fd5b80359060200191846020830284011164010000000083111715610f5857600080fd5b91935091506001600160a01b038135169060200135613d95565b6000808242811015610fcb576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316331461102a576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b611059897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a61310b565b909350915061106989868561419f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110cf57600080fd5b505af11580156110e3573d6000803e3d6000fd5b505050506110f18583614337565b50965096945050505050565b6001546001600160a01b0316331461115c576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6001600160a01b0391909116600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60006111b284848461442f565b949350505050565b60608142811015611212576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611276576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106112b057fe5b905060200201356001600160a01b03166001600160a01b03161461131b576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6113797f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061451f92505050565b9150868260018451038151811061138c57fe5b602002602001015110156113d15760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b61146f868660008181106113e157fe5b905060200201356001600160a01b0316336114557f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061142357fe5b905060200201356001600160a01b03168b8b600181811061144057fe5b905060200201356001600160a01b031661466b565b8560008151811061146257fe5b6020026020010151614756565b6114ae828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506148e1915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855103815181106114ed57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561152b57600080fd5b505af115801561153f573d6000803e3d6000fd5b50505050611564848360018551038151811061155757fe5b6020026020010151614337565b509695505050505050565b606061159c7f00000000000000000000000000000000000000000000000000000000000000008484614b27565b90505b92915050565b60015460009081906001600160a01b03163314611609576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b60006116367f00000000000000000000000000000000000000000000000000000000000000008f8f61466b565b9050600087611645578c611649565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156116d857600080fd5b505af11580156116ec573d6000803e3d6000fd5b505050506116ff8f8f8f8f8f8f8f61310b565b809450819550505050509b509b9950505050505050505050565b60608142811015611771576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166117d5576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6118337f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061451f92505050565b9150868260018451038151811061184657fe5b6020026020010151101561188b5760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b61189b868660008181106113e157fe5b611564828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506148e1915050565b600360205260009081526040902080546001909101546001600160a01b031682565b60608142811015611954576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166119b8576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106119f257fe5b905060200201356001600160a01b03166001600160a01b031614611a5d576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b611abb7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b2792505050565b91508682600081518110611acb57fe5b602002602001015111156113d15760405162461bcd60e51b8152600401808060200182810382526025815260200180615b256025913960400191505060405180910390fd5b6001546000906001600160a01b03163314611b72576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6000611bbf7f00000000000000000000000000000000000000000000000000000000000000008d7f000000000000000000000000000000000000000000000000000000000000000061466b565b9050600086611bce578b611bd2565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611c6157600080fd5b505af1158015611c75573d6000803e3d6000fd5b50505050611c878d8d8d8d8d8d612aec565b9d9c50505050505050505050505050565b8042811015611cee576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611d52576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b611dc785856000818110611d6257fe5b905060200201356001600160a01b031633611dc17f000000000000000000000000000000000000000000000000000000000000000089896000818110611da457fe5b905060200201356001600160a01b03168a8a600181811061144057fe5b8a614756565b600085856000198101818110611dd957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516040805160208881028281018201909352888252929350611eaa929091899189918291850190849080828437600092019190915250889250614c5f915050565b86611f5c8288886000198101818110611ebf57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611f2457600080fd5b505afa158015611f38573d6000803e3d6000fd5b505050506040513d6020811015611f4e57600080fd5b50519063ffffffff614f8a16565b1015611f995760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b5050505050505050565b60025481565b8042811015611fff576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16612063576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061209d57fe5b905060200201356001600160a01b03166001600160a01b031614612108576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b61211885856000818110611d6257fe5b612156858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614c5f915050565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b1580156121d957600080fd5b505afa1580156121ed573d6000803e3d6000fd5b505050506040513d602081101561220357600080fd5b50519050868110156122465760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156122ac57600080fd5b505af11580156122c0573d6000803e3d6000fd5b50505050611f998482614337565b60608142811015612326576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff1661238a576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106123c157fe5b905060200201356001600160a01b03166001600160a01b03161461242c576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b61248a7f00000000000000000000000000000000000000000000000000000000000000003488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061451f92505050565b9150868260018451038151811061249d57fe5b602002602001015110156124e25760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061251e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561255157600080fd5b505af1158015612565573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6125ca7f000000000000000000000000000000000000000000000000000000000000000089896000818110611da457fe5b846000815181106125d757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561262e57600080fd5b505af1158015612642573d6000803e3d6000fd5b505050506040513d602081101561265857600080fd5b505161266057fe5b61269f828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506148e1915050565b5095945050505050565b60006111b2848484614fe2565b6060814281101561270e576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16612772576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6127d07f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b2792505050565b915086826000815181106127e057fe5b6020026020010151111561188b5760405162461bcd60e51b8152600401808060200182810382526025815260200180615b256025913960400191505060405180910390fd5b6001546001600160a01b03163314612884576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b6000808242811015612926576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b60008b8152600360205260409020548811156129735760405162461bcd60e51b8152600401808060200182810382526036815260200180615aa96036913960400191505060405180910390fd5b6129808a8a8a888f6150d2565b9093509150868310156129c45760405162461bcd60e51b8152600401808060200182810382526024815260200180615a856024913960400191505060405180910390fd5b85821015612a035760405162461bcd60e51b8152600401808060200182810382526024815260200180615b946024913960400191505060405180910390fd5b60008b815260036020526040902054612a22908963ffffffff614f8a16565b60008c8152600360209081526040918290209290925580518d81529182018a90526001600160a01b03808d1683830152606083018690528b16608083015260a082018490524260c0830152517f6b7bcec24e45232420f33f8e201718bc557530aaa86bcee4ea5091a89bab877e9181900360e00190a1509850989650505050505050565b60006020819052908152604090205460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006111b28484846152db565b60008142811015612b44576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314612ba3576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b612bd2887f0000000000000000000000000000000000000000000000000000000000000000898989308961310b565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051919450612c6f92508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015612c3e57600080fd5b505afa158015612c52573d6000803e3d6000fd5b505050506040513d6020811015612c6857600080fd5b505161419f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612cd557600080fd5b505af1158015612ce9573d6000803e3d6000fd5b505050506115648483614337565b8042811015612d4d576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16612db1576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685856000818110612de857fe5b905060200201356001600160a01b03166001600160a01b031614612e53576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612eb357600080fd5b505af1158015612ec7573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612f2c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611da457fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d6020811015612fa657600080fd5b5051612fae57fe5b600086866000198101818110612fc057fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561302557600080fd5b505afa158015613039573d6000803e3d6000fd5b505050506040513d602081101561304f57600080fd5b505160408051602089810282810182019093528982529293506130919290918a918a918291850190849080828437600092019190915250899250614c5f915050565b87611f5c82898960001981018181106130a657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611f2457600080fd5b60015460009081906001600160a01b0316331461316f576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b82428110156131c5576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b60006131f27f00000000000000000000000000000000000000000000000000000000000000008c8c61466b565b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561326657600080fd5b505af115801561327a573d6000803e3d6000fd5b505050506040513d602081101561329057600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050506040513d604081101561332057600080fd5b5080516020909101519092509050600061333a8e8e615387565b509050806001600160a01b03168e6001600160a01b03161461335d578183613360565b82825b90975095508a8710156133a45760405162461bcd60e51b8152600401808060200182810382526024815260200180615a856024913960400191505060405180910390fd5b898610156133e35760405162461bcd60e51b8152600401808060200182810382526024815260200180615b946024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606061159c7f0000000000000000000000000000000000000000000000000000000000000000848461451f565b600080600080600080600080600061345b61599c565b5060008b8152600360209081526040918290208251808401845281548082526001909201546001600160a01b031692810183905283517f0902f1ac0000000000000000000000000000000000000000000000000000000081529351919c5092630902f1ac916004808301926060929190829003018186803b1580156134df57600080fd5b505afa1580156134f3573d6000803e3d6000fd5b505050506040513d606081101561350957600080fd5b50805160209182015183830151604080517f0dfe16810000000000000000000000000000000000000000000000000000000081529051939d50919b506001600160a01b031692630dfe168192600480840193829003018186803b15801561356f57600080fd5b505afa158015613583573d6000803e3d6000fd5b505050506040513d602081101561359957600080fd5b5051602082810151604080517fd21220a70000000000000000000000000000000000000000000000000000000081529051939a506001600160a01b039091169263d21220a792600480840193919291829003018186803b1580156135fc57600080fd5b505afa158015613610573d6000803e3d6000fd5b505050506040513d602081101561362657600080fd5b5051602082810151604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290519399506001600160a01b03909116926318160ddd92600480840193919291829003018186803b15801561368957600080fd5b505afa15801561369d573d6000803e3d6000fd5b505050506040513d60208110156136b357600080fd5b8101908080519060200190929190505050945080602001516001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561372057600080fd5b505afa158015613734573d6000803e3d6000fd5b505050506040513d602081101561374a57600080fd5b50519350846dffffffffffffffffffffffffffff8a1685028161376957fe5b0492508484896dffffffffffffffffffffffffffff16028161378757fe5b049150509295985092959850929598565b60015460009081906001600160a01b031633146137fc576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b60006138497f00000000000000000000000000000000000000000000000000000000000000008e7f000000000000000000000000000000000000000000000000000000000000000061466b565b9050600087613858578c61385c565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156138eb57600080fd5b505af11580156138ff573d6000803e3d6000fd5b505050506139118e8e8e8e8e8e610f72565b909f909e509c50505050505050505050505050565b60008060008342811015613981576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b61398f8c8c8c8c8c8c615465565b909450925060006139c17f00000000000000000000000000000000000000000000000000000000000000008e8e61466b565b90506139cf8d338388614756565b6139db8c338387614756565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015613a3357600080fd5b505af1158015613a47573d6000803e3d6000fd5b505050506040513d6020811015613a5d57600080fd5b50519250613a6f8d8d8787878661570b565b5050985098509895505050505050565b60008060008342811015613ada576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314613b39576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b613b678a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c615465565b90945092506000613bb97f00000000000000000000000000000000000000000000000000000000000000008c7f000000000000000000000000000000000000000000000000000000000000000061466b565b9050613bc78b338388614756565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015613c2257600080fd5b505af1158015613c36573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613cbb57600080fd5b505af1158015613ccf573d6000803e3d6000fd5b505050506040513d6020811015613ce557600080fd5b5051613ced57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015613d4557600080fd5b505af1158015613d59573d6000803e3d6000fd5b505050506040513d6020811015613d6f57600080fd5b5051925034841015613d8757613d8733853403614337565b505096509650969350505050565b60608142811015613ded576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16613e51576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110613e8857fe5b905060200201356001600160a01b03166001600160a01b031614613ef3576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b613f517f000000000000000000000000000000000000000000000000000000000000000088888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b2792505050565b91503482600081518110613f6157fe5b60200260200101511115613fa65760405162461bcd60e51b8152600401808060200182810382526025815260200180615b256025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110613fe257fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561401557600080fd5b505af1158015614029573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb61408e7f000000000000000000000000000000000000000000000000000000000000000089896000818110611da457fe5b8460008151811061409b57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156140f257600080fd5b505af1158015614106573d6000803e3d6000fd5b505050506040513d602081101561411c57600080fd5b505161412457fe5b614163828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506148e1915050565b8160008151811061417057fe5b602002602001015134111561269f5761269f338360008151811061419057fe5b60200260200101513403614337565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061424a5780518252601f19909201916020918201910161422b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142ac576040519150601f19603f3d011682016040523d82523d6000602084013e6142b1565b606091505b50915091508180156142df5750805115806142df57508080602001905160208110156142dc57600080fd5b50515b614330576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106143835780518252601f199092019160209182019101614364565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146143e5576040519150601f19603f3d011682016040523d82523d6000602084013e6143ea565b606091505b505090508061442a5760405162461bcd60e51b8152600401808060200182810382526023815260200180615b026023913960400191505060405180910390fd5b505050565b600080841161446f5760405162461bcd60e51b81526004018080602001828103825260298152602001806159b46029913960400191505060405180910390fd5b60008311801561447f5750600082115b6144ba5760405162461bcd60e51b8152600401808060200182810382526026815260200180615b4a6026913960400191505060405180910390fd5b60006144ce856126f763ffffffff6157fe16565b905060006144e2828563ffffffff6157fe16565b90506000614508836144fc8861271063ffffffff6157fe16565b9063ffffffff61586a16565b905080828161451357fe5b04979650505050505050565b6060600282511015614578576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561459057600080fd5b506040519080825280602002602001820160405280156145ba578160200160208202803683370190505b50905082816000815181106145cb57fe5b60200260200101818152505060005b60018351038110156146635760008061461d878685815181106145f957fe5b602002602001015187866001018151811061461057fe5b60200260200101516158c2565b9150915061463f84848151811061463057fe5b6020026020010151838361442f565b84846001018151811061464e57fe5b602090810291909101015250506001016145da565b509392505050565b600080600061467a8585615387565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527fe45c3f6d80a13228fe001e53bf445c5a8f1a7a0248ddcf5e4a3ee22d0577d881609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b602083106148095780518252601f1990920191602091820191016147ea565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461486b576040519150601f19603f3d011682016040523d82523d6000602084013e614870565b606091505b509150915081801561489e57508051158061489e575080806020019051602081101561489b57600080fd5b50515b6148d95760405162461bcd60e51b8152600401808060200182810382526024815260200180615b706024913960400191505060405180910390fd5b505050505050565b60005b6001835103811015614b21576000808483815181106148ff57fe5b602002602001015185846001018151811061491657fe5b602002602001015191509150600061492e8383615387565b509050600087856001018151811061494257fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461497057826000614974565b6000835b91509150600060028a5103881061498b57886149cc565b6149cc7f0000000000000000000000000000000000000000000000000000000000000000878c8b600201815181106149bf57fe5b602002602001015161466b565b90506149f97f0000000000000000000000000000000000000000000000000000000000000000888861466b565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015614a36576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614aa7578181015183820152602001614a8f565b50505050905090810190601f168015614ad45780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614af657600080fd5b505af1158015614b0a573d6000803e3d6000fd5b5050600190990198506148e4975050505050505050565b50505050565b6060600282511015614b80576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015614b9857600080fd5b50604051908082528060200260200182016040528015614bc2578160200160208202803683370190505b5090508281600183510381518110614bd657fe5b60209081029190910101528151600019015b801561466357600080614c1887866001860381518110614c0457fe5b602002602001015187868151811061461057fe5b91509150614c3a848481518110614c2b57fe5b60200260200101518383614fe2565b846001850381518110614c4957fe5b6020908102919091010152505060001901614be8565b60005b600183510381101561442a57600080848381518110614c7d57fe5b6020026020010151858460010181518110614c9457fe5b6020026020010151915091506000614cac8383615387565b5090506000614cdc7f0000000000000000000000000000000000000000000000000000000000000000858561466b565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015614d1d57600080fd5b505afa158015614d31573d6000803e3d6000fd5b505050506040513d6060811015614d4757600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a811690891614614d84578284614d87565b83835b91509150614de5828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611f2457600080fd5b9550614df286838361442f565b945050505050600080856001600160a01b0316886001600160a01b031614614e1c57826000614e20565b6000835b91509150600060028c51038a10614e37578a614e6b565b614e6b7f0000000000000000000000000000000000000000000000000000000000000000898e8d600201815181106149bf57fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614f0e578181015183820152602001614ef6565b50505050905090810190601f168015614f3b5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614f5d57600080fd5b505af1158015614f71573d6000803e3d6000fd5b50506001909b019a50614c629950505050505050505050565b8082038281111561159f576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b60008084116150225760405162461bcd60e51b815260040180806020018281038252602a8152602001806159dd602a913960400191505060405180910390fd5b6000831180156150325750600082115b61506d5760405162461bcd60e51b8152600401808060200182810382526026815260200180615b4a6026913960400191505060405180910390fd5b6000615091612710615085868863ffffffff6157fe16565b9063ffffffff6157fe16565b905060006150ab6126f7615085868963ffffffff614f8a16565b90506150c860018284816150bb57fe5b049063ffffffff61586a16565b9695505050505050565b60008060006151027f0000000000000000000000000000000000000000000000000000000000000000898961466b565b6000858152600360205260409020600101549091506001600160a01b038083169116146151605760405162461bcd60e51b8152600401808060200182810382526032815260200180615a076032913960400191505060405180910390fd5b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038316602482018190526044820189905291516323b872dd916064808201926020929091908290030181600087803b1580156151cf57600080fd5b505af11580156151e3573d6000803e3d6000fd5b505050506040513d60208110156151f957600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561525f57600080fd5b505af1158015615273573d6000803e3d6000fd5b505050506040513d604081101561528957600080fd5b508051602090910151909250905060006152a38b8b615387565b509050806001600160a01b03168b6001600160a01b0316146152c65781836152c9565b82825b909c909b509950505050505050505050565b600080841161531b5760405162461bcd60e51b8152600401808060200182810382526023815260200180615adf6023913960400191505060405180910390fd5b60008311801561532b5750600082115b6153665760405162461bcd60e51b8152600401808060200182810382526026815260200180615b4a6026913960400191505060405180910390fd5b82615377858463ffffffff6157fe16565b8161537e57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b031614156153db5760405162461bcd60e51b8152600401808060200182810382526023815260200180615a626023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b0316106153fb5782846153fe565b83835b90925090506001600160a01b03821661545e576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b1580156154f857600080fd5b505afa15801561550c573d6000803e3d6000fd5b505050506040513d602081101561552257600080fd5b50516001600160a01b031614156155ee57604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156155c157600080fd5b505af11580156155d5573d6000803e3d6000fd5b505050506040513d60208110156155eb57600080fd5b50505b60008061561c7f00000000000000000000000000000000000000000000000000000000000000008b8b6158c2565b9150915081600014801561562e575080155b1561563e578793508692506156fe565b600061564b8984846152db565b905087811161569e57858110156156935760405162461bcd60e51b8152600401808060200182810382526024815260200180615b946024913960400191505060405180910390fd5b8894509250826156fc565b60006156ab8984866152db565b9050898111156156b757fe5b878110156156f65760405162461bcd60e51b8152600401808060200182810382526024815260200180615a856024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6001546001600160a01b031633146148d95760025461573190600163ffffffff61586a16565b60028181556040805180820182528581526001600160a01b038581166020808401918252600096875260038152958490209251835551600190920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001692821692909217909155915481519081529283018590528882168382015260608301879052908716608083015260a082018590524260c0830152517f339627d8bdfaaed6f6643765b87cd59515cd4278d6b3ab9e77b4a35f934f27989160e0908290030190a1505050505050565b60008115806158195750508082028282828161581657fe5b04145b61159f576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561159f576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006158d18585615387565b5090506158df86868661466b565b506000806158ee88888861466b565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561592657600080fd5b505afa15801561593a573d6000803e3d6000fd5b505050506040513d606081101561595057600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b038781169084161461598a57808261598d565b81815b90999098509650505050505050565b60408051808201909152600080825260208201529056fe50616e63616b654c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b65526f757465723a205468652063757272656e742072656d6f76616c207061697220697320696c6c6567616c50616e63616b65526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b654c6962726172793a204944454e544943414c5f41444452455353455350616e63616b65526f757465723a20494e53554646494349454e545f415f414d4f554e5450616e63616b65526f757465723a205468652063757272656e742072656d6f76616c207175616e7469747920697320696c6c6567616c50616e63616b654c6962726172793a20494e53554646494349454e545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c454450616e63616b65526f757465723a204558434553534956455f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450616e63616b65526f757465723a20494e53554646494349454e545f425f414d4f554e54a2646970667358221220666d31057aac05d77967db3ef27549e7e0d9ebe094c2790e351f886acb93699264736f6c63430006060033",
|
|
1300
|
+
"deployedBytecode": "0x6080604052600436106101e75760003560e01c8063880cdc3111610102578063baa2abde11610095578063ded9382a11610064578063ded9382a14610db3578063e8e3370014610e26578063f305d71914610ea6578063fb3bdb4114610eec57610220565b8063baa2abde14610beb578063c45a015514610c48578063d06ca61f14610c5d578063d0dc134314610d1457610220565b8063ad5c4648116100d1578063ad5c464814610ac7578063ad615dec14610adc578063af2979eb14610b12578063b6f9de9514610b6557610220565b8063880cdc31146109b85780638da5cb5b146109eb5780639581bafd14610a1c5780639b19251a14610a8057610220565b80634a25d94a1161017a578063791ac94711610149578063791ac947146107cc5780637ff36ab51461086457806385f8c259146108ea5780638803dbee1461092057610220565b80634a25d94a146106145780635b0d5984146106ac5780635c11d7951461071f5780635f6285db146107b757610220565b80631f00ca74116101b65780631f00ca74146103fc5780632195995c146104b357806338ed1739146105315780634868b0f5146105c957610220565b806302751cec1461022557806304c8c10014610291578063054d50d4146102cc57806318cbafe51461031457610220565b3661022057336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461021e57fe5b005b600080fd5b34801561023157600080fd5b50610278600480360360c081101561024857600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610f72565b6040805192835260208301919091528051918290030190f35b34801561029d57600080fd5b5061021e600480360360408110156102b457600080fd5b506001600160a01b03813516906020013515156110fd565b3480156102d857600080fd5b50610302600480360360608110156102ef57600080fd5b50803590602081013590604001356111a5565b60408051918252519081900360200190f35b34801561032057600080fd5b506103ac600480360360a081101561033757600080fd5b81359160208101359181019060608101604082013564010000000081111561035e57600080fd5b82018360208201111561037057600080fd5b8035906020019184602083028401116401000000008311171561039257600080fd5b91935091506001600160a01b0381351690602001356111ba565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103e85781810151838201526020016103d0565b505050509050019250505060405180910390f35b34801561040857600080fd5b506103ac6004803603604081101561041f57600080fd5b8135919081019060408101602082013564010000000081111561044157600080fd5b82018360208201111561045357600080fd5b8035906020019184602083028401116401000000008311171561047557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061156f945050505050565b3480156104bf57600080fd5b5061027860048036036101608110156104d757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff61010082013516906101208101359061014001356115a5565b34801561053d57600080fd5b506103ac600480360360a081101561055457600080fd5b81359160208101359181019060608101604082013564010000000081111561057b57600080fd5b82018360208201111561058d57600080fd5b803590602001918460208302840111640100000000831117156105af57600080fd5b91935091506001600160a01b038135169060200135611719565b3480156105d557600080fd5b506105f3600480360360208110156105ec57600080fd5b50356118da565b604080519283526001600160a01b0390911660208301528051918290030190f35b34801561062057600080fd5b506103ac600480360360a081101561063757600080fd5b81359160208101359181019060608101604082013564010000000081111561065e57600080fd5b82018360208201111561067057600080fd5b8035906020019184602083028401116401000000008311171561069257600080fd5b91935091506001600160a01b0381351690602001356118fc565b3480156106b857600080fd5b5061030260048036036101408110156106d057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611b10565b34801561072b57600080fd5b5061021e600480360360a081101561074257600080fd5b81359160208101359181019060608101604082013564010000000081111561076957600080fd5b82018360208201111561077b57600080fd5b8035906020019184602083028401116401000000008311171561079d57600080fd5b91935091506001600160a01b038135169060200135611c98565b3480156107c357600080fd5b50610302611fa3565b3480156107d857600080fd5b5061021e600480360360a08110156107ef57600080fd5b81359160208101359181019060608101604082013564010000000081111561081657600080fd5b82018360208201111561082857600080fd5b8035906020019184602083028401116401000000008311171561084a57600080fd5b91935091506001600160a01b038135169060200135611fa9565b6103ac6004803603608081101561087a57600080fd5b8135919081019060408101602082013564010000000081111561089c57600080fd5b8201836020820111156108ae57600080fd5b803590602001918460208302840111640100000000831117156108d057600080fd5b91935091506001600160a01b0381351690602001356122ce565b3480156108f657600080fd5b506103026004803603606081101561090d57600080fd5b50803590602081013590604001356126a9565b34801561092c57600080fd5b506103ac600480360360a081101561094357600080fd5b81359160208101359181019060608101604082013564010000000081111561096a57600080fd5b82018360208201111561097c57600080fd5b8035906020019184602083028401116401000000008311171561099e57600080fd5b91935091506001600160a01b0381351690602001356126b6565b3480156109c457600080fd5b5061021e600480360360208110156109db57600080fd5b50356001600160a01b0316612825565b3480156109f757600080fd5b50610a006128be565b604080516001600160a01b039092168252519081900360200190f35b348015610a2857600080fd5b506102786004803603610100811015610a4057600080fd5b508035906001600160a01b036020820135811691604081013582169160608201359160808101359160a08201359160c08101359091169060e001356128cd565b348015610a8c57600080fd5b50610ab360048036036020811015610aa357600080fd5b50356001600160a01b0316612aa6565b604080519115158252519081900360200190f35b348015610ad357600080fd5b50610a00612abb565b348015610ae857600080fd5b5061030260048036036060811015610aff57600080fd5b5080359060208101359060400135612adf565b348015610b1e57600080fd5b50610302600480360360c0811015610b3557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612aec565b61021e60048036036080811015610b7b57600080fd5b81359190810190604081016020820135640100000000811115610b9d57600080fd5b820183602082011115610baf57600080fd5b80359060200191846020830284011164010000000083111715610bd157600080fd5b91935091506001600160a01b038135169060200135612cf7565b348015610bf757600080fd5b50610278600480360360e0811015610c0e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c0013561310b565b348015610c5457600080fd5b50610a006133f4565b348015610c6957600080fd5b506103ac60048036036040811015610c8057600080fd5b81359190810190604081016020820135640100000000811115610ca257600080fd5b820183602082011115610cb457600080fd5b80359060200191846020830284011164010000000083111715610cd657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613418945050505050565b348015610d2057600080fd5b50610d4d60048036036040811015610d3757600080fd5b50803590602001356001600160a01b0316613445565b60408051998a526dffffffffffffffffffffffffffff98891660208b015296909716888701526001600160a01b03948516606089015292909316608087015260a086015260c085019190915260e084015261010083019190915251908190036101200190f35b348015610dbf57600080fd5b506102786004803603610140811015610dd757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135613798565b348015610e3257600080fd5b50610e886004803603610100811015610e4a57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613926565b60408051938452602084019290925282820152519081900360600190f35b610e88600480360360c0811015610ebc57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135613a7f565b6103ac60048036036080811015610f0257600080fd5b81359190810190604081016020820135640100000000811115610f2457600080fd5b820183602082011115610f3657600080fd5b80359060200191846020830284011164010000000083111715610f5857600080fd5b91935091506001600160a01b038135169060200135613d95565b6000808242811015610fcb576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316331461102a576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b611059897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a61310b565b909350915061106989868561419f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110cf57600080fd5b505af11580156110e3573d6000803e3d6000fd5b505050506110f18583614337565b50965096945050505050565b6001546001600160a01b0316331461115c576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6001600160a01b0391909116600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60006111b284848461442f565b949350505050565b60608142811015611212576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611276576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106112b057fe5b905060200201356001600160a01b03166001600160a01b03161461131b576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6113797f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061451f92505050565b9150868260018451038151811061138c57fe5b602002602001015110156113d15760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b61146f868660008181106113e157fe5b905060200201356001600160a01b0316336114557f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061142357fe5b905060200201356001600160a01b03168b8b600181811061144057fe5b905060200201356001600160a01b031661466b565b8560008151811061146257fe5b6020026020010151614756565b6114ae828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506148e1915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855103815181106114ed57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561152b57600080fd5b505af115801561153f573d6000803e3d6000fd5b50505050611564848360018551038151811061155757fe5b6020026020010151614337565b509695505050505050565b606061159c7f00000000000000000000000000000000000000000000000000000000000000008484614b27565b90505b92915050565b60015460009081906001600160a01b03163314611609576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b60006116367f00000000000000000000000000000000000000000000000000000000000000008f8f61466b565b9050600087611645578c611649565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156116d857600080fd5b505af11580156116ec573d6000803e3d6000fd5b505050506116ff8f8f8f8f8f8f8f61310b565b809450819550505050509b509b9950505050505050505050565b60608142811015611771576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166117d5576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6118337f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061451f92505050565b9150868260018451038151811061184657fe5b6020026020010151101561188b5760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b61189b868660008181106113e157fe5b611564828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506148e1915050565b600360205260009081526040902080546001909101546001600160a01b031682565b60608142811015611954576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff166119b8576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106119f257fe5b905060200201356001600160a01b03166001600160a01b031614611a5d576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b611abb7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b2792505050565b91508682600081518110611acb57fe5b602002602001015111156113d15760405162461bcd60e51b8152600401808060200182810382526025815260200180615b256025913960400191505060405180910390fd5b6001546000906001600160a01b03163314611b72576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b6000611bbf7f00000000000000000000000000000000000000000000000000000000000000008d7f000000000000000000000000000000000000000000000000000000000000000061466b565b9050600086611bce578b611bd2565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611c6157600080fd5b505af1158015611c75573d6000803e3d6000fd5b50505050611c878d8d8d8d8d8d612aec565b9d9c50505050505050505050505050565b8042811015611cee576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16611d52576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b611dc785856000818110611d6257fe5b905060200201356001600160a01b031633611dc17f000000000000000000000000000000000000000000000000000000000000000089896000818110611da457fe5b905060200201356001600160a01b03168a8a600181811061144057fe5b8a614756565b600085856000198101818110611dd957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e3e57600080fd5b505afa158015611e52573d6000803e3d6000fd5b505050506040513d6020811015611e6857600080fd5b50516040805160208881028281018201909352888252929350611eaa929091899189918291850190849080828437600092019190915250889250614c5f915050565b86611f5c8288886000198101818110611ebf57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611f2457600080fd5b505afa158015611f38573d6000803e3d6000fd5b505050506040513d6020811015611f4e57600080fd5b50519063ffffffff614f8a16565b1015611f995760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b5050505050505050565b60025481565b8042811015611fff576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16612063576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061209d57fe5b905060200201356001600160a01b03166001600160a01b031614612108576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b61211885856000818110611d6257fe5b612156858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614c5f915050565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b1580156121d957600080fd5b505afa1580156121ed573d6000803e3d6000fd5b505050506040513d602081101561220357600080fd5b50519050868110156122465760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156122ac57600080fd5b505af11580156122c0573d6000803e3d6000fd5b50505050611f998482614337565b60608142811015612326576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff1661238a576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106123c157fe5b905060200201356001600160a01b03166001600160a01b03161461242c576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b61248a7f00000000000000000000000000000000000000000000000000000000000000003488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061451f92505050565b9150868260018451038151811061249d57fe5b602002602001015110156124e25760405162461bcd60e51b8152600401808060200182810382526029815260200180615a396029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061251e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561255157600080fd5b505af1158015612565573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6125ca7f000000000000000000000000000000000000000000000000000000000000000089896000818110611da457fe5b846000815181106125d757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561262e57600080fd5b505af1158015612642573d6000803e3d6000fd5b505050506040513d602081101561265857600080fd5b505161266057fe5b61269f828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506148e1915050565b5095945050505050565b60006111b2848484614fe2565b6060814281101561270e576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16612772576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b6127d07f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b2792505050565b915086826000815181106127e057fe5b6020026020010151111561188b5760405162461bcd60e51b8152600401808060200182810382526025815260200180615b256025913960400191505060405180910390fd5b6001546001600160a01b03163314612884576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b6000808242811015612926576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b60008b8152600360205260409020548811156129735760405162461bcd60e51b8152600401808060200182810382526036815260200180615aa96036913960400191505060405180910390fd5b6129808a8a8a888f6150d2565b9093509150868310156129c45760405162461bcd60e51b8152600401808060200182810382526024815260200180615a856024913960400191505060405180910390fd5b85821015612a035760405162461bcd60e51b8152600401808060200182810382526024815260200180615b946024913960400191505060405180910390fd5b60008b815260036020526040902054612a22908963ffffffff614f8a16565b60008c8152600360209081526040918290209290925580518d81529182018a90526001600160a01b03808d1683830152606083018690528b16608083015260a082018490524260c0830152517f6b7bcec24e45232420f33f8e201718bc557530aaa86bcee4ea5091a89bab877e9181900360e00190a1509850989650505050505050565b60006020819052908152604090205460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006111b28484846152db565b60008142811015612b44576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314612ba3576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b612bd2887f0000000000000000000000000000000000000000000000000000000000000000898989308961310b565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051919450612c6f92508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015612c3e57600080fd5b505afa158015612c52573d6000803e3d6000fd5b505050506040513d6020811015612c6857600080fd5b505161419f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612cd557600080fd5b505af1158015612ce9573d6000803e3d6000fd5b505050506115648483614337565b8042811015612d4d576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16612db1576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685856000818110612de857fe5b905060200201356001600160a01b03166001600160a01b031614612e53576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612eb357600080fd5b505af1158015612ec7573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612f2c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611da457fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d6020811015612fa657600080fd5b5051612fae57fe5b600086866000198101818110612fc057fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561302557600080fd5b505afa158015613039573d6000803e3d6000fd5b505050506040513d602081101561304f57600080fd5b505160408051602089810282810182019093528982529293506130919290918a918a918291850190849080828437600092019190915250899250614c5f915050565b87611f5c82898960001981018181106130a657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611f2457600080fd5b60015460009081906001600160a01b0316331461316f576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b82428110156131c5576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b60006131f27f00000000000000000000000000000000000000000000000000000000000000008c8c61466b565b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561326657600080fd5b505af115801561327a573d6000803e3d6000fd5b505050506040513d602081101561329057600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050506040513d604081101561332057600080fd5b5080516020909101519092509050600061333a8e8e615387565b509050806001600160a01b03168e6001600160a01b03161461335d578183613360565b82825b90975095508a8710156133a45760405162461bcd60e51b8152600401808060200182810382526024815260200180615a856024913960400191505060405180910390fd5b898610156133e35760405162461bcd60e51b8152600401808060200182810382526024815260200180615b946024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606061159c7f0000000000000000000000000000000000000000000000000000000000000000848461451f565b600080600080600080600080600061345b61599c565b5060008b8152600360209081526040918290208251808401845281548082526001909201546001600160a01b031692810183905283517f0902f1ac0000000000000000000000000000000000000000000000000000000081529351919c5092630902f1ac916004808301926060929190829003018186803b1580156134df57600080fd5b505afa1580156134f3573d6000803e3d6000fd5b505050506040513d606081101561350957600080fd5b50805160209182015183830151604080517f0dfe16810000000000000000000000000000000000000000000000000000000081529051939d50919b506001600160a01b031692630dfe168192600480840193829003018186803b15801561356f57600080fd5b505afa158015613583573d6000803e3d6000fd5b505050506040513d602081101561359957600080fd5b5051602082810151604080517fd21220a70000000000000000000000000000000000000000000000000000000081529051939a506001600160a01b039091169263d21220a792600480840193919291829003018186803b1580156135fc57600080fd5b505afa158015613610573d6000803e3d6000fd5b505050506040513d602081101561362657600080fd5b5051602082810151604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290519399506001600160a01b03909116926318160ddd92600480840193919291829003018186803b15801561368957600080fd5b505afa15801561369d573d6000803e3d6000fd5b505050506040513d60208110156136b357600080fd5b8101908080519060200190929190505050945080602001516001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561372057600080fd5b505afa158015613734573d6000803e3d6000fd5b505050506040513d602081101561374a57600080fd5b50519350846dffffffffffffffffffffffffffff8a1685028161376957fe5b0492508484896dffffffffffffffffffffffffffff16028161378757fe5b049150509295985092959850929598565b60015460009081906001600160a01b031633146137fc576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b60006138497f00000000000000000000000000000000000000000000000000000000000000008e7f000000000000000000000000000000000000000000000000000000000000000061466b565b9050600087613858578c61385c565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156138eb57600080fd5b505af11580156138ff573d6000803e3d6000fd5b505050506139118e8e8e8e8e8e610f72565b909f909e509c50505050505050505050505050565b60008060008342811015613981576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b61398f8c8c8c8c8c8c615465565b909450925060006139c17f00000000000000000000000000000000000000000000000000000000000000008e8e61466b565b90506139cf8d338388614756565b6139db8c338387614756565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015613a3357600080fd5b505af1158015613a47573d6000803e3d6000fd5b505050506040513d6020811015613a5d57600080fd5b50519250613a6f8d8d8787878661570b565b5050985098509895505050505050565b60008060008342811015613ada576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6001546001600160a01b03163314613b39576040805162461bcd60e51b815260206004820152601860248201527f53776170526f757465723a204973206e6f74206f776e65720000000000000000604482015290519081900360640190fd5b613b678a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c615465565b90945092506000613bb97f00000000000000000000000000000000000000000000000000000000000000008c7f000000000000000000000000000000000000000000000000000000000000000061466b565b9050613bc78b338388614756565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015613c2257600080fd5b505af1158015613c36573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613cbb57600080fd5b505af1158015613ccf573d6000803e3d6000fd5b505050506040513d6020811015613ce557600080fd5b5051613ced57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015613d4557600080fd5b505af1158015613d59573d6000803e3d6000fd5b505050506040513d6020811015613d6f57600080fd5b5051925034841015613d8757613d8733853403614337565b505096509650969350505050565b60608142811015613ded576040805162461bcd60e51b815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b3360009081526020819052604090205460ff16613e51576040805162461bcd60e51b815260206004820152601660248201527f53776170526f757465723a206c696d69742063616c6c00000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110613e8857fe5b905060200201356001600160a01b03166001600160a01b031614613ef3576040805162461bcd60e51b815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b613f517f000000000000000000000000000000000000000000000000000000000000000088888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b2792505050565b91503482600081518110613f6157fe5b60200260200101511115613fa65760405162461bcd60e51b8152600401808060200182810382526025815260200180615b256025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110613fe257fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561401557600080fd5b505af1158015614029573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb61408e7f000000000000000000000000000000000000000000000000000000000000000089896000818110611da457fe5b8460008151811061409b57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156140f257600080fd5b505af1158015614106573d6000803e3d6000fd5b505050506040513d602081101561411c57600080fd5b505161412457fe5b614163828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506148e1915050565b8160008151811061417057fe5b602002602001015134111561269f5761269f338360008151811061419057fe5b60200260200101513403614337565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061424a5780518252601f19909201916020918201910161422b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142ac576040519150601f19603f3d011682016040523d82523d6000602084013e6142b1565b606091505b50915091508180156142df5750805115806142df57508080602001905160208110156142dc57600080fd5b50515b614330576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106143835780518252601f199092019160209182019101614364565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146143e5576040519150601f19603f3d011682016040523d82523d6000602084013e6143ea565b606091505b505090508061442a5760405162461bcd60e51b8152600401808060200182810382526023815260200180615b026023913960400191505060405180910390fd5b505050565b600080841161446f5760405162461bcd60e51b81526004018080602001828103825260298152602001806159b46029913960400191505060405180910390fd5b60008311801561447f5750600082115b6144ba5760405162461bcd60e51b8152600401808060200182810382526026815260200180615b4a6026913960400191505060405180910390fd5b60006144ce856126f763ffffffff6157fe16565b905060006144e2828563ffffffff6157fe16565b90506000614508836144fc8861271063ffffffff6157fe16565b9063ffffffff61586a16565b905080828161451357fe5b04979650505050505050565b6060600282511015614578576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561459057600080fd5b506040519080825280602002602001820160405280156145ba578160200160208202803683370190505b50905082816000815181106145cb57fe5b60200260200101818152505060005b60018351038110156146635760008061461d878685815181106145f957fe5b602002602001015187866001018151811061461057fe5b60200260200101516158c2565b9150915061463f84848151811061463057fe5b6020026020010151838361442f565b84846001018151811061464e57fe5b602090810291909101015250506001016145da565b509392505050565b600080600061467a8585615387565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527fe45c3f6d80a13228fe001e53bf445c5a8f1a7a0248ddcf5e4a3ee22d0577d881609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b602083106148095780518252601f1990920191602091820191016147ea565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461486b576040519150601f19603f3d011682016040523d82523d6000602084013e614870565b606091505b509150915081801561489e57508051158061489e575080806020019051602081101561489b57600080fd5b50515b6148d95760405162461bcd60e51b8152600401808060200182810382526024815260200180615b706024913960400191505060405180910390fd5b505050505050565b60005b6001835103811015614b21576000808483815181106148ff57fe5b602002602001015185846001018151811061491657fe5b602002602001015191509150600061492e8383615387565b509050600087856001018151811061494257fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461497057826000614974565b6000835b91509150600060028a5103881061498b57886149cc565b6149cc7f0000000000000000000000000000000000000000000000000000000000000000878c8b600201815181106149bf57fe5b602002602001015161466b565b90506149f97f0000000000000000000000000000000000000000000000000000000000000000888861466b565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015614a36576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614aa7578181015183820152602001614a8f565b50505050905090810190601f168015614ad45780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614af657600080fd5b505af1158015614b0a573d6000803e3d6000fd5b5050600190990198506148e4975050505050505050565b50505050565b6060600282511015614b80576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015614b9857600080fd5b50604051908082528060200260200182016040528015614bc2578160200160208202803683370190505b5090508281600183510381518110614bd657fe5b60209081029190910101528151600019015b801561466357600080614c1887866001860381518110614c0457fe5b602002602001015187868151811061461057fe5b91509150614c3a848481518110614c2b57fe5b60200260200101518383614fe2565b846001850381518110614c4957fe5b6020908102919091010152505060001901614be8565b60005b600183510381101561442a57600080848381518110614c7d57fe5b6020026020010151858460010181518110614c9457fe5b6020026020010151915091506000614cac8383615387565b5090506000614cdc7f0000000000000000000000000000000000000000000000000000000000000000858561466b565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015614d1d57600080fd5b505afa158015614d31573d6000803e3d6000fd5b505050506040513d6060811015614d4757600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a811690891614614d84578284614d87565b83835b91509150614de5828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611f2457600080fd5b9550614df286838361442f565b945050505050600080856001600160a01b0316886001600160a01b031614614e1c57826000614e20565b6000835b91509150600060028c51038a10614e37578a614e6b565b614e6b7f0000000000000000000000000000000000000000000000000000000000000000898e8d600201815181106149bf57fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614f0e578181015183820152602001614ef6565b50505050905090810190601f168015614f3b5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614f5d57600080fd5b505af1158015614f71573d6000803e3d6000fd5b50506001909b019a50614c629950505050505050505050565b8082038281111561159f576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b60008084116150225760405162461bcd60e51b815260040180806020018281038252602a8152602001806159dd602a913960400191505060405180910390fd5b6000831180156150325750600082115b61506d5760405162461bcd60e51b8152600401808060200182810382526026815260200180615b4a6026913960400191505060405180910390fd5b6000615091612710615085868863ffffffff6157fe16565b9063ffffffff6157fe16565b905060006150ab6126f7615085868963ffffffff614f8a16565b90506150c860018284816150bb57fe5b049063ffffffff61586a16565b9695505050505050565b60008060006151027f0000000000000000000000000000000000000000000000000000000000000000898961466b565b6000858152600360205260409020600101549091506001600160a01b038083169116146151605760405162461bcd60e51b8152600401808060200182810382526032815260200180615a076032913960400191505060405180910390fd5b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038316602482018190526044820189905291516323b872dd916064808201926020929091908290030181600087803b1580156151cf57600080fd5b505af11580156151e3573d6000803e3d6000fd5b505050506040513d60208110156151f957600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561525f57600080fd5b505af1158015615273573d6000803e3d6000fd5b505050506040513d604081101561528957600080fd5b508051602090910151909250905060006152a38b8b615387565b509050806001600160a01b03168b6001600160a01b0316146152c65781836152c9565b82825b909c909b509950505050505050505050565b600080841161531b5760405162461bcd60e51b8152600401808060200182810382526023815260200180615adf6023913960400191505060405180910390fd5b60008311801561532b5750600082115b6153665760405162461bcd60e51b8152600401808060200182810382526026815260200180615b4a6026913960400191505060405180910390fd5b82615377858463ffffffff6157fe16565b8161537e57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b031614156153db5760405162461bcd60e51b8152600401808060200182810382526023815260200180615a626023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b0316106153fb5782846153fe565b83835b90925090506001600160a01b03821661545e576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b1580156154f857600080fd5b505afa15801561550c573d6000803e3d6000fd5b505050506040513d602081101561552257600080fd5b50516001600160a01b031614156155ee57604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156155c157600080fd5b505af11580156155d5573d6000803e3d6000fd5b505050506040513d60208110156155eb57600080fd5b50505b60008061561c7f00000000000000000000000000000000000000000000000000000000000000008b8b6158c2565b9150915081600014801561562e575080155b1561563e578793508692506156fe565b600061564b8984846152db565b905087811161569e57858110156156935760405162461bcd60e51b8152600401808060200182810382526024815260200180615b946024913960400191505060405180910390fd5b8894509250826156fc565b60006156ab8984866152db565b9050898111156156b757fe5b878110156156f65760405162461bcd60e51b8152600401808060200182810382526024815260200180615a856024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6001546001600160a01b031633146148d95760025461573190600163ffffffff61586a16565b60028181556040805180820182528581526001600160a01b038581166020808401918252600096875260038152958490209251835551600190920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001692821692909217909155915481519081529283018590528882168382015260608301879052908716608083015260a082018590524260c0830152517f339627d8bdfaaed6f6643765b87cd59515cd4278d6b3ab9e77b4a35f934f27989160e0908290030190a1505050505050565b60008115806158195750508082028282828161581657fe5b04145b61159f576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561159f576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006158d18585615387565b5090506158df86868661466b565b506000806158ee88888861466b565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561592657600080fd5b505afa15801561593a573d6000803e3d6000fd5b505050506040513d606081101561595057600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b038781169084161461598a57808261598d565b81815b90999098509650505050505050565b60408051808201909152600080825260208201529056fe50616e63616b654c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b65526f757465723a205468652063757272656e742072656d6f76616c207061697220697320696c6c6567616c50616e63616b65526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b654c6962726172793a204944454e544943414c5f41444452455353455350616e63616b65526f757465723a20494e53554646494349454e545f415f414d4f554e5450616e63616b65526f757465723a205468652063757272656e742072656d6f76616c207175616e7469747920697320696c6c6567616c50616e63616b654c6962726172793a20494e53554646494349454e545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c454450616e63616b65526f757465723a204558434553534956455f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450616e63616b65526f757465723a20494e53554646494349454e545f425f414d4f554e54a2646970667358221220666d31057aac05d77967db3ef27549e7e0d9ebe094c2790e351f886acb93699264736f6c63430006060033",
|
|
1043
1301
|
"linkReferences": {},
|
|
1044
1302
|
"deployedLinkReferences": {}
|
|
1045
1303
|
}
|
package/src/swap-router.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
let { HI, HERC20, HERC721 } = require("h-token-staking")
|
|
2
2
|
let { abi, bytecode } = require("./abi/SwapRouter.json")
|
|
3
3
|
let SwapFactory = require("./swap-factory")
|
|
4
|
-
|
|
4
|
+
let SwapPair = require("./swap-pair")
|
|
5
5
|
class SwapRouter extends HI {
|
|
6
6
|
constructor({ provider, account, rpcUrl, privateKey, contract,factory = "" }) {
|
|
7
7
|
super({ provider, account, rpcUrl, privateKey, contract, abi })
|
|
@@ -62,22 +62,12 @@ class SwapRouter extends HI {
|
|
|
62
62
|
return result
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// let pair = await factory.getPair({
|
|
71
|
-
// token0,token1
|
|
72
|
-
// })
|
|
73
|
-
|
|
74
|
-
// let Token0 = new HERC20({ ...this.network, contract: token0 })
|
|
75
|
-
// let Token1 = new HERC20({ ...this.network, contract: token1 })
|
|
76
|
-
|
|
77
|
-
// let reserve0 = await Token0
|
|
65
|
+
async getTokenAmounts(liquidityId) {
|
|
66
|
+
let user = this.web3.eth.defaultAccount
|
|
67
|
+
let amounts = await this.SC.methods.getTokenAmounts(liquidityId,user).call()
|
|
68
|
+
return amounts
|
|
69
|
+
}
|
|
78
70
|
|
|
79
|
-
// return result
|
|
80
|
-
// }
|
|
81
71
|
|
|
82
72
|
async addLiquidity({ token0,token1,amount0,amount1 }) {
|
|
83
73
|
let user = this.web3.eth.defaultAccount
|
|
@@ -89,6 +79,10 @@ class SwapRouter extends HI {
|
|
|
89
79
|
amount0 = await Token0.toAmount(amount0)
|
|
90
80
|
amount1 = await Token1.toAmount(amount1)
|
|
91
81
|
|
|
82
|
+
let now = new Date().getTime()
|
|
83
|
+
now = parseInt(division(now, 1000))
|
|
84
|
+
let deadline = plus(multiplication(60, 5), now)
|
|
85
|
+
|
|
92
86
|
let result = await this.manage("addLiquidity", [
|
|
93
87
|
token0,
|
|
94
88
|
token1,
|
|
@@ -97,7 +91,45 @@ class SwapRouter extends HI {
|
|
|
97
91
|
1,
|
|
98
92
|
1,
|
|
99
93
|
user,
|
|
100
|
-
|
|
94
|
+
deadline
|
|
95
|
+
])
|
|
96
|
+
return result
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
async returnLiquidity({ liquidityId,token0,token1,liquidity,amount0,amount1 }) {
|
|
100
|
+
let user = this.web3.eth.defaultAccount
|
|
101
|
+
let Token0 = new HERC20({ ...this.network, contract: token0 })
|
|
102
|
+
let Token1 = new HERC20({ ...this.network, contract: token1 })
|
|
103
|
+
// await Token0.tradeApprove(this.contract,amount0)
|
|
104
|
+
// await Token1.tradeApprove(this.contract,amount1)
|
|
105
|
+
|
|
106
|
+
amount0 = await Token0.toAmount(amount0)
|
|
107
|
+
amount1 = await Token1.toAmount(amount1)
|
|
108
|
+
|
|
109
|
+
let factory = new SwapFactory({
|
|
110
|
+
...this.network,
|
|
111
|
+
contract:this.factory
|
|
112
|
+
})
|
|
113
|
+
let pair = await factory.getPair({ token0,token1 })
|
|
114
|
+
let token = new HERC20({ ...this.network, contract: pair })
|
|
115
|
+
|
|
116
|
+
let liquidityAmount = await token.fromAmount(liquidity)
|
|
117
|
+
await token.tradeApprove(this.contract,liquidityAmount)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
let now = new Date().getTime()
|
|
121
|
+
now = parseInt(division(now, 1000))
|
|
122
|
+
let deadline = plus(multiplication(60, 5), now)
|
|
123
|
+
|
|
124
|
+
let result = await this.manage("returnLiquidity", [
|
|
125
|
+
liquidityId,
|
|
126
|
+
token0,
|
|
127
|
+
token1,
|
|
128
|
+
liquidity,
|
|
129
|
+
amount0,
|
|
130
|
+
amount1,
|
|
131
|
+
user,
|
|
132
|
+
deadline
|
|
101
133
|
])
|
|
102
134
|
return result
|
|
103
135
|
}
|
|
@@ -122,6 +154,11 @@ class SwapRouter extends HI {
|
|
|
122
154
|
let liquidityAmount = await token.fromAmount(liquidity)
|
|
123
155
|
await token.tradeApprove(this.contract,liquidityAmount)
|
|
124
156
|
|
|
157
|
+
|
|
158
|
+
let now = new Date().getTime()
|
|
159
|
+
now = parseInt(division(now, 1000))
|
|
160
|
+
let deadline = plus(multiplication(60, 5), now)
|
|
161
|
+
|
|
125
162
|
let result = await this.manage("removeLiquidity", [
|
|
126
163
|
token0,
|
|
127
164
|
token1,
|
|
@@ -129,7 +166,7 @@ class SwapRouter extends HI {
|
|
|
129
166
|
1,
|
|
130
167
|
1,
|
|
131
168
|
user,
|
|
132
|
-
|
|
169
|
+
deadline
|
|
133
170
|
])
|
|
134
171
|
return result
|
|
135
172
|
}
|