[ { "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": "account", "type": "address" } ], "name": "AuthorizedSnapshotter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "buyTaxRate", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellTaxRate", "type": "uint256" } ], "name": "BuySellTaxRate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "DeauthorizedSnapshotter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "router", "type": "address" }, { "indexed": true, "internalType": "address", "name": "pair", "type": "address" } ], "name": "RouterSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "minTaxForSell", "type": "uint256" } ], "name": "SetMinTaxForSell", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "Snapshot", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSold", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "usdtReceived", "type": "uint256" } ], "name": "SoldTax", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "USDT", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pool_", "type": "address" } ], "name": "addPoolToTax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "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": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "authorizeSnapshotter", "outputs": [], "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": "account", "type": "address" }, { "internalType": "uint256", "name": "snapshotId", "type": "uint256" } ], "name": "balanceOfAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "burnBulk", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "buyTaxRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "deauthorizeSnapshotter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initializeImplementation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minTaxForSell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "poolsToTax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pool_", "type": "address" } ], "name": "removePoolToTax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellTaxRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "buyTaxRate_", "type": "uint256" }, { "internalType": "uint256", "name": "sellTaxRate_", "type": "uint256" } ], "name": "setBuySellTaxRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minTaxForSell_", "type": "uint256" } ], "name": "setMinTaxForSell", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "router", "type": "address" }, { "internalType": "address", "name": "pair", "type": "address" } ], "name": "setRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "taxTo_", "type": "address" } ], "name": "setTaxTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "USDT_", "type": "address" } ], "name": "setUSDT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "snapshot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxTo", "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": "uint256", "name": "snapshotId", "type": "uint256" } ], "name": "totalSupplyAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "recipients", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "transferBulk", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "transferFromBulk", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "upgradeToV5", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
608060405234801561001057600080fd5b50613406806100206000396000f3fe60806040526004361061026b5760003560e01c8063691f224f116101445780639dc29fac116100b6578063dd62ed3e1161007a578063dd62ed3e146106ea578063e9825ffa14610730578063f2fde38b14610750578063f6dd8f7514610770578063f8f5f0b314610790578063fbc1284f146107c157610272565b80639dc29fac14610648578063a457c2d714610668578063a9059cbb14610688578063c54e44eb146106a8578063d85b9756146106c957610272565b80638456cb59116101085780638456cb59146105975780638da5cb5b146105ac5780639316c3e7146105de57806395d89b41146105fe5780639711715a14610613578063981b24d01461062857610272565b8063691f224f1461051457806370a082311461052b578063715018a61461054b57806373aa540a1461056057806380ac2fca1461058057610272565b806339509351116101dd5780634cd88b76116101a15780634cd88b76146104655780634ee2cd7e1461048557806350c1b923146104a557806354fd4d50146104c55780635c975abb146104dc578063634b3841146104f457610272565b806339509351146103db5780633f4ba83a146103fb57806340c10f191461041057806341d68b8f146104305780634c10879d1461045057610272565b806318160ddd1161022f57806318160ddd1461032957806323b872dd1461034857806324024efd1461036857806324d2472a1461037f578063307b8a021461039f578063313ce567146103bf57610272565b806305711ffc1461027757806306fdde031461028e57806308b704ac146102b9578063095ea7b3146102d95780631672ba221461030957610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c6107e1565b005b34801561029a57600080fd5b506102a3610876565b6040516102b0919061308f565b60405180910390f35b3480156102c557600080fd5b5061028c6102d4366004612dfb565b610908565b3480156102e557600080fd5b506102f96102f4366004612f00565b610948565b60405190151581526020016102b0565b34801561031557600080fd5b5061028c610324366004612dfb565b61095f565b34801561033557600080fd5b506067545b6040519081526020016102b0565b34801561035457600080fd5b506102f9610363366004612e47565b6109a6565b34801561037457600080fd5b5061033a61012f5481565b34801561038b57600080fd5b5061028c61039a366004612ff3565b610a59565b3480156103ab57600080fd5b506102f96103ba366004612e82565b610aae565b3480156103cb57600080fd5b50604051601281526020016102b0565b3480156103e757600080fd5b506102f96103f6366004612f00565b610dcf565b34801561040757600080fd5b5061028c610e06565b34801561041c57600080fd5b5061028c61042b366004612f00565b610e16565b34801561043c57600080fd5b5061028c61044b366004612e15565b610e2c565b34801561045c57600080fd5b5061028c610ea7565b34801561047157600080fd5b5061028c610480366004612f92565b610f63565b34801561049157600080fd5b5061033a6104a0366004612f00565b611038565b3480156104b157600080fd5b5061028c6104c0366004612dfb565b611081565b3480156104d157600080fd5b5061033a6101335481565b3480156104e857600080fd5b5060975460ff166102f9565b34801561050057600080fd5b5061028c61050f366004613023565b6110ac565b34801561052057600080fd5b5061033a61012e5481565b34801561053757600080fd5b5061033a610546366004612dfb565b61111c565b34801561055757600080fd5b5061028c61113b565b34801561056c57600080fd5b5061028c61057b366004612dfb565b61114d565b34801561058c57600080fd5b5061033a6101375481565b3480156105a357600080fd5b5061028c61118a565b3480156105b857600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016102b0565b3480156105ea57600080fd5b506102f96105f9366004612f29565b61119a565b34801561060a57600080fd5b506102a3611428565b34801561061f57600080fd5b5061033a611437565b34801561063457600080fd5b5061033a610643366004612ff3565b6114c7565b34801561065457600080fd5b5061028c610663366004612f00565b6114f2565b34801561067457600080fd5b506102f9610683366004612f00565b611504565b34801561069457600080fd5b506102f96106a3366004612f00565b61159f565b3480156106b457600080fd5b50610138546105c6906001600160a01b031681565b3480156106d557600080fd5b50610131546105c6906001600160a01b031681565b3480156106f657600080fd5b5061033a610705366004612e15565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b34801561073c57600080fd5b5061028c61074b366004612dfb565b6115ac565b34801561075c57600080fd5b5061028c61076b366004612dfb565b611679565b34801561077c57600080fd5b5061028c61078b366004612f29565b6116ef565b34801561079c57600080fd5b506102f96107ab366004612dfb565b6101306020526000908152604090205460ff1681565b3480156107cd57600080fd5b5061028c6107dc366004612dfb565b6117c1565b6005610133541061084b5760405162461bcd60e51b815260206004820152602960248201527f4465487562546f6b656e3a20416c726561647920757067726164656420746f2060448201526876657273696f6e203560b81b60648201526084015b60405180910390fd5b60056101338190556040805180820190915260018152603b60f91b602082015261087491611896565b565b6060606880546108859061330e565b80601f01602080910402602001604051908101604052809291908181526020018280546108b19061330e565b80156108fe5780601f106108d3576101008083540402835291602001916108fe565b820191906000526020600020905b8154815290600101906020018083116108e157829003601f168201915b5050505050905090565b6109106118db565b6001600160a01b03811661092357600080fd5b6001600160a01b0316600090815261013060205260409020805460ff19166001179055565b6000610955338484611935565b5060015b92915050565b6109676118db565b610131546001600160a01b038281169116141561098357600080fd5b61013180546001600160a01b0319166001600160a01b0392909216919091179055565b60006109b3848484611a5a565b6001600160a01b038416600090815260666020908152604080832033845290915290205482811015610a385760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610842565b610a4c8533610a4786856132f7565b611935565b60019150505b9392505050565b610a616118db565b80610137541415610a7157600080fd5b6101378190556040518181527fd84ae6dfa4f3f0540f485c5043b7fb8e8198b05c889ab29d8d089a47f1ab7ef6906020015b60405180910390a150565b6000610ab86118db565b60975460ff1615610adb5760405162461bcd60e51b8152600401610842906131e6565b838214610b255760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c2e4ceeadacadce8e640d8cadccee8d60431b6044820152606401610842565b836000805b82811015610b7657858582818110610b5257634e487b7160e01b600052603260045260246000fd5b9050602002013582610b6491906132a0565b9150610b6f81613349565b9050610b2a565b506001600160a01b038816600090815260656020526040902054811115610baf5760405162461bcd60e51b815260040161084290613107565b6001600160a01b038816600090815260666020908152604080832033845290915290205481811015610c335760405162461bcd60e51b815260206004820152602760248201527f45524332303a207472616e7366657220746f74616c206578636565647320616c6044820152666c6f77616e636560c81b6064820152608401610842565b610c428933610a4785856132f7565b6001600160a01b03891660009081526065602052604081208054849290610c6a9084906132f7565b90915550610c79905089611aad565b60005b83811015610dbf576000898983818110610ca657634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610cbb9190612dfb565b90506001600160a01b038116610ce35760405162461bcd60e51b8152600401610842906130c4565b878783818110610d0357634e487b7160e01b600052603260045260246000fd5b9050602002013560656000836001600160a01b03166001600160a01b031681526020019081526020016000206000828254610d3e91906132a0565b90915550610d4d905081611aad565b806001600160a01b03168b6001600160a01b03166000805160206133b18339815191528a8a86818110610d9057634e487b7160e01b600052603260045260246000fd5b90506020020135604051610da691815260200190565b60405180910390a350610db881613349565b9050610c7c565b5060019998505050505050505050565b3360008181526066602090815260408083206001600160a01b03871684529091528120549091610955918590610a479086906132a0565b610e0e6118db565b610874611ad7565b610e1e6118db565b610e288282611b29565b5050565b610e346118db565b6001600160a01b038216610e4757600080fd5b61013480546001600160a01b03199081166001600160a01b0385811691821790935561013580549092169284169283179091556040517f8ab4cea230ab04f96aaa9a71fbc4bfa98097c7b9f07e06be33868b500f81002890600090a35050565b600054610100900460ff1615808015610ec75750600054600160ff909116105b80610ee15750303b158015610ee1575060005460ff166001145b610efd5760405162461bcd60e51b81526004016108429061314d565b6000805460ff191660011790558015610f20576000805461ff0019166101001790555b610f28611c02565b610f30611c31565b8015610f60576000805461ff00191690556040516001815260008051602061339183398151915290602001610aa3565b50565b600054610100900460ff1615808015610f835750600054600160ff909116105b80610f9d5750303b158015610f9d575060005460ff166001145b610fb95760405162461bcd60e51b81526004016108429061314d565b6000805460ff191660011790558015610fdc576000805461ff0019166101001790555b610fe4611c02565b610fee8383611c6e565b610ff6611cf9565b610ffe611d82565b8015611033576000805461ff001916905560405160018152600080516020613391833981519152906020015b60405180910390a15b505050565b6001600160a01b038216600090815260fb602052604081208190819061105f908590611e0b565b9150915081611076576110718561111c565b611078565b805b95945050505050565b6110896118db565b61013880546001600160a01b0319166001600160a01b0392909216919091179055565b6110b46118db565b8161012e54141580156110ca57508061012f5414155b6110d357600080fd5b61012e82905561012f81905560408051838152602081018390527f0a915b823dc5304db7e024607ee0a48c27464798ca7178935e46965db7bd41e1910160405180910390a15050565b6001600160a01b0381166000908152606560205260409020545b919050565b6111436118db565b6108746000611f0b565b6111556118db565b6001600160a01b03811661116857600080fd5b6001600160a01b0316600090815261013060205260409020805460ff19169055565b6111926118db565b610874611c31565b60006111a46118db565b60975460ff16156111c75760405162461bcd60e51b8152600401610842906131e6565b8382146112115760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c2e4ceeadacadce8e640d8cadccee8d60431b6044820152606401610842565b33846000805b828110156112635786868281811061123f57634e487b7160e01b600052603260045260246000fd5b905060200201358261125191906132a0565b915061125c81613349565b9050611217565b506001600160a01b03831660009081526065602052604090205481111561129c5760405162461bcd60e51b815260040161084290613107565b6001600160a01b038316600090815260656020526040812080548392906112c49084906132f7565b909155506112d3905083611aad565b60005b8281101561141957600089898381811061130057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906113159190612dfb565b90506001600160a01b03811661133d5760405162461bcd60e51b8152600401610842906130c4565b87878381811061135d57634e487b7160e01b600052603260045260246000fd5b9050602002013560656000836001600160a01b03166001600160a01b03168152602001908152602001600020600082825461139891906132a0565b909155506113a7905081611aad565b806001600160a01b0316856001600160a01b03166000805160206133b18339815191528a8a868181106113ea57634e487b7160e01b600052603260045260246000fd5b9050602002013560405161140091815260200190565b60405180910390a35061141281613349565b90506112d6565b50600198975050505050505050565b6060606980546108859061330e565b33600090815261012d602052604081205460ff168061146057506033546001600160a01b031633145b6114ba5760405162461bcd60e51b815260206004820152602560248201527f7a44414f546f6b656e3a204e6f7420617574686f72697a656420746f20736e616044820152641c1cda1bdd60da1b6064820152608401610842565b6114c2611f5d565b905090565b60008060006114d78460fc611e0b565b91509150816114e8576067546114ea565b805b949350505050565b6114fa6118db565b610e288282611fb8565b3360009081526066602090815260408083206001600160a01b0386168452909152812054828110156115865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610842565b6115953385610a4786856132f7565b5060019392505050565b6000610955338484611a5a565b6115b46118db565b6001600160a01b038116600090815261012d602052604090205460ff166116275760405162461bcd60e51b815260206004820152602160248201527f7a44414f546f6b656e3a204163636f756e74206e6f7420617574686f72697a656044820152601960fa1b6064820152608401610842565b6001600160a01b038116600081815261012d6020908152604091829020805460ff1916905590519182527f51f8ef0f426007e7662fabfb0a7d46d2e383ffe4f627aebfac09c281546877399101610aa3565b6116816118db565b6001600160a01b0381166116e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610842565b610f6081611f0b565b6116f76118db565b8281146117395760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908185c99dd5b595b9d60821b6044820152606401610842565b8260005b818110156117b9576117a986868381811061176857634e487b7160e01b600052603260045260246000fd5b905060200201602081019061177d9190612dfb565b85858481811061179d57634e487b7160e01b600052603260045260246000fd5b90506020020135611fb8565b6117b281613349565b905061173d565b505050505050565b6117c96118db565b6001600160a01b038116600090815261012d602052604090205460ff16156118415760405162461bcd60e51b815260206004820152602560248201527f7a44414f546f6b656e3a204163636f756e7420616c726561647920617574686f6044820152641c9a5e995960da1b6064820152608401610842565b6001600160a01b038116600081815261012d6020908152604091829020805460ff1916600117905590519182527f2e457b8fcc8c01e995f48f89abb9cf6a72dce32622702d6ffa54c372be369ff99101610aa3565b610e2882826040516024016118ac9291906130a2565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052612101565b6033546001600160a01b031633146108745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610842565b6001600160a01b0383166119975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610842565b6001600160a01b0382166119f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610842565b6001600160a01b0383811660008181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a67848484612122565b9050611a7d8484611a7884866132f7565b61214b565b8015611aa757611a8e84308361214b565b806101326000828254611aa191906132a0565b90915550505b50505050565b6001600160a01b038116600090815260fb60205260409020610f6090611ad28361111c565b6122a1565b611adf6122ec565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216611b7f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610842565b611b8b60008383612335565b8060676000828254611b9d91906132a0565b90915550506001600160a01b03821660009081526065602052604081208054839290611bca9084906132a0565b90915550506040518181526001600160a01b038316906000906000805160206133b18339815191529060200160405180910390a35050565b600054610100900460ff16611c295760405162461bcd60e51b81526004016108429061319b565b610874612396565b611c396123c6565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611b0c3390565b600054610100900460ff1615808015611c8e5750600054600160ff909116105b80611ca85750303b158015611ca8575060005460ff166001145b611cc45760405162461bcd60e51b81526004016108429061314d565b6000805460ff191660011790558015611ce7576000805461ff0019166101001790555b611cef61240c565b610ffe8383612433565b600054610100900460ff1615808015611d195750600054600160ff909116105b80611d335750303b158015611d33575060005460ff166001145b611d4f5760405162461bcd60e51b81526004016108429061314d565b6000805460ff191660011790558015611d72576000805461ff0019166101001790555b611d7a61240c565b610f30612504565b600054610100900460ff1615808015611da25750600054600160ff909116105b80611dbc5750303b158015611dbc575060005460ff166001145b611dd85760405162461bcd60e51b81526004016108429061314d565b6000805460ff191660011790558015611dfb576000805461ff0019166101001790555b611e0361240c565b611d7a6125ac565b60008060008411611e575760405162461bcd60e51b815260206004820152601660248201527504552433230536e617073686f743a20696420697320360541b6044820152606401610842565b60fe54841115611ea95760405162461bcd60e51b815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e742069640000006044820152606401610842565b6000611eb584866125df565b8454909150811415611ece576000809250925050611f04565b6001846001018281548110611ef357634e487b7160e01b600052603260045260246000fd5b906000526020600020015492509250505b9250929050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611f6d60fe80546001019055565b6000611f7860fe5490565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051611fab91815260200190565b60405180910390a1905090565b6001600160a01b0382166120185760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610842565b61202482600083612335565b6001600160a01b038216600090815260656020526040902054818110156120985760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610842565b6120a282826132f7565b6001600160a01b038416600090815260656020526040812091909155606780548492906120d09084906132f7565b90915550506040518281526000906001600160a01b038516906000805160206133b183398151915290602001611a4d565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61013854600090600160a01b900460ff161561214057506000610a52565b6114ea84848461268a565b6001600160a01b0383166121af5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610842565b6001600160a01b0382166121d55760405162461bcd60e51b8152600401610842906130c4565b6121e0838383612335565b6001600160a01b038316600090815260656020526040902054818110156122195760405162461bcd60e51b815260040161084290613107565b61222382826132f7565b6001600160a01b0380861660009081526065602052604080822093909355908516815290812080548492906122599084906132a0565b92505081905550826001600160a01b0316846001600160a01b03166000805160206133b18339815191528460405161229391815260200190565b60405180910390a350505050565b60006122ac60fe5490565b9050806122b88461272d565b1015611033578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b60975460ff166108745760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610842565b61234083838361277e565b600061234c84846127d1565b61013854909150600160a01b900460ff161580156123895750600081600381111561238757634e487b7160e01b600052602160045260246000fd5b145b15611aa757611aa76128a6565b600054610100900460ff166123bd5760405162461bcd60e51b81526004016108429061319b565b61087433611f0b565b60975460ff16156108745760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610842565b600054610100900460ff166108745760405162461bcd60e51b81526004016108429061319b565b600054610100900460ff16158080156124535750600054600160ff909116105b8061246d5750303b15801561246d575060005460ff166001145b6124895760405162461bcd60e51b81526004016108429061314d565b6000805460ff1916600117905580156124ac576000805461ff0019166101001790555b82516124bf906068906020860190612c81565b5081516124d3906069906020850190612c81565b508015611033576000805461ff0019169055604051600181526000805160206133918339815191529060200161102a565b600054610100900460ff16158080156125245750600054600160ff909116105b8061253e5750303b15801561253e575060005460ff166001145b61255a5760405162461bcd60e51b81526004016108429061314d565b6000805460ff191660011790558015610f30576000805461ff0019166101001790558015610f60576000805461ff00191690556040516001815260008051602061339183398151915290602001610aa3565b600054610100900460ff166125d35760405162461bcd60e51b81526004016108429061319b565b6097805460ff19169055565b81546000906125f057506000610959565b82546000905b8082101561263d57600061260a83836128ca565b6000878152602090209091508590820154111561262957809150612637565b6126348160016132a0565b92505b506125f6565b600082118015612669575083612666866126586001866132f7565b600091825260209091200190565b54145b15612682576126796001836132f7565b92505050610959565b509050610959565b6000600261269885856127d1565b60038111156126b757634e487b7160e01b600052602160045260246000fd5b14156126e05761271061012f54836126cf91906132d8565b6126d991906132b8565b9050610a52565b60036126ec85856127d1565b600381111561270b57634e487b7160e01b600052602160045260246000fd5b14156127235761271061012e54836126cf91906132d8565b5060009392505050565b805460009061273e57506000611136565b8154829061274e906001906132f7565b8154811061276c57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050611136565b600061278c60975460ff1690565b90506001600160a01b0383166127aa5780156127aa576127aa611ad7565b6127b58484846128e5565b6001600160a01b038316611aa7578015611aa757611aa7611c31565b6001600160a01b0382166000908152610130602052604081205460ff16801561281457506001600160a01b0382166000908152610130602052604090205460ff16155b1561282157506003610959565b6001600160a01b0383166000908152610130602052604090205460ff1615801561286457506001600160a01b0382166000908152610130602052604090205460ff165b1561287157506002610959565b6001600160a01b03831630148061289057506001600160a01b03821630145b1561289d57506001610959565b50600092915050565b60006128b13061111c565b90506128bc8161293d565b15610f6057610f608161295a565b60006128d960028484186132b8565b610a52908484166132a0565b6128f0838383612bcd565b6001600160a01b0383166129145761290782611aad565b61290f612bf0565b611033565b6001600160a01b03821661292b5761290783611aad565b61293483611aad565b61103382611aad565b600061013754821015801561095957506000610137541192915050565b610138805460ff60a01b1916600160a01b1790556101315460009081906001600160a01b03161580159061298e5750600083115b15612b8157610134546129ac9030906001600160a01b031685611935565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129ef57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015261013854825191169082906001908110612a2f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015261013854610131546040516370a0823160e01b8152908316600482015260009291909116906370a082319060240160206040518083038186803b158015612a8b57600080fd5b505afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac3919061300b565b61013154909150612ae390869060019085906001600160a01b0316612bfe565b61013854610131546040516370a0823160e01b81526001600160a01b039182166004820152839291909116906370a082319060240160206040518083038186803b158015612b3057600080fd5b505afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b68919061300b565b612b7291906132f7565b92508215612b7e578493505b50505b60408051838152602081018390527f06805ccbd1b2e43894d73b91045d095587d885cbe4b3014eb77e28f12f55c767910160405180910390a15050610138805460ff60a01b1916905550565b60975460ff16156110335760405162461bcd60e51b8152600401610842906131e6565b61087460fc611ad260675490565b610134546001600160a01b031615611aa75761013454604051635c11d79560e01b81526001600160a01b0390911690635c11d79590612c499087908790879087904290600401613230565b600060405180830381600087803b158015612c6357600080fd5b505af1158015612c77573d6000803e3d6000fd5b5050505050505050565b828054612c8d9061330e565b90600052602060002090601f016020900481019282612caf5760008555612cf5565b82601f10612cc857805160ff1916838001178555612cf5565b82800160010185558215612cf5579182015b82811115612cf5578251825591602001919060010190612cda565b50612d01929150612d05565b5090565b5b80821115612d015760008155600101612d06565b80356001600160a01b038116811461113657600080fd5b60008083601f840112612d42578081fd5b50813567ffffffffffffffff811115612d59578182fd5b6020830191508360208260051b8501011115611f0457600080fd5b600082601f830112612d84578081fd5b813567ffffffffffffffff80821115612d9f57612d9f61337a565b604051601f8301601f19908116603f01168101908282118183101715612dc757612dc761337a565b81604052838152866020858801011115612ddf578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215612e0c578081fd5b610a5282612d1a565b60008060408385031215612e27578081fd5b612e3083612d1a565b9150612e3e60208401612d1a565b90509250929050565b600080600060608486031215612e5b578081fd5b612e6484612d1a565b9250612e7260208501612d1a565b9150604084013590509250925092565b600080600080600060608688031215612e99578081fd5b612ea286612d1a565b9450602086013567ffffffffffffffff80821115612ebe578283fd5b612eca89838a01612d31565b90965094506040880135915080821115612ee2578283fd5b50612eef88828901612d31565b969995985093965092949392505050565b60008060408385031215612f12578182fd5b612f1b83612d1a565b946020939093013593505050565b60008060008060408587031215612f3e578384fd5b843567ffffffffffffffff80821115612f55578586fd5b612f6188838901612d31565b90965094506020870135915080821115612f79578384fd5b50612f8687828801612d31565b95989497509550505050565b60008060408385031215612fa4578182fd5b823567ffffffffffffffff80821115612fbb578384fd5b612fc786838701612d74565b93506020850135915080821115612fdc578283fd5b50612fe985828601612d74565b9150509250929050565b600060208284031215613004578081fd5b5035919050565b60006020828403121561301c578081fd5b5051919050565b60008060408385031215613035578182fd5b50508035926020909101359150565b60008151808452815b818110156130695760208185018101518683018201520161304d565b8181111561307a5782602083870101525b50601f01601f19169290920160200192915050565b600060208252610a526020830184613044565b6000604082526130b56040830185613044565b90508260208301529392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020808252602a908201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686040820152691a5b19481c185d5cd95960b21b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561327f5784516001600160a01b03168352938301939183019160010161325a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156132b3576132b3613364565b500190565b6000826132d357634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156132f2576132f2613364565b500290565b60008282101561330957613309613364565b500390565b600181811c9082168061332257607f821691505b6020821081141561334357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561335d5761335d613364565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122022aea497f0e96fa4ddb4f29f8ec5207ff5b830f6b6c9a3f8be68608a319c423364736f6c63430008030033