-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathERC4626LinearPoolFactory.json
165 lines (165 loc) · 55.6 KB
/
ERC4626LinearPoolFactory.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC4626LinearPoolFactory",
"sourceName": "contracts/erc4626/ERC4626LinearPoolFactory.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IVault",
"name": "vault",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"name": "PoolCreated",
"type": "event"
},
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "contract IERC20",
"name": "mainToken",
"type": "address"
},
{
"internalType": "contract IERC4626",
"name": "wrappedToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "upperTarget",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "swapFeePercentage",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "create",
"outputs": [
{
"internalType": "contract LinearPool",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getCreationCode",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCreationCodeContracts",
"outputs": [
{
"internalType": "address",
"name": "contractA",
"type": "address"
},
{
"internalType": "address",
"name": "contractB",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPauseConfiguration",
"outputs": [
{
"internalType": "uint256",
"name": "pauseWindowDuration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bufferPeriodDuration",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getVault",
"outputs": [
{
"internalType": "contract IVault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"name": "isPoolFromFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6101406040523480156200001257600080fd5b5060405162005f4638038062005f468339810160408190526200003591620001c3565b80604051806020016200004890620001b5565b601f1982820381018352601f909101166040528051819060006002820460a081905280830360e0819052818552909150836200009081620000f9602090811b620002eb17901c565b60601b6001600160601b0319166080528285018051838252620000bf82620000f9602090811b620002eb17901c565b6001600160601b0319606091821b811660c0529690935290529590951b90911661010052505050426276a700016101205250620001f39050565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f09084529150620001476001600160a01b03831615156101ac6200014d565b50919050565b816200015e576200015e8162000162565b5050565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b6153de8062000b6883390190565b600060208284031215620001d5578081fd5b81516001600160a01b0381168114620001ec578182fd5b9392505050565b60805160601c60a05160c05160601c60e0516101005160601c61012051610913620002556000398061023852806102615250806102c952508061035252508061014a52806103ce52508061037352508061012952806103aa52506109136000f3fe608060405234801561001057600080fd5b50600436106100715760003560e01c80632da47c40116100505780632da47c40146100ca5780636634b753146100e05780638d928af81461010057610071565b8062c194db14610076578063174481fa146100945780632ccb254a146100aa575b600080fd5b61007e610108565b60405161008b91906107f0565b60405180910390f35b61009c610127565b60405161008b9291906107be565b6100bd6100b83660046106a7565b61016d565b60405161008b9190610803565b6100d2610232565b60405161008b9291906108aa565b6100f36100ee36600461068b565b61029c565b60405161008b91906107e5565b6100bd6102c7565b60606101226040518060200160405280600081525061034a565b905090565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000009091565b600080600061017a610232565b9150915060006101c161018b6102c7565b8c8c8c8c8c8c8a8a8e6040516020016101ad9a99989796959493929190610824565b604051602081830303815290604052610423565b90508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b50929d9c50505050505050505050505050565b600080427f000000000000000000000000000000000000000000000000000000000000000081101561028e57807f000000000000000000000000000000000000000000000000000000000000000003925062278d009150610297565b60009250600091505b509091565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f0908452915061034473ffffffffffffffffffffffffffffffffffffffff831615156101ac6104ae565b50919050565b8051604080517f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000818101858101848101602090810190965280855293957f00000000000000000000000000000000000000000000000000000000000000009592947f000000000000000000000000000000000000000000000000000000000000000094938801866000828a3c846000888301883c50602089810190898501016104158183866104c0565b505050505050505050919050565b60008061042f8361053a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a292915050565b816104bc576104bc81610582565b5050565b5b602081106104fe5781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016104c1565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b600060606105478361034a565b905060008151602083016000f0905073ffffffffffffffffffffffffffffffffffffffff811661057b573d6000803e3d6000fd5b9392505050565b7f08c379a0000000000000000000000000000000000000000000000000000000006000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b600082601f8301126105ff578081fd5b813567ffffffffffffffff80821115610616578283fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168201018181108382111715610654578485fd5b60405282815292508284830160200186101561066f57600080fd5b8260208601602083013760006020848301015250505092915050565b60006020828403121561069c578081fd5b813561057b816108b8565b600080600080600080600060e0888a0312156106c1578283fd5b873567ffffffffffffffff808211156106d8578485fd5b6106e48b838c016105ef565b985060208a01359150808211156106f9578485fd5b506107068a828b016105ef565b9650506040880135610717816108b8565b94506060880135610727816108b8565b93506080880135925060a0880135915060c0880135610745816108b8565b8091505092959891949750929550565b60008151808452815b8181101561077a5760208185018101518683018201520161075e565b8181111561078b5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b60006020825261057b6020830184610755565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600061014073ffffffffffffffffffffffffffffffffffffffff808e1684528160208501526108558285018e610755565b91508382036040850152610869828d610755565b9a811660608501529889166080840152505060a081019590955260c085019390935260e0840191909152610100830152909116610120909101529392505050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146108da57600080fd5b5056fea2646970667358221220a5c0aa9d95e4596854764f3af36a908ca52cc39d141927e9cbae5a5702764f9064736f6c634300070100336102c06040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b50604051620053de380380620053de8339810160408190526200005a9162000bd0565b898989898989898989898960008a8a620000768b8b30620004f5565b6040805160038082526080820190925290602082016060803683370190505089898989828289898d8280604051806040016040528060018152602001603160f81b81525085858a336001600160a01b031660001b806080818152505050806001600160a01b031660a0816001600160a01b031660601b815250505081600390805190602001906200010992919062000a5c565b5080516200011f90600490602084019062000a5c565b505060058054601260ff1990911617905550815160209283012060c052805191012060e052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6101005260601b6001600160601b03191661014052506200019290506276a700831115610194620005c4565b620001a662278d00821115610195620005c4565b4290910161016081905201610180528551620001c8906002111560c8620005c4565b620001e2620001d6620005d9565b8751111560c9620005c4565b620001f886620005de60201b620014881760201c565b6200020384620005ea565b6040516309b2760f60e01b81526000906001600160a01b038c16906309b2760f9062000234908d9060040162000d6e565b602060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a919062000bb7565b604051633354e3e960e11b81529091506001600160a01b038c16906366a9c7d290620002bf9084908b908b9060040162000cd2565b600060405180830381600087803b158015620002da57600080fd5b505af1158015620002ef573d6000803e3d6000fd5b50505050806101a081815250505050505050505050505050866001600160a01b03166101c0816001600160a01b031660601b81525050856001600160a01b03166101e0816001600160a01b031660601b8152505060008060006200035b8a8a306200067660201b60201c565b610200819052610220839052610240829052919450925090506200037f8a6200076c565b610260526200038e896200076c565b610280526000620003a18b828b62000840565b50505050505050505050505050506000866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620003eb57600080fd5b505afa15801562000400573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000426919062000caf565b60ff1690506000886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046757600080fd5b505afa1580156200047c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a2919062000caf565b60ff1690506000620004da82620004c6601286620008ee60201b620014921760201c565b6200090b60201b620014a41790919060201c565b600a0a6102a0525062000da69b505050505050505050505050565b6060600080806200050887878762000676565b60408051600380825260808201909252939650919450925060208201606080368337019050509350868484815181106200053e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050858483815181106200056c57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848482815181106200059a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505050509392505050565b81620005d557620005d58162000923565b5050565b600390565b80620005d58162000976565b620005ff64e8d4a5100082101560cb620005c4565b6200061767016345785d8a000082111560ca620005c4565b620006368160c060085462000a0360201b620014ba179092919060201c565b6008556040517fa9ba3ffe0b6c366b81232caab38605a0699ad5398d6cce76f91ee809e322dafc906200066b90839062000d83565b60405180910390a150565b6000806000846001600160a01b0316866001600160a01b03161015620006ff57836001600160a01b0316856001600160a01b03161015620006c257506000915060019050600262000763565b836001600160a01b0316866001600160a01b03161015620006ee57506000915060029050600162000763565b506001915060029050600062000763565b846001600160a01b0316846001600160a01b031610156200072b57506002915060019050600062000763565b856001600160a01b0316846001600160a01b031610156200075757506002915060009050600162000763565b50600191506000905060025b93509350939050565b60006001600160a01b038216301415620007905750670de0b6b3a76400006200083b565b6000826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620007cc57600080fd5b505afa158015620007e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000807919062000caf565b60ff1690506000620008266012836200090b60201b620014a41760201c565b905080600a0a670de0b6b3a764000002925050505b919050565b620008518183111561014c620005c4565b620008696001600160601b0382111561014d620005c4565b620008a46200088582606062000a1860201b620014d01760201c565b6200089d84600062000a1860201b620014d01760201c565b1762000a1c565b826001600160a01b03167fd0e27a0d0c2cb09280fa5e4487315455b32afcdcf012dc35b6ef2a0e3c4d12808383604051620008e192919062000d8c565b60405180910390a2505050565b6000828201620009028482101583620005c4565b90505b92915050565b60006200091d838311156001620005c4565b50900390565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b600281511015620009875762000a00565b6000816000815181106200099757fe5b602002602001015190506000600190505b8251811015620009fd576000838281518110620009c157fe5b60200260200101519050620009f2816001600160a01b0316846001600160a01b0316106065620005c460201b60201c565b9150600101620009a8565b50505b50565b6001600160401b03811b1992909216911b1790565b1b90565b62000a3b81600060085462000a4160201b620014d4179092919060201c565b60085550565b6001600160c01b03828116821b90821b198416179392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000a9f57805160ff191683800117855562000acf565b8280016001018555821562000acf579182015b8281111562000acf57825182559160200191906001019062000ab2565b5062000add92915062000ae1565b5090565b5b8082111562000add576000815560010162000ae2565b80516001600160a01b03811681146200090557600080fd5b600082601f83011262000b21578081fd5b81516001600160401b038082111562000b38578283fd5b6040516020601f8401601f191682018101838111838210171562000b5a578586fd5b8060405250819450838252868185880101111562000b7757600080fd5b600092505b8383101562000b9b578583018101518284018201529182019162000b7c565b8383111562000bad5760008185840101525b5050505092915050565b60006020828403121562000bc9578081fd5b5051919050565b6000806000806000806000806000806101408b8d03121562000bf0578586fd5b62000bfc8c8c62000af8565b60208c0151909a506001600160401b038082111562000c19578788fd5b62000c278e838f0162000b10565b9a5060408d015191508082111562000c3d578788fd5b5062000c4c8d828e0162000b10565b98505062000c5e8c60608d0162000af8565b965062000c6f8c60808d0162000af8565b955060a08b0151945060c08b0151935060e08b015192506101008b0151915062000c9e8c6101208d0162000af8565b90509295989b9194979a5092959850565b60006020828403121562000cc1578081fd5b815160ff8116811462000902578182fd5b60006060820185835260206060818501528186518084526080860191508288019350845b8181101562000d1e5762000d0b855162000d9a565b8352938301939183019160010162000cf6565b505084810360408601528551808252908201925081860190845b8181101562000d605762000d4d835162000d9a565b8552938301939183019160010162000d38565b509298975050505050505050565b602081016003831062000d7d57fe5b91905290565b90815260200190565b918252602082015260400190565b6001600160a01b031690565b60805160a05160601c60c05160e05161010051610120516101405160601c61016051610180516101a0516101c05160601c6101e05160601c61020051610220516102405161026051610280516102a05161446162000f7d600039806125775250806115ae52508061154a528061241f5250806107c65280610b7952806115d6528061278a528061293a5280612a915280612c035280612d9f5280612ef65250806109745280610b3f528061156c5280611c1f528061275652806128bf52806129065280612a1b5280612a5d5280612bcf5280612d295280612d6b5280612e805280612ec2525080610bba5280610d895280610e7652806114095280611617528061236452806127c152806129715280612ac85280612c3a5280612dd65280612f2d5280613112528061314a52508061145c528061173252806117fe5280612445528061270b528061284b5280612b855280612cb5525080610998528061101552806116e952806117b55280611c5552806123e452806126cc52806127ed52806129a75280612b465280612c665280612e0c5250806109155250806119de5250806119ba525080610f365250806110cb525080611ae4525080611b26525080611b05525080610f12525080610e9c52506144616000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c8063679aefce1161018657806395d89b41116100e3578063d505accf11610097578063de82cd3411610071578063de82cd341461056b578063f174e24114610573578063f5431aa81461057b576102d3565b8063d505accf14610532578063d5c096c414610545578063dd62ed3e14610558576102d3565b8063a457c2d7116100c8578063a457c2d714610504578063a9059cbb14610517578063aaabadc51461052a576102d3565b806395d89b41146104e95780639f11080e146104f1576102d3565b806382687a561161013a57806387ec68171161011f57806387ec6817146104c6578063893d20e8146104d95780638d928af8146104e1576102d3565b806382687a56146104ab578063851c1bb3146104b3576102d3565b806374f3b0091161016b57806374f3b0091461046f5780637ecebe00146104905780638129fc1c146104a3576102d3565b8063679aefce1461045457806370a082311461045c576102d3565b80633644e515116102345780634de046d5116101e857806355c67628116101cd57806355c67628146104155780636028bfd41461041d57806363fe3b561461043e576102d3565b80634de046d5146103ed57806350dd6ed914610402576102d3565b806338fff2d01161021957806338fff2d0146103ca57806339509351146103d25780634d64cd74146103e5576102d3565b80633644e515146103af57806338e9922e146103b7576102d3565b806318160ddd1161028b5780631dd746ea116102705780631dd746ea1461037257806323b872dd14610387578063313ce5671461039a576102d3565b806318160ddd146103535780631c0de0511461035b576102d3565b8063095ea7b3116102bc578063095ea7b31461031657806316b8d6ff1461033657806316c38b3c1461033e576102d3565b806301ec954a146102d857806306fdde0314610301575b600080fd5b6102eb6102e6366004613e95565b610583565b6040516102f891906141b5565b60405180910390f35b6103096106f9565b6040516102f8919061436d565b610329610324366004613bd2565b6107ad565b6040516102f89190614192565b6102eb6107c4565b61035161034c366004613cc9565b6107e8565b005b6102eb6107fc565b610363610802565b6040516102f89392919061419d565b61037a61082b565b6040516102f8919061415a565b610329610395366004613b1d565b61083a565b6103a26108ce565b6040516102f891906143a7565b6102eb6108d7565b6103516103c5366004613fb4565b6108e1565b6102eb610913565b6103296103e0366004613bd2565b610937565b6102eb610972565b6103f5610996565b6040516102f89190614146565b610351610410366004613e00565b6109ba565b6102eb6109d8565b61043061042b366004613d01565b6109e9565b6040516102f8929190614380565b610446610a20565b6040516102f8929190614399565b6102eb610a4e565b6102eb61046a366004613ac9565b610c02565b61048261047d366004613d01565b610c21565b6040516102f892919061416d565b6102eb61049e366004613ac9565b610c9f565b610351610cba565b6102eb610e74565b6102eb6104c1366004613da4565b610e98565b6104306104d4366004613d01565b610eea565b6103f5610f10565b6103f5610f34565b610309610f58565b6103516104ff366004613fe4565b610fd7565b610329610512366004613bd2565b611041565b610329610525366004613bd2565b61107f565b6103f561108c565b610351610540366004613b5d565b611096565b610482610553366004613d01565b6111df565b6102eb610566366004613ae5565b611310565b6102eb61136b565b6103f561145a565b6102eb61147e565b600084608001516105b0610595610f34565b6001600160a01b0316336001600160a01b03161460cd611500565b6105c56105bb610913565b82146101f4611500565b6105cd61150e565b6105e76003851080156105e05750600384105b6064611500565b60606105f1611523565b90506105fd8682611650565b600080610608610a20565b91509150610614613920565b60405180606001604052806106276109d8565b815260208101859052604001839052905060008a51600181111561064757fe5b14156106ab5761066e8a60600151858a8151811061066157fe5b60200260200101516116b1565b60608b015260006106808b8b846116bd565b905061069f81868a8151811061069257fe5b6020026020010151611784565b965050505050506106f0565b6106bf8a6060015185898151811061066157fe5b60608b015260006106d18b8b84611790565b905061069f81868b815181106106e357fe5b6020026020010151611845565b50949350505050565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b5050505050905090565b60006107ba338484611851565b5060015b92915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6107f06118b9565b6107f9816118ff565b50565b60025490565b600080600061080f61199b565b15925061081a6119b8565b91506108246119dc565b9050909192565b6060610835611523565b905090565b6000806108478533611310565b905061086b336001600160a01b03871614806108635750838210155b61019e611500565b610876858585611a00565b336001600160a01b038616148015906108af57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b156108c1576108c18533858403611851565b60019150505b9392505050565b60055460ff1690565b6000610835611ae0565b6000806108ec610a20565b915091506109056108fd8383611b7d565b61014f611500565b61090e83611c95565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107ba91859061096d9086611492565b611851565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6109c26118b9565b6109ca61150e565b6109d48282611cae565b5050565b6008546000906108359060c0611d8e565b600060606109ff86516109fa611d9c565b611da1565b610a1489898989898989611dae611e52611eb3565b97509795505050505050565b6000806000610a2d612043565b9050610a3a816000612049565b9250610a47816060612049565b9150509091565b600080610a59610913565b90506060610a65610f34565b6001600160a01b031663f94d4668836040518263ffffffff1660e01b8152600401610a9091906141b5565b60006040518083038186803b158015610aa857600080fd5b505afa158015610abc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ae49190810190613bfd565b50915050610af981610af4611523565b611650565b600080610b04610a20565b91509150610b10613920565b6040518060600160405280610b236109d8565b81526020018481526020018381525090506000610baf610b76867f000000000000000000000000000000000000000000000000000000000000000081518110610b6857fe5b60200260200101518461205b565b867f000000000000000000000000000000000000000000000000000000000000000081518110610ba257fe5b60200260200101516120bc565b9050610bf7610bf0867f000000000000000000000000000000000000000000000000000000000000000081518110610be357fe5b60200260200101516120c8565b82906120db565b965050505050505090565b6001600160a01b0381166000908152602081905260409020545b919050565b60608088610c30610595610f34565b610c3b6105bb610913565b6060610c45611523565b9050610c518882611650565b6000606080610c668e8e8e8e8e8e8a8f611dae565b925092509250610c768d84612132565b610c808285611e52565b610c8a8185611e52565b909550935050505b5097509795505050505050565b6001600160a01b031660009081526006602052604090205490565b6000610cc4610913565b90506060610cd0610f34565b6001600160a01b031663f94d4668836040518263ffffffff1660e01b8152600401610cfb91906141b5565b60006040518083038186803b158015610d1357600080fd5b505afa158015610d27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d4f9190810190613bfd565b505060408051600380825260808201909252919250606091906020820183803683370190505090506dffffffffffffffffffffffffffff817f000000000000000000000000000000000000000000000000000000000000000081518110610db257fe5b602002602001018181525050610dc6613941565b6040518060800160405280610dda8561213c565b8152602001838152602001604051806020016040528060008152508152602001600015158152509050610e0b610f34565b6001600160a01b031663b95cac28853030856040518563ffffffff1660e01b8152600401610e3c94939291906141dd565b600060405180830381600087803b158015610e5657600080fd5b505af1158015610e6a573d6000803e3d6000fd5b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610ecd9291906140d0565b604051602081830303815290604052805190602001209050919050565b60006060610efb86516109fa611d9c565b610a148989898989898961213f61215d611eb3565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b610fdf6118b9565b600080610fea610a20565b91509150610ffb6108fd8383611b7d565b6110106110088585611b7d565b610157611500565b61103b7f000000000000000000000000000000000000000000000000000000000000000085856121be565b50505050565b60008061104e3385611310565b90508083106110685761106333856000611851565b611075565b6110753385858403611851565b5060019392505050565b60006107ba338484611a00565b600061083561224f565b6110a48442111560d1611500565b6001600160a01b03871660009081526006602090815260408083205490519092916110fb917f0000000000000000000000000000000000000000000000000000000000000000918c918c918c9188918d91016142bf565b604051602081830303815290604052805190602001209050600061111e826122c9565b9050600060018288888860405160008152602001604052604051611145949392919061434f565b6020604051602081039080840390855afa158015611167573d6000803e3d6000fd5b5050604051601f19015191506111a990506001600160a01b038216158015906111a157508b6001600160a01b0316826001600160a01b0316145b6101f8611500565b6001600160a01b038b1660009081526006602052604090206001850190556111d28b8b8b611851565b5050505050505050505050565b606080886111ee610595610f34565b6111f96105bb610913565b6060611203611523565b905061120d6107fc565b6112c057600060606112228d8d8d868b6122e5565b9150915061123b6112316123a6565b83101560cc611500565b61124d60006112486123a6565b6123ab565b6112608b6112596123a6565b84036123ab565b61126a818461215d565b80611273611d9c565b67ffffffffffffffff8111801561128957600080fd5b506040519080825280602002602001820160405280156112b3578160200160208202803683370190505b5095509550505050610c92565b6112ca8882611650565b60006060806112df8e8e8e8e8e8e8a8f61213f565b9250925092506112ef8c846123ab565b6112f9828561215d565b6113038185611e52565b9095509350610c92915050565b600061131a610f34565b6001600160a01b0316826001600160a01b0316141561135a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107be565b61136483836123b5565b90506107be565b60006060611377610f34565b6001600160a01b031663f94d466861138d610913565b6040518263ffffffff1660e01b81526004016113a991906141b5565b60006040518083038186803b1580156113c157600080fd5b505afa1580156113d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113fd9190810190613bfd565b509150506000611448827f00000000000000000000000000000000000000000000000000000000000000008151811061143257fe5b6020026020010151611443306123e0565b6116b1565b9050611453816124ba565b9250505090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006108356124ce565b806109d4816125a9565b60008282016108c78482101583611500565b60006114b4838311156001611500565b50900390565b67ffffffffffffffff811b1992909216911b1790565b1b90565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116821b90821b198416179392505050565b816109d4576109d481612622565b61152161151961199b565b610192611500565b565b604080516003808252608082019092526060918291906020820183803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000817f00000000000000000000000000000000000000000000000000000000000000008151811061159557fe5b6020026020010181815250506115d36115ac6124ce565b7f00000000000000000000000000000000000000000000000000000000000000009061268f565b817f0000000000000000000000000000000000000000000000000000000000000000815181106115ff57fe5b602002602001018181525050670de0b6b3a7640000817f00000000000000000000000000000000000000000000000000000000000000008151811061164057fe5b6020908102919091010152905090565b60005b61165b611d9c565b81101561090e5761169283828151811061167157fe5b602002602001015183838151811061168557fe5b602002602001015161268f565b83828151811061169e57fe5b6020908102919091010152600101611653565b60006108c7838361268f565b60208301516000906001600160a01b03163014156116e7576116e08484846126c5565b90506108c7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684602001516001600160a01b03161415611730576116e0848484612844565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684602001516001600160a01b03161415611779576116e08484846129a0565b6108c7610135612622565b60006108c78383612af7565b60408301516000906001600160a01b03163014156117b3576116e0848484612b3f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684604001516001600160a01b031614156117fc576116e0848484612cae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684604001516001600160a01b03161415611779576116e0848484612e05565b60006108c783836120db565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906118ac9085906141b5565b60405180910390a3505050565b60006118e86000357fffffffff0000000000000000000000000000000000000000000000000000000016610e98565b90506107f96118f78233612f5c565b610191611500565b801561191f5761191a6119106119b8565b4210610193611500565b611934565b61193461192a6119dc565b42106101a9611500565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151790556040517f9e3a5e37224532dea67b89face185703738a228a6e8a23dee546960180d3be6490611990908390614192565b60405180910390a150565b60006119a56119dc565b42118061083557505060075460ff161590565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b611a176001600160a01b0384161515610198611500565b611a2e6001600160a01b0383161515610199611500565b611a3983838361090e565b6001600160a01b038316600090815260208190526040902054611a5f90826101a0613045565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611a8e9082611492565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118ac9085906141b5565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611b4d61305b565b30604051602001611b629594939291906142f3565b60405160208183030381529060405280519060200120905090565b600080611b88610913565b90506060611b94610f34565b6001600160a01b031663f94d4668836040518263ffffffff1660e01b8152600401611bbf91906141b5565b60006040518083038186803b158015611bd757600080fd5b505afa158015611beb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c139190810190613bfd565b509150506000611c79827f000000000000000000000000000000000000000000000000000000000000000081518110611c4857fe5b60200260200101516114437f00000000000000000000000000000000000000000000000000000000000000006123e0565b9050858110158015611c8b5750848111155b9695505050505050565b611c9d6118b9565b611ca561150e565b6107f98161305f565b6000611cb8610913565b90506000611cc4610f34565b6001600160a01b031663b05f8e4883866040518363ffffffff1660e01b8152600401611cf1929190614338565b60806040518083038186803b158015611d0957600080fd5b505afa158015611d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d419190614005565b6040517f18e736d40000000000000000000000000000000000000000000000000000000081529094506001600160a01b03851693506318e736d49250610e3c91508590879060040161431f565b1c67ffffffffffffffff1690565b600390565b6109d48183146067611500565b60006060806000611dbe856130ca565b90506000818015611dcb57fe5b14611de057611ddb61014e612622565b611e43565b611de86130e0565b611df289866130f4565b9094509250611dff611d9c565b67ffffffffffffffff81118015611e1557600080fd5b50604051908082528060200260200182016040528015611e3f578160200160208202803683370190505b5091505b50985098509895505050505050565b60005b611e5d611d9c565b81101561090e57611e94838281518110611e7357fe5b6020026020010151838381518110611e8757fe5b6020026020010151612af7565b838281518110611ea057fe5b6020908102919091010152600101611e55565b333014611fa2576000306001600160a01b0316600036604051611ed7929190614100565b6000604051808303816000865af19150503d8060008114611f14576040519150601f19603f3d011682016040523d82523d6000602084013e611f19565b606091505b505090508060008114611f2857fe5b60046000803e6000517fffffffff00000000000000000000000000000000000000000000000000000000167f43adbafb000000000000000000000000000000000000000000000000000000008114611f84573d6000803e3d6000fd5b506020600460003e604060205260243d03602460403e601c3d016000f35b6060611fac611523565b9050611fb88782611650565b60006060611fd08c8c8c8c8c8c898d8d63ffffffff16565b5091509150611fe381848663ffffffff16565b8051601f1982018390526343adbafb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301526020027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82016044820181fd5b60085490565b1c6bffffffffffffffffffffffff1690565b600081602001518310156120945781516020830151600091612080918690039061268f565b905061208c84826114a4565b9150506107be565b816040015183116120a65750816107be565b815160408301516000916120809186039061268f565b60006108c78383611492565b6dffffffffffffffffffffffffffff0390565b60006120ea8215156004611500565b826120f7575060006107be565b670de0b6b3a76400008381029061211a9085838161211157fe5b04146005611500565b82600182038161212657fe5b046001019150506107be565b6109d4828261317b565b90565b600060608061214f61014e612622565b985098509895505050505050565b60005b612168611d9c565b81101561090e5761219f83828151811061217e57fe5b602002602001015183838151811061219257fe5b60200260200101516120db565b8382815181106121ab57fe5b6020908102919091010152600101612160565b6121cd8183111561014c611500565b6121e86bffffffffffffffffffffffff82111561014d611500565b6122076121f68260606114d0565b6122018460006114d0565b17613237565b826001600160a01b03167fd0e27a0d0c2cb09280fa5e4487315455b32afcdcf012dc35b6ef2a0e3c4d12808383604051612242929190614399565b60405180910390a2505050565b6000612259610f34565b6001600160a01b031663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561229157600080fd5b505afa1580156122a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108359190613de4565b60006122d3611ae0565b82604051602001610ecd929190614110565b600060606122f161150e565b6123086001600160a01b0387163014610156611500565b61231f6001600160a01b0386163014610156611500565b604080516003808252608082019092526dffffffffffffffffffffffffffff91606091906020820183803683370190505090506dffffffffffffffffffffffffffff817f00000000000000000000000000000000000000000000000000000000000000008151811061238d57fe5b6020908102919091010152909890975095505050505050565b600090565b6109d4828261324c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561244357507f0000000000000000000000000000000000000000000000000000000000000000610c1c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561248f576124886115ac6124ce565b9050610c1c565b6001600160a01b0382163014156124af5750670de0b6b3a7640000610c1c565b610c1c610135612622565b60006107be826124c86107fc565b906114a4565b6000806124d961145a565b90506000816001600160a01b03166307a2d13a670de0b6b3a76400006040518263ffffffff1660e01b815260040161251191906141b5565b60206040518083038186803b15801561252957600080fd5b505afa15801561253d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125619190613fcc565b905060006125a1670de0b6b3a764000061259b847f00000000000000000000000000000000000000000000000000000000000000006132da565b906132f4565b935050505090565b6002815110156125b8576107f9565b6000816000815181106125c757fe5b602002602001015190506000600190505b825181101561090e5760008382815181106125ef57fe5b60200260200101519050612618816001600160a01b0316846001600160a01b0316106065611500565b91506001016125d8565b7f08c379a0000000000000000000000000000000000000000000000000000000006000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b60008282026126b38415806126ac5750838583816126a957fe5b04145b6003611500565b670de0b6b3a764000090049392505050565b600061274b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604001516001600160a01b0316148061274357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604001516001600160a01b0316145b610135611500565b61283c8460600151847f00000000000000000000000000000000000000000000000000000000000000008151811061277f57fe5b6020026020010151857f0000000000000000000000000000000000000000000000000000000000000000815181106127b357fe5b60200260200101516127ea877f000000000000000000000000000000000000000000000000000000000000000081518110610be357fe5b867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a604001516001600160a01b03161461283057613314612834565b6133745b63ffffffff16565b949350505050565b60006128a07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604001516001600160a01b03161480612743575060408501516001600160a01b03163014610135611500565b60408401516001600160a01b031630146128fb576128f68460600151847f0000000000000000000000000000000000000000000000000000000000000000815181106128e857fe5b6020026020010151846133dd565b61283c565b61283c8460600151847f00000000000000000000000000000000000000000000000000000000000000008151811061292f57fe5b6020026020010151857f00000000000000000000000000000000000000000000000000000000000000008151811061296357fe5b602002602001015161299a877f000000000000000000000000000000000000000000000000000000000000000081518110610be357fe5b8661340d565b60006129fc7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685604001516001600160a01b03161480612743575060408501516001600160a01b03163014610135611500565b60408401516001600160a01b03163014612a52576128f68460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612a4457fe5b602002602001015184613473565b61283c8460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612a8657fe5b6020026020010151857f000000000000000000000000000000000000000000000000000000000000000081518110612aba57fe5b6020026020010151612af1877f000000000000000000000000000000000000000000000000000000000000000081518110610be357fe5b866134b3565b6000612b068215156004611500565b82612b13575060006107be565b670de0b6b3a764000083810290612b2d9085838161211157fe5b828181612b3657fe5b049150506107be565b6000612bc47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685602001516001600160a01b0316148061274357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685602001516001600160a01b031614610135611500565b61283c8460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612bf857fe5b6020026020010151857f000000000000000000000000000000000000000000000000000000000000000081518110612c2c57fe5b6020026020010151612c63877f000000000000000000000000000000000000000000000000000000000000000081518110610be357fe5b867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a602001516001600160a01b031614612ca95761351a612834565b613571565b6000612d0a7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685602001516001600160a01b03161480612743575060208501516001600160a01b03163014610135611500565b60208401516001600160a01b03163014612d60576128f68460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612d5257fe5b6020026020010151846135db565b61283c8460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612d9457fe5b6020026020010151857f000000000000000000000000000000000000000000000000000000000000000081518110612dc857fe5b6020026020010151612dff877f000000000000000000000000000000000000000000000000000000000000000081518110610be357fe5b86613605565b6000612e617f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685602001516001600160a01b03161480612743575060208501516001600160a01b03163014610135611500565b60208401516001600160a01b03163014612eb7576128f68460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612ea957fe5b602002602001015184613654565b61283c8460600151847f000000000000000000000000000000000000000000000000000000000000000081518110612eeb57fe5b6020026020010151857f000000000000000000000000000000000000000000000000000000000000000081518110612f1f57fe5b6020026020010151612f56877f000000000000000000000000000000000000000000000000000000000000000081518110610be357fe5b86613689565b600073ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b612f7b610f10565b6001600160a01b031614158015612f965750612f96836136dd565b15612fbe57612fa3610f10565b6001600160a01b0316336001600160a01b03161490506107be565b612fc661224f565b6001600160a01b0316639be2a8848484306040518463ffffffff1660e01b8152600401612ff5939291906141be565b60206040518083038186803b15801561300d57600080fd5b505afa158015613021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113649190613ce5565b60006130548484111583611500565b5050900390565b4690565b61307264e8d4a5100082101560cb611500565b61308867016345785d8a000082111560ca611500565b600854613097908260c06114ba565b6008556040517fa9ba3ffe0b6c366b81232caab38605a0699ad5398d6cce76f91ee809e322dafc906119909083906141b5565b6000818060200190518101906107be9190613e4e565b6115216130eb61199b565b156101af611500565b60006060600061310384613719565b9050606061316e8683613148897f00000000000000000000000000000000000000000000000000000000000000008151811061313b57fe5b60200260200101516124ba565b7f000000000000000000000000000000000000000000000000000000000000000061372f565b9196919550909350505050565b6131926001600160a01b038316151561019b611500565b61319e8260008361090e565b6001600160a01b0382166000908152602081905260409020546131c490826101b2613045565b6001600160a01b0383166000908152602081905260409020556002546131ea90826137eb565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061322b9085906141b5565b60405180910390a35050565b600854613246908260006114d4565b60085550565b6132586000838361090e565b6002546132659082611492565b6002556001600160a01b03821660009081526020819052604090205461328b9082611492565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061322b9085906141b5565b60008282026108c78415806126ac5750838583816126a957fe5b60006133038215156004611500565b81838161330c57fe5b049392505050565b600080613321868461205b565b9050600061332f82876120bc565b9050600061333d868a6114a4565b90506000613358846124c861335285876132da565b8a6137f9565b905061336488826114a4565b9450505050505b95945050505050565b600080613381868461205b565b9050600061338f82876120bc565b905060006133a66133a0838b6132da565b876132f4565b905060006133b484836114a4565b905060006133c2828861382c565b90506133ce8a826114a4565b9b9a5050505050505050505050565b6000806133ea848461205b565b905060006134016133fb8688611492565b8561205b565b9050611c8b81836114a4565b6000826134255761341e868361205b565b905061336b565b6000613431868461205b565b905060006134426133fb888a611492565b9050600061345082846114a4565b9050600061345e84896120bc565b905061336461346d88846132da565b826132f4565b600080613480848461205b565b9050600061348e82876114a4565b9050600061349c828661382c565b90506134a886826114a4565b979650505050505050565b6000826134c157508461336b565b60006134cd868461205b565b905060006134db82876120bc565b905060006134e9878a611492565b905060006134f784836120bc565b9050600061350e61350889846132da565b856132f4565b90506133ce81896114a4565b60008261352857508461336b565b6000613534868461205b565b9050600061354282876120bc565b90506000613550868a611492565b90506000613565846124c861335285876132da565b905061336481896114a4565b6000826135825761341e868361382c565b600061358e868461205b565b9050600061359c82876120bc565b905060006135b36135ad838b6132da565b876137f9565b905060006135c18483611492565b905060006135cf828861382c565b90506133ce818b6114a4565b6000806135e8848461205b565b905060006135f96133fb86886114a4565b9050611c8b82826114a4565b600080613612868461205b565b905060006136236133fb888a6114a4565b9050600061363183836114a4565b9050600061363f84896120bc565b905061336461364e88846132da565b826137f9565b600080613661848461205b565b9050600061366f8287611492565b9050600061367d828661382c565b90506134a881876114a4565b600080613696868461205b565b905060006136a482876120bc565b905060006136b2878a6114a4565b905060006136c084836120bc565b905060006136d161350889846132da565b90506133ce88826114a4565b60006137087f9f11080e00000000000000000000000000000000000000000000000000000000610e98565b8214806107be57506107be826138bc565b6000818060200190518101906108c79190613e69565b6060600061373d8585612af7565b90506060865167ffffffffffffffff8111801561375957600080fd5b50604051908082528060200260200182016040528015613783578160200160208202803683370190505b50905060005b87518110156137e0578481146137d8576137bf838983815181106137a957fe5b602002602001015161268f90919063ffffffff16565b8282815181106137cb57fe5b6020026020010181815250505b600101613789565b509695505050505050565b60006108c783836001613045565b60006138088215156004611500565b82613815575060006107be565b81600184038161382157fe5b0460010190506107be565b600081602001518310156138755781516113649061385390670de0b6b3a764000090611492565b6020840151845161386f91613868919061268f565b8690611492565b90612af7565b816040015183116138875750816107be565b8151611364906138a090670de0b6b3a7640000906114a4565b6040840151845161386f916138b5919061268f565b86906114a4565b60006138e77f38e9922e00000000000000000000000000000000000000000000000000000000610e98565b8214806107be57506139187f50dd6ed900000000000000000000000000000000000000000000000000000000610e98565b909114919050565b60405180606001604052806000815260200160008152602001600081525090565b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b80356107be81614408565b600082601f830112613986578081fd5b8135613999613994826143dc565b6143b5565b8181529150602080830190848101818402860182018710156139ba57600080fd5b60005b848110156139d9578135845292820192908201906001016139bd565b505050505092915050565b600082601f8301126139f4578081fd5b8151613a02613994826143dc565b818152915060208083019084810181840286018201871015613a2357600080fd5b60005b848110156139d957815184529282019290820190600101613a26565b600082601f830112613a52578081fd5b813567ffffffffffffffff811115613a68578182fd5b613a7b6020601f19601f840116016143b5565b9150808252836020828501011115613a9257600080fd5b8060208401602084013760009082016020015292915050565b8051600181106107be57600080fd5b8035600281106107be57600080fd5b600060208284031215613ada578081fd5b81356108c781614408565b60008060408385031215613af7578081fd5b8235613b0281614408565b91506020830135613b1281614408565b809150509250929050565b600080600060608486031215613b31578081fd5b8335613b3c81614408565b92506020840135613b4c81614408565b929592945050506040919091013590565b600080600080600080600060e0888a031215613b77578283fd5b8735613b8281614408565b96506020880135613b9281614408565b95506040880135945060608801359350608088013560ff81168114613bb5578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215613be4578182fd5b8235613bef81614408565b946020939093013593505050565b600080600060608486031215613c11578081fd5b835167ffffffffffffffff80821115613c28578283fd5b818601915086601f830112613c3b578283fd5b8151613c49613994826143dc565b80828252602080830192508086018b828387028901011115613c69578788fd5b8796505b84871015613c94578051613c8081614408565b845260019690960195928101928101613c6d565b508901519097509350505080821115613cab578283fd5b50613cb8868287016139e4565b925050604084015190509250925092565b600060208284031215613cda578081fd5b81356108c78161441d565b600060208284031215613cf6578081fd5b81516108c78161441d565b600080600080600080600060e0888a031215613d1b578081fd5b873596506020880135613d2d81614408565b95506040880135613d3d81614408565b9450606088013567ffffffffffffffff80821115613d59578283fd5b613d658b838c01613976565b955060808a0135945060a08a0135935060c08a0135915080821115613d88578283fd5b50613d958a828b01613a42565b91505092959891949750929550565b600060208284031215613db5578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108c7578182fd5b600060208284031215613df5578081fd5b81516108c781614408565b60008060408385031215613e12578182fd5b8235613e1d81614408565b9150602083013567ffffffffffffffff811115613e38578182fd5b613e4485828601613a42565b9150509250929050565b600060208284031215613e5f578081fd5b6108c78383613aab565b60008060408385031215613e7b578182fd5b613e858484613aab565b9150602083015190509250929050565b60008060008060808587031215613eaa578182fd5b843567ffffffffffffffff80821115613ec1578384fd5b818701915061012080838a031215613ed7578485fd5b613ee0816143b5565b9050613eec8984613aba565b8152613efb896020850161396b565b6020820152613f0d896040850161396b565b6040820152606083013560608201526080830135608082015260a083013560a0820152613f3d8960c0850161396b565b60c0820152613f4f8960e0850161396b565b60e08201526101008084013583811115613f67578687fd5b613f738b828701613a42565b828401525050809650506020870135915080821115613f90578384fd5b50613f9d87828801613976565b949794965050505060408301359260600135919050565b600060208284031215613fc5578081fd5b5035919050565b600060208284031215613fdd578081fd5b5051919050565b60008060408385031215613ff6578182fd5b50508035926020909101359150565b6000806000806080858703121561401a578182fd5b845193506020850151925060408501519150606085015161403a81614408565b939692955090935050565b6000815180845260208085019450808401835b8381101561407457815187529582019590820190600101614058565b509495945050505050565b15159052565b60008151808452815b818110156140aa5760208185018101518683018201520161408e565b818111156140bb5782602083870101525b50601f01601f19169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6000828483379101908152919050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6000602082526108c76020830184614045565b6000604082526141806040830185614045565b828103602084015261336b8185614045565b901515815260200190565b92151583526020830191909152604082015260600190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b600085825260206001600160a01b038087168285015280861660408501525060806060840152610100830184516080808601528181518084526101208701915084830193508592505b8083101561424e5761423884516143fc565b8252928401926001929092019190840190614226565b508387015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809250828682030160a087015261428c8185614045565b935050506040850151818584030160c08601526142a98382614085565b9250505060608401516137e060e085018261407f565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b60008382526040602083015261283c6040830184614085565b9182526001600160a01b0316602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526108c76020830184614085565b60008382526040602083015261283c6040830184614045565b918252602082015260400190565b60ff91909116815260200190565b60405181810167ffffffffffffffff811182821017156143d457600080fd5b604052919050565b600067ffffffffffffffff8211156143f2578081fd5b5060209081020190565b6001600160a01b031690565b6001600160a01b03811681146107f957600080fd5b80151581146107f957600080fdfea26469706673582212200fbadc367b8879628dc7ed74c8e19d9c31dab509d2a82dea92ea8a0a495594d764736f6c63430007010033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100715760003560e01c80632da47c40116100505780632da47c40146100ca5780636634b753146100e05780638d928af81461010057610071565b8062c194db14610076578063174481fa146100945780632ccb254a146100aa575b600080fd5b61007e610108565b60405161008b91906107f0565b60405180910390f35b61009c610127565b60405161008b9291906107be565b6100bd6100b83660046106a7565b61016d565b60405161008b9190610803565b6100d2610232565b60405161008b9291906108aa565b6100f36100ee36600461068b565b61029c565b60405161008b91906107e5565b6100bd6102c7565b60606101226040518060200160405280600081525061034a565b905090565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000009091565b600080600061017a610232565b9150915060006101c161018b6102c7565b8c8c8c8c8c8c8a8a8e6040516020016101ad9a99989796959493929190610824565b604051602081830303815290604052610423565b90508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b50929d9c50505050505050505050505050565b600080427f000000000000000000000000000000000000000000000000000000000000000081101561028e57807f000000000000000000000000000000000000000000000000000000000000000003925062278d009150610297565b60009250600091505b509091565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f0908452915061034473ffffffffffffffffffffffffffffffffffffffff831615156101ac6104ae565b50919050565b8051604080517f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000818101858101848101602090810190965280855293957f00000000000000000000000000000000000000000000000000000000000000009592947f000000000000000000000000000000000000000000000000000000000000000094938801866000828a3c846000888301883c50602089810190898501016104158183866104c0565b505050505050505050919050565b60008061042f8361053a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a292915050565b816104bc576104bc81610582565b5050565b5b602081106104fe5781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016104c1565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b600060606105478361034a565b905060008151602083016000f0905073ffffffffffffffffffffffffffffffffffffffff811661057b573d6000803e3d6000fd5b9392505050565b7f08c379a0000000000000000000000000000000000000000000000000000000006000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b600082601f8301126105ff578081fd5b813567ffffffffffffffff80821115610616578283fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168201018181108382111715610654578485fd5b60405282815292508284830160200186101561066f57600080fd5b8260208601602083013760006020848301015250505092915050565b60006020828403121561069c578081fd5b813561057b816108b8565b600080600080600080600060e0888a0312156106c1578283fd5b873567ffffffffffffffff808211156106d8578485fd5b6106e48b838c016105ef565b985060208a01359150808211156106f9578485fd5b506107068a828b016105ef565b9650506040880135610717816108b8565b94506060880135610727816108b8565b93506080880135925060a0880135915060c0880135610745816108b8565b8091505092959891949750929550565b60008151808452815b8181101561077a5760208185018101518683018201520161075e565b8181111561078b5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b60006020825261057b6020830184610755565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600061014073ffffffffffffffffffffffffffffffffffffffff808e1684528160208501526108558285018e610755565b91508382036040850152610869828d610755565b9a811660608501529889166080840152505060a081019590955260c085019390935260e0840191909152610100830152909116610120909101529392505050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146108da57600080fd5b5056fea2646970667358221220a5c0aa9d95e4596854764f3af36a908ca52cc39d141927e9cbae5a5702764f9064736f6c63430007010033",
"linkReferences": {},
"deployedLinkReferences": {}
}