[ { "inputs": [ { "internalType": "address", "name": "_pool", "type": "address" }, { "internalType": "address", "name": "_governor", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ExcessiveSlippage", "type": "error" }, { "inputs": [], "name": "InvalidAddress", "type": "error" }, { "inputs": [], "name": "InvalidAmount", "type": "error" }, { "inputs": [], "name": "LengthMismatch", "type": "error" }, { "inputs": [], "name": "OnlyGovernor", "type": "error" }, { "inputs": [], "name": "OnlyPendingGovernor", "type": "error" }, { "inputs": [], "name": "OnlyPool", "type": "error" }, { "inputs": [], "name": "UnsuccessfulTransfer", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "inputs": [], "name": "ZeroAmount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_newGovernor", "type": "address" } ], "name": "PendingGovernorAccepted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_governor", "type": "address" }, { "indexed": false, "internalType": "address", "name": "_pendingGovernor", "type": "address" } ], "name": "PendingGovernorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "acceptPendingGovernor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0Min", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Min", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "collect", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "governor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount0Desired", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Desired", "type": "uint256" }, { "internalType": "uint256", "name": "amount0Min", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Min", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint128", "name": "liquidity", "type": "uint128" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingGovernor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pool", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "position", "outputs": [ { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "feeGrowthInside0LastX128", "type": "uint256" }, { "internalType": "uint256", "name": "feeGrowthInside1LastX128", "type": "uint256" }, { "internalType": "uint128", "name": "tokensOwed0", "type": "uint128" }, { "internalType": "uint128", "name": "tokensOwed1", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_pendingGovernor", "type": "address" } ], "name": "setPendingGovernor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sqrtRatioAX96", "outputs": [ { "internalType": "uint160", "name": "", "type": "uint160" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sqrtRatioBX96", "outputs": [ { "internalType": "uint160", "name": "", "type": "uint160" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tickLower", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tickSpacing", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tickUpper", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token0", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount0Owed", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Owed", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "uniswapV3MintCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101c06040523480156200001257600080fd5b506040516200326138038062003261833981016040819052620000359162000b2f565b806001600160a01b0381166200005e5760405163d92e233d60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b039283161781556040805163ddca3f4360e01b81529051919285169163ddca3f4391600480820192602092909190829003018186803b158015620000b657600080fd5b505afa158015620000cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f1919062000b67565b90506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012f57600080fd5b505afa15801562000144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016a919062000b95565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620001a857600080fd5b505afa158015620001bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e3919062000b95565b90506000856001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022157600080fd5b505afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000bb3565b905060006200026f82620d89e862000bee565b6200027e90620d89e862000c29565b905060006200028d8262000c77565b33606090811b60805289811b6001600160601b031990811660e05260e889811b6001600160e81b0319166101005286811b6101a05285811b6101805283901b6101605287821b811660a0529086901b1660c052604080516395d89b4160e01b815290519192506001600160a01b038716916395d89b4191600480820192600092909190829003018186803b1580156200032557600080fd5b505afa1580156200033a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000364919081019062000ce6565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200039e57600080fd5b505afa158015620003b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003dd919081019062000ce6565b604051602001620003f092919062000d9e565b604051602081830303815290604052600290805190602001906200041692919062000a6c565b50846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200045157600080fd5b505afa15801562000466573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000490919081019062000ce6565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620004ca57600080fd5b505afa158015620004df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000509919081019062000ce6565b6040516020016200051c92919062000df5565b604051602081830303815290604052600390805190602001906200054292919062000a6c565b5062000559816200060a60201b62000e911760201c565b6001600160a01b0316610120816001600160a01b031660601b815250506200058c826200060a60201b62000e911760201c565b606090811b6001600160601b031916610140526040805191820181526001600160a01b03968716808352959096166020820181905262ffffff9790971695018590525050600780546001600160a01b03191690921790915550600880546001600160b81b031916909217600160a01b9091021790555062000f0d9050565b60008060008360020b1262000623578260020b62000632565b8260020b620006329062000e45565b905062000643620d89e71962000c77565b60020b8111156200067e5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640160405180910390fd5b6000600182166200069457600160801b620006a6565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615620006de576080620006d9826ffff97272373d413259a46990580e213a62000e65565b901c90505b60048216156200070b57608062000706826ffff2e50f5f656932ef12357cf3c7fdcc62000e65565b901c90505b60088216156200073857608062000733826fffe5caca7e10e4e61c3624eaa0941cd062000e65565b901c90505b60108216156200076557608062000760826fffcb9843d60f6159c9db58835c92664462000e65565b901c90505b6020821615620007925760806200078d826fff973b41fa98c081472e6896dfb254c062000e65565b901c90505b6040821615620007bf576080620007ba826fff2ea16466c96a3843ec78b326b5286162000e65565b901c90505b6080821615620007ec576080620007e7826ffe5dee046a99a2a811c461f1969c305362000e65565b901c90505b6101008216156200081a57608062000815826ffcbe86c7900a88aedcffc83b479aa3a462000e65565b901c90505b6102008216156200084857608062000843826ff987a7253ac413176f2b074cf7815e5462000e65565b901c90505b6104008216156200087657608062000871826ff3392b0822b70005940c7a398e4b70f362000e65565b901c90505b610800821615620008a45760806200089f826fe7159475a2c29b7443b29c7fa6e889d962000e65565b901c90505b611000821615620008d2576080620008cd826fd097f3bdfd2022b8845ad8f792aa582562000e65565b901c90505b61200082161562000900576080620008fb826fa9f746462d870fdf8a65dc1f90e061e562000e65565b901c90505b6140008216156200092e57608062000929826f70d869a156d2a1b890bb3df62baf32f762000e65565b901c90505b6180008216156200095c57608062000957826f31be135f97d08fd981231505542fcfa662000e65565b901c90505b620100008216156200098b57608062000986826f09aa508b5b7a84e1c677de54f3e99bc962000e65565b901c90505b62020000821615620009b9576080620009b4826e5d6af8dedb81196699c329225ee60462000e65565b901c90505b62040000821615620009e6576080620009e1826d2216e584f5fa1ea926041bedfe9862000e65565b901c90505b6208000082161562000a1157608062000a0c826b048a170391f7dc42444e8fa262000e65565b901c90505b60008460020b131562000a2f5762000a2c8160001962000e87565b90505b62000a406401000000008262000e9e565b1562000a4e57600162000a51565b60005b62000a649060ff16602083901c62000eb5565b949350505050565b82805462000a7a9062000ed0565b90600052602060002090601f01602090048101928262000a9e576000855562000ae9565b82601f1062000ab957805160ff191683800117855562000ae9565b8280016001018555821562000ae9579182015b8281111562000ae957825182559160200191906001019062000acc565b5062000af792915062000afb565b5090565b5b8082111562000af7576000815560010162000afc565b80516001600160a01b038116811462000b2a57600080fd5b919050565b6000806040838503121562000b4357600080fd5b62000b4e8362000b12565b915062000b5e6020840162000b12565b90509250929050565b60006020828403121562000b7a57600080fd5b815162ffffff8116811462000b8e57600080fd5b9392505050565b60006020828403121562000ba857600080fd5b62000b8e8262000b12565b60006020828403121562000bc657600080fd5b81518060020b811462000b8e57600080fd5b634e487b7160e01b600052601260045260246000fd5b60008260020b8062000c045762000c0462000bd8565b808360020b0791505092915050565b634e487b7160e01b600052601160045260246000fd5b60008160020b8360020b6000811281627fffff190183128115161562000c535762000c5362000c13565b81627fffff01831381161562000c6d5762000c6d62000c13565b5090039392505050565b60008160020b627fffff1981141562000c945762000c9462000c13565b60000392915050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000cd057818101518382015260200162000cb6565b8381111562000ce0576000848401525b50505050565b60006020828403121562000cf957600080fd5b81516001600160401b038082111562000d1157600080fd5b818401915084601f83011262000d2657600080fd5b81518181111562000d3b5762000d3b62000c9d565b604051601f8201601f19908116603f0116810190838211818310171562000d665762000d6662000c9d565b8160405282815287602084870101111562000d8057600080fd5b62000d9383602083016020880162000cb3565b979650505050505050565b6a025b2b2b819b926281016960ad1b81526000835162000dc681600b85016020880162000cb3565b602f60f81b600b91840191820152835162000de981600c84016020880162000cb3565b01600c01949350505050565b636b4c502d60e01b81526000835162000e1681600485016020880162000cb3565b602f60f81b600491840191820152835162000e3981600584016020880162000cb3565b01600501949350505050565b6000600160ff1b82141562000e5e5762000e5e62000c13565b5060000390565b600081600019048311821515161562000e825762000e8262000c13565b500290565b60008262000e995762000e9962000bd8565b500490565b60008262000eb05762000eb062000bd8565b500690565b6000821982111562000ecb5762000ecb62000c13565b500190565b600181811c9082168062000ee557607f821691505b6020821081141562000f0757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160601c6101405160601c6101605160e81c6101805160e81c6101a05160e81c6122126200104f600039600061047801526000818161033b0152818161063e0152818161092f01528181610a8601528181610c6f01528181610dc7015261158e015260008181610375015281816106130152818161090401528181610a6401528181610c4401528181610da5015261156c01526000818161042901526114840152600081816102fa0152611463015260006105040152600081816102a9015281816106790152818161097301528181610a3501528181610b3c01528181610b8f01528181610bcd01528181610ca401528181610d72015281816113c6015261153b0152600061049f015260006102780152600061040201526122126000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806395d89b41116100f9578063d21220a711610097578063ddca3f4311610071578063ddca3f43146104ff578063e3056a341461053a578063e52253811461054d578063f235757f1461055557600080fd5b8063d21220a71461049a578063d3487997146104c1578063dd62ed3e146104d457600080fd5b8063c45a0155116100d3578063c45a0155146103fd578063c627526114610424578063cf51148d1461044b578063d0c93a7c1461047357600080fd5b806395d89b41146103b7578063a3e6dc28146103bf578063a9059cbb146103ea57600080fd5b806318160ddd11610166578063313ce56711610140578063313ce5671461031c57806355b812a81461033657806359c4f9051461037057806370a082311461039757600080fd5b806318160ddd146102cb57806323b872dd146102e25780632ea28f5b146102f557600080fd5b80630c340a24116101a25780630c340a24146102485780630dfe16811461027357806313f6986d1461029a57806316f0115b146102a457600080fd5b806306fdde03146101c957806309218e91146101e7578063095ea7b314610225575b600080fd5b6101d1610568565b6040516101de9190611b6a565b60405180910390f35b6101ef6105f6565b604080516001600160801b039687168152602081019590955284019290925283166060830152909116608082015260a0016101de565b610238610233366004611b92565b610738565b60405190151581526020016101de565b60005461025b906001600160a01b031681565b6040516001600160a01b0390911681526020016101de565b61025b7f000000000000000000000000000000000000000000000000000000000000000081565b6102a26107a4565b005b61025b7f000000000000000000000000000000000000000000000000000000000000000081565b6102d460045481565b6040519081526020016101de565b6102386102f0366004611bbe565b6107d9565b61025b7f000000000000000000000000000000000000000000000000000000000000000081565b610324601281565b60405160ff90911681526020016101de565b61035d7f000000000000000000000000000000000000000000000000000000000000000081565b60405160029190910b81526020016101de565b61035d7f000000000000000000000000000000000000000000000000000000000000000081565b6102d46103a5366004611bff565b60066020526000908152604090205481565b6101d16108a2565b6103d26103cd366004611c1c565b6108af565b6040516001600160801b0390911681526020016101de565b6102386103f8366004611b92565b6108df565b61025b7f000000000000000000000000000000000000000000000000000000000000000081565b61025b7f000000000000000000000000000000000000000000000000000000000000000081565b61045e610459366004611c7e565b6108f5565b604080519283526020830191909152016101de565b61035d7f000000000000000000000000000000000000000000000000000000000000000081565b61025b7f000000000000000000000000000000000000000000000000000000000000000081565b6102a26104cf366004611cc8565b610b21565b6102d46104e2366004611d48565b600560209081526000928352604080842090915290825290205481565b6105267f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff90911681526020016101de565b60015461025b906001600160a01b031681565b61045e610bf9565b6102a2610563366004611bff565b610e5a565b6002805461057590611d81565b80601f01602080910402602001604051908101604052809291908181526020018280546105a190611d81565b80156105ee5780601f106105c3576101008083540402835291602001916105ee565b820191906000526020600020905b8154815290600101906020018083116105d157829003601f168201915b505050505081565b6040516bffffffffffffffffffffffff193060601b1660208201527f000000000000000000000000000000000000000000000000000000000000000060e890811b60348301527f0000000000000000000000000000000000000000000000000000000000000000901b603782015260009081908190819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063514ea4bf90603a01604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016106d791815260200190565b60a06040518083038186803b1580156106ef57600080fd5b505afa158015610703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107279190611dbc565b939992985090965094509092509050565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107939086815260200190565b60405180910390a350600192915050565b6001546001600160a01b031633146107cf57604051639ba0305d60e01b815260040160405180910390fd5b6107d76112b2565b565b6001600160a01b03831660008181526005602090815260408083203380855292528220549192909190821480159061081357506000198114155b156108895760006108248583611e26565b6001600160a01b038881166000818152600560209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b610894868686611310565b6001925050505b9392505050565b6003805461057590611d81565b60006108bd868686866113be565b509091506108d69050826001600160801b038316611645565b95945050505050565b60006108ec338484611310565b50600192915050565b60405163a34123a760e01b81527f0000000000000000000000000000000000000000000000000000000000000000600290810b60048301527f0000000000000000000000000000000000000000000000000000000000000000900b60248201526001600160801b038516604482015260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a7906064016040805180830381600087803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611e3d565b909250905084821080610a0057508381105b15610a1e576040516397c7f53760e01b815260040160405180910390fd5b6040516309e3d67b60e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f1eb3d890610ab29086907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009088908890600401611e61565b6040805180830381600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b039190611e9e565b5050610b1833876001600160801b03166116cf565b94509492505050565b6000610b2f82840184611f04565b9050336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b7a57604051634b60273560e01b815260040160405180910390fd5b8415610bb4578051516020820151610bb491907f000000000000000000000000000000000000000000000000000000000000000088611751565b8315610bf257610bf281600001516020015182602001517f000000000000000000000000000000000000000000000000000000000000000087611751565b5050505050565b6000805481906001600160a01b03163314610c275760405163070545c960e51b815260040160405180910390fd5b6040516bffffffffffffffffffffffff193060601b1660208201527f000000000000000000000000000000000000000000000000000000000000000060e890811b60348301527f0000000000000000000000000000000000000000000000000000000000000000901b603782015260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063514ea4bf90603a01604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610d0291815260200190565b60a06040518083038186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d529190611dbc565b6000546040516309e3d67b60e31b81529297509095506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169550634f1eb3d89450610df3935016907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009088908890600401611e61565b6040805180830381600087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190611e9e565b6001600160801b03918216969116945092505050565b6000546001600160a01b03163314610e855760405163070545c960e51b815260040160405180910390fd5b610e8e81611763565b50565b60008060008360020b12610ea8578260020b610eb5565b8260020b610eb590611fbf565b9050610ec4620d89e719611fdc565b60020b811115610efe5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640160405180910390fd5b600060018216610f1257600160801b610f24565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610f63576080610f5e826ffff97272373d413259a46990580e213a611fff565b901c90505b6004821615610f8d576080610f88826ffff2e50f5f656932ef12357cf3c7fdcc611fff565b901c90505b6008821615610fb7576080610fb2826fffe5caca7e10e4e61c3624eaa0941cd0611fff565b901c90505b6010821615610fe1576080610fdc826fffcb9843d60f6159c9db58835c926644611fff565b901c90505b602082161561100b576080611006826fff973b41fa98c081472e6896dfb254c0611fff565b901c90505b6040821615611035576080611030826fff2ea16466c96a3843ec78b326b52861611fff565b901c90505b608082161561105f57608061105a826ffe5dee046a99a2a811c461f1969c3053611fff565b901c90505b61010082161561108a576080611085826ffcbe86c7900a88aedcffc83b479aa3a4611fff565b901c90505b6102008216156110b55760806110b0826ff987a7253ac413176f2b074cf7815e54611fff565b901c90505b6104008216156110e05760806110db826ff3392b0822b70005940c7a398e4b70f3611fff565b901c90505b61080082161561110b576080611106826fe7159475a2c29b7443b29c7fa6e889d9611fff565b901c90505b611000821615611136576080611131826fd097f3bdfd2022b8845ad8f792aa5825611fff565b901c90505b61200082161561116157608061115c826fa9f746462d870fdf8a65dc1f90e061e5611fff565b901c90505b61400082161561118c576080611187826f70d869a156d2a1b890bb3df62baf32f7611fff565b901c90505b6180008216156111b75760806111b2826f31be135f97d08fd981231505542fcfa6611fff565b901c90505b620100008216156111e35760806111de826f09aa508b5b7a84e1c677de54f3e99bc9611fff565b901c90505b6202000082161561120e576080611209826e5d6af8dedb81196699c329225ee604611fff565b901c90505b62040000821615611238576080611233826d2216e584f5fa1ea926041bedfe98611fff565b901c90505b6208000082161561126057608061125b826b048a170391f7dc42444e8fa2611fff565b901c90505b60008460020b131561127b5761127881600019612034565b90505b61128a64010000000082612048565b15611296576001611299565b60005b6112aa9060ff16602083901c61205c565b949350505050565b60018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f5d5d6e01b731c3e68060f7fe13156f6197d4aeffc2d6f498e34c717ae616b7349060200160405180910390a1565b6001600160a01b03831660009081526006602052604081208054839290611338908490611e26565b90915550506001600160a01b0382166000908152600660205260408120805483929061136590849061205c565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113b191815260200190565b60405180910390a3505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114559190612096565b50505050505090506114aa817f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008b8b6117ec565b6040805160a080820183526007546001600160a01b039081168385018181526008548084166060808801918252600160a01b90920462ffffff9081166080808a01918252948952336020998a019081528a51998a019690965291518616888a01529051169086015290518216848201528451808503909101815291830193849052633c8a7d8d60e01b9093529296507f000000000000000000000000000000000000000000000000000000000000000090911691633c8a7d8d916115b99130917f0000000000000000000000000000000000000000000000000000000000000000917f0000000000000000000000000000000000000000000000000000000000000000918b919060a401612130565b6040805180830381600087803b1580156115d257600080fd5b505af11580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a9190611e3d565b90935091508583108061161c57508482105b1561163a576040516397c7f53760e01b815260040160405180910390fd5b509450945094915050565b8060046000828254611657919061205c565b90915550506001600160a01b0382166000908152600660205260408120805483929061168490849061205c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b80600460008282546116e19190611e26565b90915550506001600160a01b0382166000908152600660205260408120805483929061170e908490611e26565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016116c3565b61175d848484846118ae565b50505050565b6001600160a01b03811661178a5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b038381169182179092556000546040805191909316815260208101919091527f6353ec38ac394f8be94bfafcdd3580d356470599059eaeebedc3207e1cc03dec910160405180910390a150565b6000836001600160a01b0316856001600160a01b0316111561180c579293925b846001600160a01b0316866001600160a01b031611611837576118308585856119a8565b90506108d6565b836001600160a01b0316866001600160a01b0316101561189957600061185e8786866119a8565b9050600061186d878986611a12565b9050806001600160801b0316826001600160801b03161061188e5780611890565b815b925050506108d6565b6118a4858584611a12565b9695505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691611912919061217d565b6000604051808303816000865af19150503d806000811461194f576040519150601f19603f3d011682016040523d82523d6000602084013e611954565b606091505b509150915081158061198257508051158015906119825750808060200190518101906119809190612199565b155b156119a0576040516316369daf60e31b815260040160405180910390fd5b505050505050565b6000826001600160a01b0316846001600160a01b031611156119c8579192915b60006119eb856001600160a01b0316856001600160a01b0316600160601b611a48565b90506108d6611a0d84836119ff89896121b4565b6001600160a01b0316611a48565b611af7565b6000826001600160a01b0316846001600160a01b03161115611a32579192915b6112aa611a0d83600160601b6119ff88886121b4565b600080806000198587098587029250828110838203039150508060001415611a825760008411611a7757600080fd5b50829004905061089b565b808411611a8e57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b806001600160801b0381168114611b0d57600080fd5b919050565b60005b83811015611b2d578181015183820152602001611b15565b8381111561175d5750506000910152565b60008151808452611b56816020860160208601611b12565b601f01601f19169290920160200192915050565b60208152600061089b6020830184611b3e565b6001600160a01b0381168114610e8e57600080fd5b60008060408385031215611ba557600080fd5b8235611bb081611b7d565b946020939093013593505050565b600080600060608486031215611bd357600080fd5b8335611bde81611b7d565b92506020840135611bee81611b7d565b929592945050506040919091013590565b600060208284031215611c1157600080fd5b813561089b81611b7d565b600080600080600060a08688031215611c3457600080fd5b853594506020860135935060408601359250606086013591506080860135611c5b81611b7d565b809150509295509295909350565b6001600160801b0381168114610e8e57600080fd5b60008060008060808587031215611c9457600080fd5b8435611c9f81611c69565b935060208501359250604085013591506060850135611cbd81611b7d565b939692955090935050565b60008060008060608587031215611cde57600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115611d0457600080fd5b818701915087601f830112611d1857600080fd5b813581811115611d2757600080fd5b886020828501011115611d3957600080fd5b95989497505060200194505050565b60008060408385031215611d5b57600080fd5b8235611d6681611b7d565b91506020830135611d7681611b7d565b809150509250929050565b600181811c90821680611d9557607f821691505b60208210811415611db657634e487b7160e01b600052602260045260246000fd5b50919050565b600080600080600060a08688031215611dd457600080fd5b8551611ddf81611c69565b8095505060208601519350604086015192506060860151611dff81611c69565b6080870151909250611c5b81611c69565b634e487b7160e01b600052601160045260246000fd5b600082821015611e3857611e38611e10565b500390565b60008060408385031215611e5057600080fd5b505080516020909101519092909150565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b60008060408385031215611eb157600080fd5b8251611ebc81611c69565b6020840151909250611d7681611c69565b6040516060810167ffffffffffffffff81118282101715611efe57634e487b7160e01b600052604160045260246000fd5b60405290565b60008183036080811215611f1757600080fd5b6040516040810181811067ffffffffffffffff82111715611f4857634e487b7160e01b600052604160045260246000fd5b6040526060821215611f5957600080fd5b611f61611ecd565b91508335611f6e81611b7d565b82526020840135611f7e81611b7d565b6020830152604084013562ffffff81168114611f9957600080fd5b6040830152908152606083013590611fb082611b7d565b60208101919091529392505050565b6000600160ff1b821415611fd557611fd5611e10565b5060000390565b60008160020b627fffff19811415611ff657611ff6611e10565b60000392915050565b600081600019048311821515161561201957612019611e10565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826120435761204361201e565b500490565b6000826120575761205761201e565b500690565b6000821982111561206f5761206f611e10565b500190565b805161ffff81168114611b0d57600080fd5b80518015158114611b0d57600080fd5b600080600080600080600060e0888a0312156120b157600080fd5b87516120bc81611b7d565b8097505060208801518060020b81146120d457600080fd5b95506120e260408901612074565b94506120f060608901612074565b93506120fe60808901612074565b925060a088015160ff8116811461211457600080fd5b915061212260c08901612086565b905092959891949750929550565b60018060a01b03861681528460020b60208201528360020b60408201526001600160801b038316606082015260a06080820152600061217260a0830184611b3e565b979650505050505050565b6000825161218f818460208701611b12565b9190910192915050565b6000602082840312156121ab57600080fd5b61089b82612086565b60006001600160a01b03838116908316818110156121d4576121d4611e10565b03939250505056fea2646970667358221220a5cf752f3a9624b2bde030ec682170656211d5a7c372ef46b65ffb00bb78c39e64736f6c634300080800330000000000000000000000008bfdd4689dc4669bd818c0551a510301f091103c000000000000000000000000169cf949ab1b25453b70f2fe874e2c65c10ae0f8