keep3r-v2
Version:
The Keep3r Network is a decentralized network for projects that need external devops, and for external teams to find keeper jobs
578 lines • 51.4 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "UniV3PairManager",
"sourceName": "solidity/contracts/UniV3PairManager.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_pool",
"type": "address"
},
{
"internalType": "address",
"name": "_governance",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "ExcessiveSlippage",
"type": "error"
},
{
"inputs": [],
"name": "NoGovernanceZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "OnlyGovernance",
"type": "error"
},
{
"inputs": [],
"name": "OnlyPendingGovernance",
"type": "error"
},
{
"inputs": [],
"name": "OnlyPool",
"type": "error"
},
{
"inputs": [],
"name": "UnsuccessfulTransfer",
"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": "_pendingGovernance",
"type": "address"
}
],
"name": "GovernanceProposal",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "_governance",
"type": "address"
}
],
"name": "GovernanceSet",
"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": "acceptGovernance",
"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": "fee",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "governance",
"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": "pendingGovernance",
"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": "_governance",
"type": "address"
}
],
"name": "setGovernance",
"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": "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"
}
],
"bytecode": "0x61014060405260006004553480156200001757600080fd5b5060405162002dbc38038062002dbc8339810160408190526200003a9162000a9f565b806001600160a01b038116620000625760405162b293ed60e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03928316178155606084901b6001600160601b03191660c0526040805163ddca3f4360e01b81529051919285169163ddca3f4391600480820192602092909190829003018186803b158015620000cc57600080fd5b505afa158015620000e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000107919062000b8f565b90508062ffffff1660e08162ffffff1660e81b815250506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200015a57600080fd5b505afa1580156200016f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000195919062000a7a565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620001d357600080fd5b505afa158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e919062000a7a565b6001600160601b0319606084811b821660805282901b1660a052604080516395d89b4160e01b815290519192506001600160a01b038416916395d89b4191600480820192600092909190829003018186803b1580156200026d57600080fd5b505afa15801562000282573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620002ac919081019062000ad7565b816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620002e657600080fd5b505afa158015620002fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000325919081019062000ad7565b6040516020016200033892919062000c06565b604051602081830303815290604052600290805190602001906200035e929190620009b7565b50816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200039957600080fd5b505afa158015620003ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003d8919081019062000ad7565b816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200041257600080fd5b505afa15801562000427573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000451919081019062000ad7565b6040516020016200046492919062000bb6565b604051602081830303815290604052600390805190602001906200048a929190620009b7565b50620004a5620d899f196200055560201b62000cad1760201c565b6001600160a01b0316610100816001600160a01b031660601b81525050620004db620d89a06200055560201b62000cad1760201c565b606090811b6001600160601b031916610120526040805191820181526001600160a01b03938416808352929093166020820181905262ffffff949094169201829052600780546001600160a01b0319169091179055600880546001600160b81b031916909217600160a01b9091021790555062000dc09050565b60008060008360020b126200056e578260020b6200057d565b8260020b6200057d9062000d5e565b90506200058e620d89e71962000d38565b60020b811115620005c95760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640160405180910390fd5b600060018216620005df57600160801b620005f1565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b0316905060028216156200062957608062000624826ffff97272373d413259a46990580e213a62000c8f565b901c90505b60048216156200065657608062000651826ffff2e50f5f656932ef12357cf3c7fdcc62000c8f565b901c90505b6008821615620006835760806200067e826fffe5caca7e10e4e61c3624eaa0941cd062000c8f565b901c90505b6010821615620006b0576080620006ab826fffcb9843d60f6159c9db58835c92664462000c8f565b901c90505b6020821615620006dd576080620006d8826fff973b41fa98c081472e6896dfb254c062000c8f565b901c90505b60408216156200070a57608062000705826fff2ea16466c96a3843ec78b326b5286162000c8f565b901c90505b60808216156200073757608062000732826ffe5dee046a99a2a811c461f1969c305362000c8f565b901c90505b6101008216156200076557608062000760826ffcbe86c7900a88aedcffc83b479aa3a462000c8f565b901c90505b610200821615620007935760806200078e826ff987a7253ac413176f2b074cf7815e5462000c8f565b901c90505b610400821615620007c1576080620007bc826ff3392b0822b70005940c7a398e4b70f362000c8f565b901c90505b610800821615620007ef576080620007ea826fe7159475a2c29b7443b29c7fa6e889d962000c8f565b901c90505b6110008216156200081d57608062000818826fd097f3bdfd2022b8845ad8f792aa582562000c8f565b901c90505b6120008216156200084b57608062000846826fa9f746462d870fdf8a65dc1f90e061e562000c8f565b901c90505b6140008216156200087957608062000874826f70d869a156d2a1b890bb3df62baf32f762000c8f565b901c90505b618000821615620008a7576080620008a2826f31be135f97d08fd981231505542fcfa662000c8f565b901c90505b62010000821615620008d6576080620008d1826f09aa508b5b7a84e1c677de54f3e99bc962000c8f565b901c90505b6202000082161562000904576080620008ff826e5d6af8dedb81196699c329225ee60462000c8f565b901c90505b62040000821615620009315760806200092c826d2216e584f5fa1ea926041bedfe9862000c8f565b901c90505b620800008216156200095c57608062000957826b048a170391f7dc42444e8fa262000c8f565b901c90505b60008460020b13156200097a57620009778160001962000c78565b90505b6200098b6401000000008262000d21565b15620009995760016200099c565b60005b620009af9060ff16602083901c62000c5d565b949350505050565b828054620009c59062000ce4565b90600052602060002090601f016020900481019282620009e9576000855562000a34565b82601f1062000a0457805160ff191683800117855562000a34565b8280016001018555821562000a34579182015b8281111562000a3457825182559160200191906001019062000a17565b5062000a4292915062000a46565b5090565b5b8082111562000a42576000815560010162000a47565b80516001600160a01b038116811462000a7557600080fd5b919050565b60006020828403121562000a8d57600080fd5b62000a988262000a5d565b9392505050565b6000806040838503121562000ab357600080fd5b62000abe8362000a5d565b915062000ace6020840162000a5d565b90509250929050565b60006020828403121562000aea57600080fd5b81516001600160401b038082111562000b0257600080fd5b818401915084601f83011262000b1757600080fd5b81518181111562000b2c5762000b2c62000daa565b604051601f8201601f19908116603f0116810190838211818310171562000b575762000b5762000daa565b8160405282815287602084870101111562000b7157600080fd5b62000b8483602083016020880162000cb1565b979650505050505050565b60006020828403121562000ba257600080fd5b815162ffffff8116811462000a9857600080fd5b636b4c502d60e01b81526000835162000bd781600485016020880162000cb1565b602f60f81b600491840191820152835162000bfa81600584016020880162000cb1565b01600501949350505050565b6a025b2b2b819b926281016960ad1b81526000835162000c2e81600b85016020880162000cb1565b602f60f81b600b91840191820152835162000c5181600c84016020880162000cb1565b01600c01949350505050565b6000821982111562000c735762000c7362000d7e565b500190565b60008262000c8a5762000c8a62000d94565b500490565b600081600019048311821515161562000cac5762000cac62000d7e565b500290565b60005b8381101562000cce57818101518382015260200162000cb4565b8381111562000cde576000848401525b50505050565b600181811c9082168062000cf957607f821691505b6020821081141562000d1b57634e487b7160e01b600052602260045260246000fd5b50919050565b60008262000d335762000d3362000d94565b500690565b60008160020b627fffff1981141562000d555762000d5562000d7e565b60000392915050565b6000600160ff1b82141562000d775762000d7762000d7e565b5060000390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160601c60a05160601c60c05160601c60e05160e81c6101005160601c6101205160601c611f4662000e7660003960008181610348015261124201526000818161027b0152611221015260006103fc015260008181610220015281816104e5015281816108910152818161095301528181610a2101528181610a7401528181610ab201528181610b1101528181610bfe0152818161118401526112f901526000610397015260006101e10152611f466000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806395d89b41116100c3578063d21220a71161007c578063d21220a714610392578063d3487997146103b9578063dd62ed3e146103cc578063ddca3f43146103f7578063e522538114610432578063f39c38a01461043a57600080fd5b806395d89b41146102ea578063a3e6dc28146102f2578063a9059cbb1461031d578063ab033ea914610330578063c627526114610343578063cf51148d1461036a57600080fd5b8063238efcbc11610115578063238efcbc1461025957806323b872dd146102635780632ea28f5b14610276578063313ce5671461029d5780635aa6e675146102b757806370a08231146102ca57600080fd5b806306fdde031461015d57806309218e911461017b578063095ea7b3146101b95780630dfe1681146101dc57806316f0115b1461021b57806318160ddd14610242575b600080fd5b61016561044d565b6040516101729190611d28565b60405180910390f35b6101836104db565b604080516001600160801b039687168152602081019590955284019290925283166060830152909116608082015260a001610172565b6101cc6101c73660046118c7565b6105c3565b6040519015158152602001610172565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610172565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b61024b60045481565b604051908152602001610172565b61026161062f565b005b6101cc610271366004611886565b6106b8565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b6102a5601281565b60405160ff9091168152602001610172565b600054610203906001600160a01b031681565b61024b6102d8366004611830565b60066020526000908152604090205481565b610165610781565b610305610300366004611be2565b61078e565b6040516001600160801b039091168152602001610172565b6101cc61032b3660046118c7565b6107be565b61026161033e366004611830565b6107d4565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b61037d6103783660046119f8565b610853565b60408051928352602083019190915201610172565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b6102616103c7366004611b62565b610a06565b61024b6103da36600461184d565b600560209081526000928352604080842090915290825290205481565b61041e7f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff9091168152602001610172565b61037d610ade565b600154610203906001600160a01b031681565b6002805461045a90611e28565b80601f016020809104026020016040519081016040528092919081815260200182805461048690611e28565b80156104d35780601f106104a8576101008083540402835291602001916104d3565b820191906000526020600020905b8154815290600101906020018083116104b657829003601f168201915b505050505081565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663514ea4bf30620d899f19620d89a060405160200161052e93929190611c4d565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161056291815260200190565b60a06040518083038186803b15801561057a57600080fd5b505afa15801561058e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b29190611a42565b939992985090965094509092509050565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061061e9086815260200190565b60405180910390a350600192915050565b6001546001600160a01b0316331461065a57604051637ef5703160e11b815260040160405180910390fd5b60018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69060200160405180910390a1565b6001600160a01b0383166000818152600560209081526040808320338085529252822054919290919082148015906106f257506000198114155b156107685760006107038583611de5565b6001600160a01b038881166000818152600560209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b6107738686866110ce565b6001925050505b9392505050565b6003805461045a90611e28565b600061079c8686868661117c565b509091506107b59050826001600160801b0383166113ca565b95945050505050565b60006107cb3384846110ce565b50600192915050565b6000546001600160a01b031633146107ff576040516354348f0360e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f9060200160405180910390a150565b60405163a34123a760e01b8152620d899f196004820152620d89a060248201526001600160801b038516604482015260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a7906064016040805180830381600087803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090c9190611b3e565b90925090508482108061091e57508381105b1561093c576040516397c7f53760e01b815260040160405180910390fd5b6040516309e3d67b60e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f1eb3d890610997908690620d899f1990620d89a09088908890600401611ceb565b6040805180830381600087803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e891906119c9565b50506109fd33876001600160801b0316611454565b94509492505050565b6000610a148284018461190e565b9050336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a5f57604051634b60273560e01b815260040160405180910390fd5b8415610a99578051516020820151610a9991907f0000000000000000000000000000000000000000000000000000000000000000886114d6565b8315610ad757610ad781600001516020015182602001517f0000000000000000000000000000000000000000000000000000000000000000876114d6565b5050505050565b6000805481906001600160a01b03163314610b0c576040516354348f0360e01b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663514ea4bf30620d899f19620d89a0604051602001610b5a93929190611c4d565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610b8e91815260200190565b60a06040518083038186803b158015610ba657600080fd5b505afa158015610bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bde9190611a42565b6000546040516309e3d67b60e31b81529297509095506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169550634f1eb3d89450610c4693501690620d899f1990620d89a09088908890600401611ceb565b6040805180830381600087803b158015610c5f57600080fd5b505af1158015610c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9791906119c9565b6001600160801b03918216969116945092505050565b60008060008360020b12610cc4578260020b610cd1565b8260020b610cd190611e9a565b9050610ce0620d89e719611e77565b60020b811115610d1a5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640160405180910390fd5b600060018216610d2e57600160801b610d40565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610d7f576080610d7a826ffff97272373d413259a46990580e213a611d9e565b901c90505b6004821615610da9576080610da4826ffff2e50f5f656932ef12357cf3c7fdcc611d9e565b901c90505b6008821615610dd3576080610dce826fffe5caca7e10e4e61c3624eaa0941cd0611d9e565b901c90505b6010821615610dfd576080610df8826fffcb9843d60f6159c9db58835c926644611d9e565b901c90505b6020821615610e27576080610e22826fff973b41fa98c081472e6896dfb254c0611d9e565b901c90505b6040821615610e51576080610e4c826fff2ea16466c96a3843ec78b326b52861611d9e565b901c90505b6080821615610e7b576080610e76826ffe5dee046a99a2a811c461f1969c3053611d9e565b901c90505b610100821615610ea6576080610ea1826ffcbe86c7900a88aedcffc83b479aa3a4611d9e565b901c90505b610200821615610ed1576080610ecc826ff987a7253ac413176f2b074cf7815e54611d9e565b901c90505b610400821615610efc576080610ef7826ff3392b0822b70005940c7a398e4b70f3611d9e565b901c90505b610800821615610f27576080610f22826fe7159475a2c29b7443b29c7fa6e889d9611d9e565b901c90505b611000821615610f52576080610f4d826fd097f3bdfd2022b8845ad8f792aa5825611d9e565b901c90505b612000821615610f7d576080610f78826fa9f746462d870fdf8a65dc1f90e061e5611d9e565b901c90505b614000821615610fa8576080610fa3826f70d869a156d2a1b890bb3df62baf32f7611d9e565b901c90505b618000821615610fd3576080610fce826f31be135f97d08fd981231505542fcfa6611d9e565b901c90505b62010000821615610fff576080610ffa826f09aa508b5b7a84e1c677de54f3e99bc9611d9e565b901c90505b6202000082161561102a576080611025826e5d6af8dedb81196699c329225ee604611d9e565b901c90505b6204000082161561105457608061104f826d2216e584f5fa1ea926041bedfe98611d9e565b901c90505b6208000082161561107c576080611077826b048a170391f7dc42444e8fa2611d9e565b901c90505b60008460020b13156110975761109481600019611d8a565b90505b6110a664010000000082611e63565b156110b25760016110b5565b60005b6110c69060ff16602083901c611d72565b949350505050565b6001600160a01b038316600090815260066020526040812080548392906110f6908490611de5565b90915550506001600160a01b03821660009081526006602052604081208054839290611123908490611d72565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161116f91815260200190565b60405180910390a3505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156111db57600080fd5b505afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190611aa4565b5050505050509050611268817f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008b8b6114e8565b6040805160a080820183526007546001600160a01b039081168385018181526008548084166060808801918252600160a01b90920462ffffff9081166080808a01918252948952336020998a019081528a51998a019690965291518616888a01529051169086015290518216848201528451808503909101815291830193849052633c8a7d8d60e01b9093529296507f000000000000000000000000000000000000000000000000000000000000000090911691633c8a7d8d9161133e913091620d899f1991620d89a0918b919060a401611c9e565b6040805180830381600087803b15801561135757600080fd5b505af115801561136b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138f9190611b3e565b9093509150858310806113a157508482105b156113bf576040516397c7f53760e01b815260040160405180910390fd5b509450945094915050565b80600460008282546113dc9190611d72565b90915550506001600160a01b03821660009081526006602052604081208054839290611409908490611d72565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b80600460008282546114669190611de5565b90915550506001600160a01b03821660009081526006602052604081208054839290611493908490611de5565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611448565b6114e2848484846115aa565b50505050565b6000836001600160a01b0316856001600160a01b03161115611508579293925b846001600160a01b0316866001600160a01b0316116115335761152c8585856116a4565b90506107b5565b836001600160a01b0316866001600160a01b0316101561159557600061155a8786866116a4565b9050600061156987898661170e565b9050806001600160801b0316826001600160801b03161061158a578061158c565b815b925050506107b5565b6115a085858461170e565b9695505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b179052915160009283929088169161160e9190611c82565b6000604051808303816000865af19150503d806000811461164b576040519150601f19603f3d011682016040523d82523d6000602084013e611650565b606091505b509150915081158061167e575080511580159061167e57508080602001905181019061167c91906118f3565b155b1561169c576040516316369daf60e31b815260040160405180910390fd5b505050505050565b6000826001600160a01b0316846001600160a01b031611156116c4579192915b60006116e7856001600160a01b0316856001600160a01b0316600160601b611744565b90506107b561170984836116fb8989611dbd565b6001600160a01b0316611744565b6117f3565b6000826001600160a01b0316846001600160a01b0316111561172e579192915b6110c661170983600160601b6116fb8888611dbd565b60008080600019858709858702925082811083820303915050806000141561177e576000841161177357600080fd5b50829004905061077a565b80841161178a57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b806001600160801b038116811461180957600080fd5b919050565b8051801515811461180957600080fd5b805161ffff8116811461180957600080fd5b60006020828403121561184257600080fd5b813561077a81611ee3565b6000806040838503121561186057600080fd5b823561186b81611ee3565b9150602083013561187b81611ee3565b809150509250929050565b60008060006060848603121561189b57600080fd5b83356118a681611ee3565b925060208401356118b681611ee3565b929592945050506040919091013590565b600080604083850312156118da57600080fd5b82356118e581611ee3565b946020939093013593505050565b60006020828403121561190557600080fd5b61077a8261180e565b6000818303608081121561192157600080fd5b6040516040810181811067ffffffffffffffff8211171561195257634e487b7160e01b600052604160045260246000fd5b604052606082121561196357600080fd5b61196b611d3b565b9150833561197881611ee3565b8252602084013561198881611ee3565b6020830152604084013562ffffff811681146119a357600080fd5b60408301529081526060830135906119ba82611ee3565b60208101919091529392505050565b600080604083850312156119dc57600080fd5b82516119e781611efb565b602084015190925061187b81611efb565b60008060008060808587031215611a0e57600080fd5b8435611a1981611efb565b935060208501359250604085013591506060850135611a3781611ee3565b939692955090935050565b600080600080600060a08688031215611a5a57600080fd5b8551611a6581611efb565b8095505060208601519350604086015192506060860151611a8581611efb565b6080870151909250611a9681611efb565b809150509295509295909350565b600080600080600080600060e0888a031215611abf57600080fd5b8751611aca81611ee3565b8097505060208801518060020b8114611ae257600080fd5b9550611af06040890161181e565b9450611afe6060890161181e565b9350611b0c6080890161181e565b925060a088015160ff81168114611b2257600080fd5b9150611b3060c0890161180e565b905092959891949750929550565b60008060408385031215611b5157600080fd5b505080516020909101519092909150565b60008060008060608587031215611b7857600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115611b9e57600080fd5b818701915087601f830112611bb257600080fd5b813581811115611bc157600080fd5b886020828501011115611bd357600080fd5b95989497505060200194505050565b600080600080600060a08688031215611bfa57600080fd5b853594506020860135935060408601359250606086013591506080860135611a9681611ee3565b60008151808452611c39816020860160208601611dfc565b601f01601f19169290920160200192915050565b60609390931b6bffffffffffffffffffffffff19168352600291820b60e890811b6014850152910b901b6017820152601a0190565b60008251611c94818460208701611dfc565b9190910192915050565b60018060a01b03861681528460020b60208201528360020b60408201526001600160801b038316606082015260a060808201526000611ce060a0830184611c21565b979650505050505050565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b60208152600061077a6020830184611c21565b6040516060810167ffffffffffffffff81118282101715611d6c57634e487b7160e01b600052604160045260246000fd5b60405290565b60008219821115611d8557611d85611eb7565b500190565b600082611d9957611d99611ecd565b500490565b6000816000190483118215151615611db857611db8611eb7565b500290565b60006001600160a01b0383811690831681811015611ddd57611ddd611eb7565b039392505050565b600082821015611df757611df7611eb7565b500390565b60005b83811015611e17578181015183820152602001611dff565b838111156114e25750506000910152565b600181811c90821680611e3c57607f821691505b60208210811415611e5d57634e487b7160e01b600052602260045260246000fd5b50919050565b600082611e7257611e72611ecd565b500690565b60008160020b627fffff19811415611e9157611e91611eb7565b60000392915050565b6000600160ff1b821415611eb057611eb0611eb7565b5060000390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114611ef857600080fd5b50565b6001600160801b0381168114611ef857600080fdfea2646970667358221220a863225e60342eeeb0c247059e66aa4c161760467df006b3d77e24e474f2eb8d64736f6c63430008070033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c806395d89b41116100c3578063d21220a71161007c578063d21220a714610392578063d3487997146103b9578063dd62ed3e146103cc578063ddca3f43146103f7578063e522538114610432578063f39c38a01461043a57600080fd5b806395d89b41146102ea578063a3e6dc28146102f2578063a9059cbb1461031d578063ab033ea914610330578063c627526114610343578063cf51148d1461036a57600080fd5b8063238efcbc11610115578063238efcbc1461025957806323b872dd146102635780632ea28f5b14610276578063313ce5671461029d5780635aa6e675146102b757806370a08231146102ca57600080fd5b806306fdde031461015d57806309218e911461017b578063095ea7b3146101b95780630dfe1681146101dc57806316f0115b1461021b57806318160ddd14610242575b600080fd5b61016561044d565b6040516101729190611d28565b60405180910390f35b6101836104db565b604080516001600160801b039687168152602081019590955284019290925283166060830152909116608082015260a001610172565b6101cc6101c73660046118c7565b6105c3565b6040519015158152602001610172565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610172565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b61024b60045481565b604051908152602001610172565b61026161062f565b005b6101cc610271366004611886565b6106b8565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b6102a5601281565b60405160ff9091168152602001610172565b600054610203906001600160a01b031681565b61024b6102d8366004611830565b60066020526000908152604090205481565b610165610781565b610305610300366004611be2565b61078e565b6040516001600160801b039091168152602001610172565b6101cc61032b3660046118c7565b6107be565b61026161033e366004611830565b6107d4565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b61037d6103783660046119f8565b610853565b60408051928352602083019190915201610172565b6102037f000000000000000000000000000000000000000000000000000000000000000081565b6102616103c7366004611b62565b610a06565b61024b6103da36600461184d565b600560209081526000928352604080842090915290825290205481565b61041e7f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff9091168152602001610172565b61037d610ade565b600154610203906001600160a01b031681565b6002805461045a90611e28565b80601f016020809104026020016040519081016040528092919081815260200182805461048690611e28565b80156104d35780601f106104a8576101008083540402835291602001916104d3565b820191906000526020600020905b8154815290600101906020018083116104b657829003601f168201915b505050505081565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663514ea4bf30620d899f19620d89a060405160200161052e93929190611c4d565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161056291815260200190565b60a06040518083038186803b15801561057a57600080fd5b505afa15801561058e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b29190611a42565b939992985090965094509092509050565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061061e9086815260200190565b60405180910390a350600192915050565b6001546001600160a01b0316331461065a57604051637ef5703160e11b815260040160405180910390fd5b60018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69060200160405180910390a1565b6001600160a01b0383166000818152600560209081526040808320338085529252822054919290919082148015906106f257506000198114155b156107685760006107038583611de5565b6001600160a01b038881166000818152600560209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b6107738686866110ce565b6001925050505b9392505050565b6003805461045a90611e28565b600061079c8686868661117c565b509091506107b59050826001600160801b0383166113ca565b95945050505050565b60006107cb3384846110ce565b50600192915050565b6000546001600160a01b031633146107ff576040516354348f0360e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f9060200160405180910390a150565b60405163a34123a760e01b8152620d899f196004820152620d89a060248201526001600160801b038516604482015260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a7906064016040805180830381600087803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090c9190611b3e565b90925090508482108061091e57508381105b1561093c576040516397c7f53760e01b815260040160405180910390fd5b6040516309e3d67b60e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f1eb3d890610997908690620d899f1990620d89a09088908890600401611ceb565b6040805180830381600087803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e891906119c9565b50506109fd33876001600160801b0316611454565b94509492505050565b6000610a148284018461190e565b9050336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a5f57604051634b60273560e01b815260040160405180910390fd5b8415610a99578051516020820151610a9991907f0000000000000000000000000000000000000000000000000000000000000000886114d6565b8315610ad757610ad781600001516020015182602001517f0000000000000000000000000000000000000000000000000000000000000000876114d6565b5050505050565b6000805481906001600160a01b03163314610b0c576040516354348f0360e01b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663514ea4bf30620d899f19620d89a0604051602001610b5a93929190611c4d565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610b8e91815260200190565b60a06040518083038186803b158015610ba657600080fd5b505afa158015610bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bde9190611a42565b6000546040516309e3d67b60e31b81529297509095506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169550634f1eb3d89450610c4693501690620d899f1990620d89a09088908890600401611ceb565b6040805180830381600087803b158015610c5f57600080fd5b505af1158015610c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9791906119c9565b6001600160801b03918216969116945092505050565b60008060008360020b12610cc4578260020b610cd1565b8260020b610cd190611e9a565b9050610ce0620d89e719611e77565b60020b811115610d1a5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640160405180910390fd5b600060018216610d2e57600160801b610d40565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610d7f576080610d7a826ffff97272373d413259a46990580e213a611d9e565b901c90505b6004821615610da9576080610da4826ffff2e50f5f656932ef12357cf3c7fdcc611d9e565b901c90505b6008821615610dd3576080610dce826fffe5caca7e10e4e61c3624eaa0941cd0611d9e565b901c90505b6010821615610dfd576080610df8826fffcb9843d60f6159c9db58835c926644611d9e565b901c90505b6020821615610e27576080610e22826fff973b41fa98c081472e6896dfb254c0611d9e565b901c90505b6040821615610e51576080610e4c826fff2ea16466c96a3843ec78b326b52861611d9e565b901c90505b6080821615610e7b576080610e76826ffe5dee046a99a2a811c461f1969c3053611d9e565b901c90505b610100821615610ea6576080610ea1826ffcbe86c7900a88aedcffc83b479aa3a4611d9e565b901c90505b610200821615610ed1576080610ecc826ff987a7253ac413176f2b074cf7815e54611d9e565b901c90505b610400821615610efc576080610ef7826ff3392b0822b70005940c7a398e4b70f3611d9e565b901c90505b610800821615610f27576080610f22826fe7159475a2c29b7443b29c7fa6e889d9611d9e565b901c90505b611000821615610f52576080610f4d826fd097f3bdfd2022b8845ad8f792aa5825611d9e565b901c90505b612000821615610f7d576080610f78826fa9f746462d870fdf8a65dc1f90e061e5611d9e565b901c90505b614000821615610fa8576080610fa3826f70d869a156d2a1b890bb3df62baf32f7611d9e565b901c90505b618000821615610fd3576080610fce826f31be135f97d08fd981231505542fcfa6611d9e565b901c90505b62010000821615610fff576080610ffa826f09aa508b5b7a84e1c677de54f3e99bc9611d9e565b901c90505b6202000082161561102a576080611025826e5d6af8dedb81196699c329225ee604611d9e565b901c90505b6204000082161561105457608061104f826d2216e584f5fa1ea926041bedfe98611d9e565b901c90505b6208000082161561107c576080611077826b048a170391f7dc42444e8fa2611d9e565b901c90505b60008460020b13156110975761109481600019611d8a565b90505b6110a664010000000082611e63565b156110b25760016110b5565b60005b6110c69060ff16602083901c611d72565b949350505050565b6001600160a01b038316600090815260066020526040812080548392906110f6908490611de5565b90915550506001600160a01b03821660009081526006602052604081208054839290611123908490611d72565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161116f91815260200190565b60405180910390a3505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156111db57600080fd5b505afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190611aa4565b5050505050509050611268817f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008b8b6114e8565b6040805160a080820183526007546001600160a01b039081168385018181526008548084166060808801918252600160a01b90920462ffffff9081166080808a01918252948952336020998a019081528a51998a019690965291518616888a01529051169086015290518216848201528451808503909101815291830193849052633c8a7d8d60e01b9093529296507f000000000000000000000000000000000000000000000000000000000000000090911691633c8a7d8d9161133e913091620d899f1991620d89a0918b919060a401611c9e565b6040805180830381600087803b15801561135757600080fd5b505af115801561136b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138f9190611b3e565b9093509150858310806113a157508482105b156113bf576040516397c7f53760e01b815260040160405180910390fd5b509450945094915050565b80600460008282546113dc9190611d72565b90915550506001600160a01b03821660009081526006602052604081208054839290611409908490611d72565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b80600460008282546114669190611de5565b90915550506001600160a01b03821660009081526006602052604081208054839290611493908490611de5565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611448565b6114e2848484846115aa565b50505050565b6000836001600160a01b0316856001600160a01b03161115611508579293925b846001600160a01b0316866001600160a01b0316116115335761152c8585856116a4565b90506107b5565b836001600160a01b0316866001600160a01b0316101561159557600061155a8786866116a4565b9050600061156987898661170e565b9050806001600160801b0316826001600160801b03161061158a578061158c565b815b925050506107b5565b6115a085858461170e565b9695505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b179052915160009283929088169161160e9190611c82565b6000604051808303816000865af19150503d806000811461164b576040519150601f19603f3d011682016040523d82523d6000602084013e611650565b606091505b509150915081158061167e575080511580159061167e57508080602001905181019061167c91906118f3565b155b1561169c576040516316369daf60e31b815260040160405180910390fd5b505050505050565b6000826001600160a01b0316846001600160a01b031611156116c4579192915b60006116e7856001600160a01b0316856001600160a01b0316600160601b611744565b90506107b561170984836116fb8989611dbd565b6001600160a01b0316611744565b6117f3565b6000826001600160a01b0316846001600160a01b0316111561172e579192915b6110c661170983600160601b6116fb8888611dbd565b60008080600019858709858702925082811083820303915050806000141561177e576000841161177357600080fd5b50829004905061077a565b80841161178a57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b806001600160801b038116811461180957600080fd5b919050565b8051801515811461180957600080fd5b805161ffff8116811461180957600080fd5b60006020828403121561184257600080fd5b813561077a81611ee3565b6000806040838503121561186057600080fd5b823561186b81611ee3565b9150602083013561187b81611ee3565b809150509250929050565b60008060006060848603121561189b57600080fd5b83356118a681611ee3565b925060208401356118b681611ee3565b929592945050506040919091013590565b600080604083850312156118da57600080fd5b82356118e581611ee3565b946020939093013593505050565b60006020828403121561190557600080fd5b61077a8261180e565b6000818303608081121561192157600080fd5b6040516040810181811067ffffffffffffffff8211171561195257634e487b7160e01b600052604160045260246000fd5b604052606082121561196357600080fd5b61196b611d3b565b9150833561197881611ee3565b8252602084013561198881611ee3565b6020830152604084013562ffffff811681146119a357600080fd5b60408301529081526060830135906119ba82611ee3565b60208101919091529392505050565b600080604083850312156119dc57600080fd5b82516119e781611efb565b602084015190925061187b81611efb565b60008060008060808587031215611a0e57600080fd5b8435611a1981611efb565b935060208501359250604085013591506060850135611a3781611ee3565b939692955090935050565b600080600080600060a08688031215611a5a57600080fd5b8551611a6581611efb565b8095505060208601519350604086015192506060860151611a8581611efb565b6080870151909250611a9681611efb565b809150509295509295909350565b600080600080600080600060e0888a031215611abf57600080fd5b8751611aca81611ee3565b8097505060208801518060020b8114611ae257600080fd5b9550611af06040890161181e565b9450611afe6060890161181e565b9350611b0c6080890161181e565b925060a088015160ff81168114611b2257600080fd5b9150611b3060c0890161180e565b905092959891949750929550565b60008060408385031215611b5157600080fd5b505080516020909101519092909150565b60008060008060608587031215611b7857600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115611b9e57600080fd5b818701915087601f830112611bb257600080fd5b813581811115611bc157600080fd5b886020828501011115611bd357600080fd5b95989497505060200194505050565b600080600080600060a08688031215611bfa57600080fd5b853594506020860135935060408601359250606086013591506080860135611a9681611ee3565b60008151808452611c39816020860160208601611dfc565b601f01601f19169290920160200192915050565b60609390931b6bffffffffffffffffffffffff19168352600291820b60e890811b6014850152910b901b6017820152601a0190565b60008251611c94818460208701611dfc565b9190910192915050565b60018060a01b03861681528460020b602082015283