[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_initialSupply", "type": "uint256" }, { "internalType": "address", "name": "_weth", "type": "address" }, { "internalType": "address", "name": "_limitOrderContract", "type": "address" }, { "internalType": "address", "name": "_dispatcher", "type": "address" }, { "internalType": "address", "name": "_treasury", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "OnlyTreasury", "type": "error" }, { "inputs": [], "name": "TaxTooHigh", "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": true, "internalType": "address", "name": "oldDex", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newDex", "type": "address" } ], "name": "DexUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "dex", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "buyTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellTax", "type": "uint256" } ], "name": "TaxesUpdated", "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": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "buyTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dex", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dispatcher", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTWAP", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_dex", "type": "address" } ], "name": "getTaxes", "outputs": [ { "internalType": "uint256", "name": "buy", "type": "uint256" }, { "internalType": "uint256", "name": "sell", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_dex", "type": "address" }, { "internalType": "address", "name": "_pool", "type": "address" }, { "internalType": "uint256", "name": "_buyTax", "type": "uint256" }, { "internalType": "uint256", "name": "_sellTax", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "limitOrderContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pool", "outputs": [ { "internalType": "contract IUniswapV3Pool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "sellTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "taxed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "value", "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": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "twapInterval", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawTaxes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60a0604052600b805463ffffffff60a01b191660e160a41b1790553480156200002757600080fd5b506040516200312c3803806200312c8339810160408190526200004a9162000e60565b8686868686848460036200005f838262000fba565b5060046200006e828262000fba565b5050506001600160a01b0382166080526200008a3384620000d9565b600580546001600160a01b03199081166001600160a01b0393841617909155600b8054821698831698909817909755600c8054909716951694909417909455506200126a975050505050505050565b6001600160a01b038216620001095760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b62000117600083836200011b565b5050565b60006200012a8484846200029d565b9050801562000145576200013f84826200035f565b62000169565b30600090815260208190526040902054801562000167576200016781620003c9565b505b60006200017782846200109c565b90506001600160a01b038516620001a85782600260008282546200019c9190620010b8565b909155506200021c9050565b6001600160a01b03851660009081526020819052604090205483811015620001fd5760405163391434e360e21b81526001600160a01b0387166004820152602481018290526044810185905260640162000100565b6001600160a01b03861660009081526020819052604090209084900390555b6001600160a01b0384166200023a5760028054829003905562000259565b6001600160a01b03841660009081526020819052604090208054820190555b836001600160a01b0316856001600160a01b03166000805160206200310c833981519152836040516200028e91815260200190565b60405180910390a35050505050565b6005546000906001600160a01b0385811691161480620002ca57506005546001600160a01b038481169116145b15620002d95750600062000358565b6001600160a01b0380851660009081526008602090815260408083205493871683526009909152902054612710620003128386620010ce565b6200031e9190620010fe565b6200032a9084620010b8565b92506127106200033b8286620010ce565b620003479190620010fe565b620003539084620010b8565b925050505b9392505050565b306000818152602081905260408120805484929062000380908490620010b8565b92505081905550806001600160a01b0316836001600160a01b03166000805160206200310c83398151915284604051620003bc91815260200190565b60405180910390a3505050565b6007546001600160a01b03163b600003620003e15750565b6000306001600160a01b03166305ecd0036040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562000440575060408051601f3d908101601f191682019092526200043d918101906200112d565b60015b620004cf57600660009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801562000499573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bf91906200115e565b50939550620004d2945050505050565b90505b6000620004ea8284306080516200074860201b60201c565b90506000612710620004ff6103e8826200109c565b6200050b9084620010ce565b620005179190620010fe565b604080516101008101825230808252608080516001600160a01b0390811660208501908152612710858701908152606086019485524293860193845260a086018c815260c08701898152600060e08901908152600754995163414bf38960e01b8152895187166004820152945186166024860152925162ffffff16604485015295518416606484015293516084830152925160a4820152925160c48401529051811660e48301529394509092919091169063414bf38990610104016020604051808303816000875af192505050801562000610575060408051601f3d908101601f191682019092526200060d91810190620011f5565b60015b156200074157506080516040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801562000661573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006879190620011f5565b608051604051632e1a7d4d60e01b8152600481018390529192506001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015620006cf57600080fd5b505af1158015620006e4573d6000803e3d6000fd5b5050600b546040516001600160a01b039091169250479150600081818185875af1925050503d806000811462000737576040519150601f19603f3d011682016040523d82523d6000602084013e6200073c565b606091505b505050505b5050505050565b60008062000756866200086a565b90506001600160801b036001600160a01b03821611620007e6576000620007876001600160a01b03831680620010ce565b9050836001600160a01b0316856001600160a01b031610620007c357620007bd600160c01b6001600160801b0388168362000ccc565b620007dd565b620007dd816001600160801b038816600160c01b62000ccc565b92505062000861565b6000620008076001600160a01b038316806801000000000000000062000ccc565b9050836001600160a01b0316856001600160a01b03161062000843576200083d600160801b6001600160801b0388168362000ccc565b6200085d565b6200085d816001600160801b038816600160801b62000ccc565b9250505b50949350505050565b60008060008360020b1262000883578260020b62000892565b8260020b62000892906200120f565b9050620008a3620d89e7196200122e565b60020b811115620008db5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640162000100565b600081600116600003620008f457600160801b62000906565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b0316905060028216156200093e57608062000939826ffff97272373d413259a46990580e213a620010ce565b901c90505b60048216156200096b57608062000966826ffff2e50f5f656932ef12357cf3c7fdcc620010ce565b901c90505b60088216156200099857608062000993826fffe5caca7e10e4e61c3624eaa0941cd0620010ce565b901c90505b6010821615620009c5576080620009c0826fffcb9843d60f6159c9db58835c926644620010ce565b901c90505b6020821615620009f2576080620009ed826fff973b41fa98c081472e6896dfb254c0620010ce565b901c90505b604082161562000a1f57608062000a1a826fff2ea16466c96a3843ec78b326b52861620010ce565b901c90505b608082161562000a4c57608062000a47826ffe5dee046a99a2a811c461f1969c3053620010ce565b901c90505b61010082161562000a7a57608062000a75826ffcbe86c7900a88aedcffc83b479aa3a4620010ce565b901c90505b61020082161562000aa857608062000aa3826ff987a7253ac413176f2b074cf7815e54620010ce565b901c90505b61040082161562000ad657608062000ad1826ff3392b0822b70005940c7a398e4b70f3620010ce565b901c90505b61080082161562000b0457608062000aff826fe7159475a2c29b7443b29c7fa6e889d9620010ce565b901c90505b61100082161562000b3257608062000b2d826fd097f3bdfd2022b8845ad8f792aa5825620010ce565b901c90505b61200082161562000b6057608062000b5b826fa9f746462d870fdf8a65dc1f90e061e5620010ce565b901c90505b61400082161562000b8e57608062000b89826f70d869a156d2a1b890bb3df62baf32f7620010ce565b901c90505b61800082161562000bbc57608062000bb7826f31be135f97d08fd981231505542fcfa6620010ce565b901c90505b6201000082161562000beb57608062000be6826f09aa508b5b7a84e1c677de54f3e99bc9620010ce565b901c90505b6202000082161562000c1957608062000c14826e5d6af8dedb81196699c329225ee604620010ce565b901c90505b6204000082161562000c4657608062000c41826d2216e584f5fa1ea926041bedfe98620010ce565b901c90505b6208000082161562000c7157608062000c6c826b048a170391f7dc42444e8fa2620010ce565b901c90505b60008460020b131562000c8f5762000c8c81600019620010fe565b90505b62000ca06401000000008262001253565b1562000cae57600162000cb1565b60005b62000cc49060ff16602083901c620010b8565b949350505050565b600080806000198587098587029250828110838203039150508060000362000d08576000841162000cfc57600080fd5b50829004905062000358565b80841162000d1557600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011262000daa57600080fd5b81516001600160401b038082111562000dc75762000dc762000d82565b604051601f8301601f19908116603f0116810190828211818310171562000df25762000df262000d82565b8160405283815260209250868385880101111562000e0f57600080fd5b600091505b8382101562000e33578582018301518183018401529082019062000e14565b600093810190920192909252949350505050565b6001600160a01b038116811462000e5d57600080fd5b50565b600080600080600080600060e0888a03121562000e7c57600080fd5b87516001600160401b038082111562000e9457600080fd5b62000ea28b838c0162000d98565b985060208a015191508082111562000eb957600080fd5b5062000ec88a828b0162000d98565b96505060408801519450606088015162000ee28162000e47565b608089015190945062000ef58162000e47565b60a089015190935062000f088162000e47565b60c089015190925062000f1b8162000e47565b8091505092959891949750929550565b600181811c9082168062000f4057607f821691505b60208210810362000f6157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000fb557600081815260208120601f850160051c8101602086101562000f905750805b601f850160051c820191505b8181101562000fb15782815560010162000f9c565b5050505b505050565b81516001600160401b0381111562000fd65762000fd662000d82565b62000fee8162000fe7845462000f2b565b8462000f67565b602080601f8311600181146200102657600084156200100d5750858301515b600019600386901b1c1916600185901b17855562000fb1565b600085815260208120601f198616915b82811015620010575788860151825594840194600190910190840162001036565b5085821015620010765787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115620010b257620010b262001086565b92915050565b80820180821115620010b257620010b262001086565b8082028115828204841417620010b257620010b262001086565b634e487b7160e01b600052601260045260246000fd5b600082620011105762001110620010e8565b500490565b8051600281900b81146200112857600080fd5b919050565b6000602082840312156200114057600080fd5b620003588262001115565b805161ffff811681146200112857600080fd5b600080600080600080600060e0888a0312156200117a57600080fd5b8751620011878162000e47565b9650620011976020890162001115565b9550620011a7604089016200114b565b9450620011b7606089016200114b565b9350620011c7608089016200114b565b925060a088015160ff81168114620011de57600080fd5b60c0890151909250801515811462000f1b57600080fd5b6000602082840312156200120857600080fd5b5051919050565b6000600160ff1b820162001227576200122762001086565b5060000390565b60008160020b627fffff1981036200124a576200124a62001086565b60000392915050565b600082620012655762001265620010e8565b500690565b608051611e716200129b60003960008181610d7601528181610dda01528181610ef10152610f7d0152611e716000f3fe6080604052600436106101395760003560e01c806361d027b3116100ab5780639b7bf8101161006f5780639b7bf810146103b7578063a9059cbb1461040f578063cb7e90571461042f578063d15088141461044f578063dd62ed3e1461047f578063eb990c59146104c557600080fd5b806361d027b3146102ff578063692058c21461031f57806370a082311461033f57806395101f901461037557806395d89b41146103a257600080fd5b806323b872dd116100fd57806323b872dd1461021b578063313ce5671461023b5780633bfaa4ee146102575780633c1d5df01461027957806354fb2523146102b25780635f641758146102d257600080fd5b806305ecd0031461014557806306fdde0314610172578063095ea7b31461019457806316f0115b146101c457806318160ddd146101fc57600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5061015a6104e5565b60405160029190910b81526020015b60405180910390f35b34801561017e57600080fd5b50610187610654565b604051610169919061181c565b3480156101a057600080fd5b506101b46101af366004611882565b6106e6565b6040519015158152602001610169565b3480156101d057600080fd5b506006546101e4906001600160a01b031681565b6040516001600160a01b039091168152602001610169565b34801561020857600080fd5b506002545b604051908152602001610169565b34801561022757600080fd5b506101b46102363660046118ae565b610700565b34801561024757600080fd5b5060405160128152602001610169565b34801561026357600080fd5b506102776102723660046118ef565b610726565b005b34801561028557600080fd5b50600b5461029d90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610169565b3480156102be57600080fd5b506005546101e4906001600160a01b031681565b3480156102de57600080fd5b5061020d6102ed366004611908565b60096020526000908152604090205481565b34801561030b57600080fd5b50600c546101e4906001600160a01b031681565b34801561032b57600080fd5b506007546101e4906001600160a01b031681565b34801561034b57600080fd5b5061020d61035a366004611908565b6001600160a01b031660009081526020819052604090205490565b34801561038157600080fd5b5061020d610390366004611908565b60086020526000908152604090205481565b3480156103ae57600080fd5b506101876107eb565b3480156103c357600080fd5b506103fa6103d2366004611908565b6001600160a01b03166000908152600860209081526040808320546009909252909120549091565b60408051928352602083019190915201610169565b34801561041b57600080fd5b506101b461042a366004611882565b6107fa565b34801561043b57600080fd5b50600b546101e4906001600160a01b031681565b34801561045b57600080fd5b506101b461046a366004611908565b600a6020526000908152604090205460ff1681565b34801561048b57600080fd5b5061020d61049a366004611925565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156104d157600080fd5b506102776104e036600461195e565b610808565b60408051600280825260608201835260009283929190602083019080368337019050509050600b60149054906101000a900463ffffffff1681600081518110610530576105306119ba565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061055f5761055f6119ba565b63ffffffff9092166020928302919091019091015260065460405163883bdbfd60e01b81526000916001600160a01b03169063883bdbfd906105a59085906004016119d0565b600060405180830381865afa1580156105c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105ea9190810190611ae3565b509050600081600081518110610602576106026119ba565b60200260200101518260018151811061061d5761061d6119ba565b602002602001015161062f9190611bc5565b600b5490915061064c90600160a01b900463ffffffff1682611c08565b935050505090565b60606003805461066390611c46565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90611c46565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b5050505050905090565b6000336106f481858561081a565b60019150505b92915050565b60003361070e85828561082c565b6107198585856108a9565b60019150505b9392505050565b600c546001600160a01b0316331461075157604051632298d39d60e11b815260040160405180910390fd5b3060009081526020819052604081208054839290610770908490611c80565b9091555050600c546001600160a01b03166000908152602081905260408120805483929061079f908490611c93565b9091555050600c546040518281526001600160a01b039091169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350565b60606004805461066390611c46565b6000336106f48185856108a9565b61081484848484610908565b50505050565b6108278383836001610aab565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610814578181101561089a57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61081484848484036000610aab565b6001600160a01b0383166108d357604051634b637e8f60e11b815260006004820152602401610891565b6001600160a01b0382166108fd5760405163ec442f0560e01b815260006004820152602401610891565b610827838383610aed565b6007546001600160a01b0316156109315760405162dc149f60e41b815260040160405180910390fd5b6103e882118061094257506103e881115b1561096057604051632bc7b84d60e21b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b03861690811790915560405163095ea7b360e01b815260048101919091526000196024820152309063095ea7b3906044016020604051808303816000875af11580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190611cbb565b50600680546001600160a01b0319166001600160a01b038516908117909155600081815260086020908152604080832086905560098252808320859055600a825291829020805460ff1916600117905581518581529081018490527f3702fe9b6a853faae6207a036846fcd4d7ff8a226ec78129d5588697c0d7eca0910160405180910390a26040516001600160a01b038516906000907f7944eb377e472febf8aadfe5cfdd9fa974762abb456732d067c1e14d448d05a7908290a350505050565b306000908152602081905260409020548015610ada5730600090815260208190526040902054610ada90610c6c565b610ae68585858561103e565b5050505050565b6000610afa848484611113565b90508015610b1157610b0c84826111c4565b610b32565b306000908152602081905260409020548015610b3057610b3081610c6c565b505b6000610b3e8284611c80565b90506001600160a01b038516610b6b578260026000828254610b609190611c93565b90915550610bdd9050565b6001600160a01b03851660009081526020819052604090205483811015610bbe5760405163391434e360e21b81526001600160a01b03871660048201526024810182905260448101859052606401610891565b6001600160a01b03861660009081526020819052604090209084900390555b6001600160a01b038416610bf957600280548290039055610c18565b6001600160a01b03841660009081526020819052604090208054820190555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c5d91815260200190565b60405180910390a35050505050565b6007546001600160a01b03163b600003610c835750565b6000306001600160a01b03166305ecd0036040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610cdf575060408051601f3d908101601f19168201909252610cdc91810190611ce8565b60015b610d6957600660009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5a9190611d15565b50939550610d6c945050505050565b90505b6000610d9a8284307f000000000000000000000000000000000000000000000000000000000000000061123c565b90506000612710610dad6103e882611c80565b610db79084611da5565b610dc19190611dbc565b6040805161010081018252308082526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166020840190815261271084860190815260608501938452426080860190815260a086018c815260c08701898152600060e08901908152600754995163414bf38960e01b8152895188166004820152955187166024870152935162ffffff166044860152955185166064850152905160848401525160a4830152925160c48201529151811660e48301529394509092919091169063414bf38990610104016020604051808303816000875af1925050508015610ed3575060408051601f3d908101601f19168201909252610ed091810190611dd0565b60015b15610ae657506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f649190611dd0565b604051632e1a7d4d60e01b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015610fc957600080fd5b505af1158015610fdd573d6000803e3d6000fd5b5050600b546040516001600160a01b039091169250479150600081818185875af1925050503d806000811461102e576040519150601f19603f3d011682016040523d82523d6000602084013e611033565b606091505b505050505050505050565b6001600160a01b0384166110685760405163e602df0560e01b815260006004820152602401610891565b6001600160a01b03831661109257604051634a1406b160e11b815260006004820152602401610891565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561081457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161110591815260200190565b60405180910390a350505050565b6005546000906001600160a01b038581169116148061113f57506005546001600160a01b038481169116145b1561114c5750600061071f565b6001600160a01b03808516600090815260086020908152604080832054938716835260099091529020546127106111838386611da5565b61118d9190611dbc565b6111979084611c93565b92506127106111a68286611da5565b6111b09190611dbc565b6111ba9084611c93565b9695505050505050565b30600081815260208190526040812080548492906111e3908490611c93565b92505081905550806001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161122f91815260200190565b60405180910390a3505050565b6000806112488661134a565b90506001600160801b036001600160a01b038216116112ce5760006112766001600160a01b03831680611da5565b9050836001600160a01b0316856001600160a01b0316106112ae576112a9600160c01b876001600160801b03168361176a565b6112c6565b6112c681876001600160801b0316600160c01b61176a565b925050611341565b60006112ed6001600160a01b038316806801000000000000000061176a565b9050836001600160a01b0316856001600160a01b03161061132557611320600160801b876001600160801b03168361176a565b61133d565b61133d81876001600160801b0316600160801b61176a565b9250505b50949350505050565b60008060008360020b12611361578260020b61136e565b8260020b61136e90611de9565b905061137d620d89e719611e05565b60020b8111156113b35760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610891565b6000816001166000036113ca57600160801b6113dc565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561141b576080611416826ffff97272373d413259a46990580e213a611da5565b901c90505b6004821615611445576080611440826ffff2e50f5f656932ef12357cf3c7fdcc611da5565b901c90505b600882161561146f57608061146a826fffe5caca7e10e4e61c3624eaa0941cd0611da5565b901c90505b6010821615611499576080611494826fffcb9843d60f6159c9db58835c926644611da5565b901c90505b60208216156114c35760806114be826fff973b41fa98c081472e6896dfb254c0611da5565b901c90505b60408216156114ed5760806114e8826fff2ea16466c96a3843ec78b326b52861611da5565b901c90505b6080821615611517576080611512826ffe5dee046a99a2a811c461f1969c3053611da5565b901c90505b61010082161561154257608061153d826ffcbe86c7900a88aedcffc83b479aa3a4611da5565b901c90505b61020082161561156d576080611568826ff987a7253ac413176f2b074cf7815e54611da5565b901c90505b610400821615611598576080611593826ff3392b0822b70005940c7a398e4b70f3611da5565b901c90505b6108008216156115c35760806115be826fe7159475a2c29b7443b29c7fa6e889d9611da5565b901c90505b6110008216156115ee5760806115e9826fd097f3bdfd2022b8845ad8f792aa5825611da5565b901c90505b612000821615611619576080611614826fa9f746462d870fdf8a65dc1f90e061e5611da5565b901c90505b61400082161561164457608061163f826f70d869a156d2a1b890bb3df62baf32f7611da5565b901c90505b61800082161561166f57608061166a826f31be135f97d08fd981231505542fcfa6611da5565b901c90505b6201000082161561169b576080611696826f09aa508b5b7a84e1c677de54f3e99bc9611da5565b901c90505b620200008216156116c65760806116c1826e5d6af8dedb81196699c329225ee604611da5565b901c90505b620400008216156116f05760806116eb826d2216e584f5fa1ea926041bedfe98611da5565b901c90505b62080000821615611718576080611713826b048a170391f7dc42444e8fa2611da5565b901c90505b60008460020b13156117335761173081600019611dbc565b90505b61174264010000000082611e27565b1561174e576001611751565b60005b6117629060ff16602083901c611c93565b949350505050565b60008080600019858709858702925082811083820303915050806000036117a3576000841161179857600080fd5b50829004905061071f565b8084116117af57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600060208083528351808285015260005b818110156118495785810183015185820160400152820161182d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461187f57600080fd5b50565b6000806040838503121561189557600080fd5b82356118a08161186a565b946020939093013593505050565b6000806000606084860312156118c357600080fd5b83356118ce8161186a565b925060208401356118de8161186a565b929592945050506040919091013590565b60006020828403121561190157600080fd5b5035919050565b60006020828403121561191a57600080fd5b813561071f8161186a565b6000806040838503121561193857600080fd5b82356119438161186a565b915060208301356119538161186a565b809150509250929050565b6000806000806080858703121561197457600080fd5b843561197f8161186a565b9350602085013561198f8161186a565b93969395505050506040820135916060013590565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015611a0e57835163ffffffff16835292840192918401916001016119ec565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4357611a436119a4565b604052919050565b600067ffffffffffffffff821115611a6557611a656119a4565b5060051b60200190565b600082601f830112611a8057600080fd5b81516020611a95611a9083611a4b565b611a1a565b82815260059290921b84018101918181019086841115611ab457600080fd5b8286015b84811015611ad8578051611acb8161186a565b8352918301918301611ab8565b509695505050505050565b60008060408385031215611af657600080fd5b825167ffffffffffffffff80821115611b0e57600080fd5b818501915085601f830112611b2257600080fd5b81516020611b32611a9083611a4b565b82815260059290921b84018101918181019089841115611b5157600080fd5b948201945b83861015611b7f5785518060060b8114611b705760008081fd5b82529482019490820190611b56565b91880151919650909350505080821115611b9857600080fd5b50611ba585828601611a6f565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b600682810b9082900b03667fffffffffffff198112667fffffffffffff821317156106fa576106fa611baf565b634e487b7160e01b600052601260045260246000fd5b60008160060b8360060b80611c1f57611c1f611bf2565b667fffffffffffff19821460001982141615611c3d57611c3d611baf565b90059392505050565b600181811c90821680611c5a57607f821691505b602082108103611c7a57634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156106fa576106fa611baf565b808201808211156106fa576106fa611baf565b80518015158114611cb657600080fd5b919050565b600060208284031215611ccd57600080fd5b61071f82611ca6565b8051600281900b8114611cb657600080fd5b600060208284031215611cfa57600080fd5b61071f82611cd6565b805161ffff81168114611cb657600080fd5b600080600080600080600060e0888a031215611d3057600080fd5b8751611d3b8161186a565b9650611d4960208901611cd6565b9550611d5760408901611d03565b9450611d6560608901611d03565b9350611d7360808901611d03565b925060a088015160ff81168114611d8957600080fd5b9150611d9760c08901611ca6565b905092959891949750929550565b80820281158282048414176106fa576106fa611baf565b600082611dcb57611dcb611bf2565b500490565b600060208284031215611de257600080fd5b5051919050565b6000600160ff1b8201611dfe57611dfe611baf565b5060000390565b60008160020b627fffff198103611e1e57611e1e611baf565b60000392915050565b600082611e3657611e36611bf2565b50069056fea2646970667358221220d08365eaa7068fee605eee0db45ed1bd50b0a345d6736397d548354773c6cdd964736f6c63430008140033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000004200000000000000000000000000000000000006000000000000000000000000300af2ede7cd604355a09884a1521af732f3b8f7000000000000000000000000ad0496c90ef1dd00601229aaad6c066d7b93fdc4000000000000000000000000f2bd327f7e42ef9eda3e65c7c5355be5f3333267000000000000000000000000000000000000000000000000000000000000000652656c6965660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000652454c4945460000000000000000000000000000000000000000000000000000