diff --git a/abi-bindings/go/staking/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/staking/ERC20TokenStakingManager/ERC20TokenStakingManager.go index a4e4aa5bb..336c1740e 100644 --- a/abi-bindings/go/staking/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/staking/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -84,7 +84,7 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"pChainBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delegationAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"convertSubnetTxID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615db6380380615db683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615c698061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c806366435abf116100bf578063ba3a4b9711610079578063ba3a4b971461030a578063bee0a03f1461031d578063c974d1b614610330578063d5f20ff614610338578063df93d8de14610358578063eb0acb8914610362575f80fd5b806366435abf1461028557806376f786211461029857806398f3e2b4146102ab5780639e1bc4ef146102be578063a3a65e48146102d1578063b771b3bc146102e4575f80fd5b8063330a0a3a11610110578063330a0a3a1461020a57806335455ded1461021d578063467ef06f146102395780635297fae61461024c57806361e2f4901461025f5780636206585614610272575f80fd5b80630118acc41461014c5780630322ed98146101615780630cdd098514610174578063151d30d1146101c55780632e2194d8146101df575b5f80fd5b61015f61015a366004614f57565b610375565b005b61015f61016f366004614f92565b610806565b6101b2610182366004614f92565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b6101cd600a81565b60405160ff90911681526020016101bc565b6101f26101ed366004614f92565b6109bf565b6040516001600160401b0390911681526020016101bc565b61015f610218366004614fbd565b6109d5565b61022661271081565b60405161ffff90911681526020016101bc565b61015f610247366004614ffb565b610ab4565b61015f61025a366004615014565b610b07565b61015f61026d36600461503c565b610cdc565b6101b26102803660046150a0565b611428565b6101f2610293366004614f92565b611441565b61015f6102a6366004614f57565b611455565b61015f6102b9366004615014565b611536565b6101b26102cc3660046150b9565b611763565b61015f6102df366004614ffb565b61178f565b6102f26005600160991b0181565b6040516001600160a01b0390911681526020016101bc565b61015f610318366004614f92565b611947565b61015f61032b366004614f92565b611bcd565b6101cd601481565b61034b610346366004614f92565b611ce1565b6040516101bc91906150ed565b6101f26202a30081565b6101b26103703660046151b4565b611dd4565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408120600101545f80516020615bbd8339815191529184156103c7576103c48285611e09565b90505b5f868152600684016020526040808220815161010081019092528054829060ff1660048111156103f9576103f96150d9565b600481111561040a5761040a6150d9565b8152815461010090046001600160a01b03166020820152600182015460408201526002808301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115610491576104916150d9565b146104e35760405162461bcd60e51b815260206004820152602a60248201525f80516020615bdd8339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208101516001600160a01b031633146105485760405162461bcd60e51b815260206004820152603360248201525f80516020615bdd8339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b60648201526084016104da565b5f610552846120a5565b600383526001600160401b0342811660a0850152811660e08401525f8981526006870160205260409020835181549293508492829060ff1916600183600481111561059f5761059f6150d9565b021790555060208201518154610100600160a81b0319166101006001600160a01b0390921691909102178155604082015160018201556060820151600282018054608085015160a086015160c08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560e0909201516003909101805467ffffffffffffffff1916919092161790555f61067185611ce1565b905082606001516001600160401b031681608001516001600160401b0316116106e85760405162461bcd60e51b815260206004820152602360248201527f506f5356616c696461746f724d616e616765723a20496e76616c69642077656960448201526219da1d60ea1b60648201526084016104da565b6002815160058111156106fd576106fd6150d9565b0361070f5761070f8360600151612135565b5f83606001518260800151610724919061522d565b90506107308682612142565b5f6005600160991b0163ee5b48eb61074989878661218a565b6040518263ffffffff1660e01b8152600401610765919061526f565b6020604051808303815f875af1158015610781573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a591906152a1565b604080516001600160401b03858116825242602083015291810183905291925085169088908d907f5318ab4d7cdf77056db2db5b539a08fe7d1a63d6885ecee8236a0dbda2843b4e9060600160405180910390a45050505050505050505050565b5f8181525f80516020615c3d8339815191526020526040808220815160e0810190925280545f80516020615bfd83398151915293929190829060ff166005811115610853576108536150d9565b6005811115610864576108646150d9565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c090910152909150815160058111156108d3576108d36150d9565b146109385760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b60648201526084016104da565b6005600160991b016001600160a01b031663ee5b48eb61095d8584606001515f61218a565b6040518263ffffffff1660e01b8152600401610979919061526f565b6020604051808303815f875af1158015610995573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b991906152a1565b50505050565b5f6109cf64e8d4a51000836152b8565b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610a1e575080546001600160401b03808416911610155b15610a3c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610a6784846123b1565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615bbd8339815191525f80610acd846123cb565b6040808201515f8481526005880160205291909120549294509092506109b9916001600160401b03909116906001600160a01b0316612743565b5f80516020615bbd8339815191525f610b1f84612779565b90505f80610b308360400151612953565b50915091505f610b3f83611ce1565b9050816001600160401b031681606001516001600160401b03161015610b775760405162461bcd60e51b81526004016104da906152d7565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610bbc5760405162461bcd60e51b81526004016104da90615319565b60015f87815260068701602052604090205460ff166004811115610be257610be26150d9565b14610c4b5760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b60648201526084016104da565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f80516020615bfd8339815191529060ff1615610d795760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b60648201526084016104da565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de091906152a1565b836020013514610e425760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b60648201526084016104da565b30610e536060850160408601615362565b6001600160a01b031614610ec55760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b60648201526084016104da565b5f610ed3606085018561537d565b905011610f325760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a206e6f20696e697469616c2076616c604482015266696461746f727360c81b60648201526084016104da565b5f610f40606085018561537d565b91505063ffffffff8110610fac5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20746f6f206d616e7920696e69746960448201526c616c2076616c696461746f727360981b60648201526084016104da565b5f843560208601356014610fc66060890160408a01615362565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff161015611338575f611046606089018961537d565b8363ffffffff1681811061105c5761105c6153c9565b905060200281019061106e91906153dd565b6110779061548d565b8051909150806110995760405162461bcd60e51b81526004016104da90615524565b5f818152600988016020526040902054156110c65760405162461bcd60e51b81526004016104da90615565565b8160400151516030146110eb5760405162461bcd60e51b81526004016104da906155ad565b84825f01518360200151846040015160405160200161110d94939291906155fa565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f9160029161115b9190615649565b602060405180830381855afa158015611176573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061119991906152a1565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff19166001836005811115611225576112256150d9565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff1916928416929092179091558401516112d891168661565a565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a350505080806113309061566d565b91505061102a565b50600584018190555f61134a86612779565b90505f61135a8260400151612b8e565b90508060028560405161136d9190615649565b602060405180830381855afa158015611388573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906113ab91906152a1565b1461140f5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b60648201526084016104da565b505050600a909201805460ff1916600117905550505050565b5f6109cf6001600160401b03831664e8d4a5100061568f565b5f61144b82611ce1565b6080015192915050565b5f80516020615bbd8339815191525f61146d85611ce1565b5f86815260058401602052604090205460a08201519192506114a091600160b01b9091046001600160401b0316906156a6565b6001600160401b03164210156115145760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b60648201526084016104da565b8315611526576115248584611e09565b505b61152f85612d00565b5050505050565b61153e612ff6565b5f80516020615bbd8339815191525f61155684612779565b90505f806115678360400151612953565b50915091505f61157683611ce1565b9050816001600160401b031681606001516001600160401b031610156115ae5760405162461bcd60e51b81526004016104da906152d7565b5f8681526006860160205260409020600301546001600160401b03808416911611156115ec5760405162461bcd60e51b81526004016104da90615319565b60035f87815260068701602052604090205460ff166004811115611612576116126150d9565b146116665760405162461bcd60e51b815260206004820152603160248201525f80516020615bdd8339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b60648201526084016104da565b5f868152600686016020908152604091829020805460ff19166004908117808355845161010080820187529281529190046001600160a01b031692810183905260018201549381019390935260028101546001600160401b0380821660608601819052600160401b830482166080870152600160801b8304821660a0870152600160c01b909204811660c086015260039092015490911660e084015261170b91612743565b826001600160401b031684887f52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab60405160405180910390a450505050505061175f60015f80516020615c1d83398151915255565b5050565b5f61176c612ff6565b611777833384613040565b90506109cf60015f80516020615c1d83398151915255565b5f80516020615bfd8339815191525f6117a783612779565b90505f806117b883604001516134b9565b915091508061181a5760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b60648201526084016104da565b5f82815260078501602052604081208054611834906156c6565b9050118015611866575060015f83815260088601602052604090205460ff166005811115611864576118646150d9565b145b6118825760405162461bcd60e51b81526004016104da906156fe565b5f828152600785016020526040812061189a91614ee8565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615bbd83398151915293929190829060ff1660048111156119a8576119a86150d9565b60048111156119b9576119b96150d9565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611a4057611a406150d9565b1480611a5e5750600381516004811115611a5c57611a5c6150d9565b145b611ab25760405162461bcd60e51b815260206004820152603260248201525f80516020615bdd833981519152604482015271737461747573206e6f742070656e64696e6760701b60648201526084016104da565b5f611ac08260400151611ce1565b905080606001516001600160401b03165f03611b445760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e2049440060648201526084016104da565b6005600160991b016001600160a01b031663ee5b48eb611b7184604001518460600151856080015161218a565b6040518263ffffffff1660e01b8152600401611b8d919061526f565b6020604051808303815f875af1158015611ba9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152f91906152a1565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f80516020615bfd833981519152929190611c15906156c6565b9050118015611c47575060015f83815260088301602052604090205460ff166005811115611c4557611c456150d9565b145b611c635760405162461bcd60e51b81526004016104da906156fe565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c9c9190600401615745565b6020604051808303815f875af1158015611cb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cdc91906152a1565b505050565b6040805160e080820183525f8083526020808401829052838501829052606084018290526080840182905260a0840182905260c084018290528582525f80516020615c3d83398151915290528390208351918201909352825491925f80516020615bfd83398151915292829060ff166005811115611d6157611d616150d9565b6005811115611d7257611d726150d9565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b5f611ddd612ff6565b611de98585858561365a565b9050611e0160015f80516020615c1d83398151915255565b949350505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611e54573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e7b91908101906157da565b9150915080611ede5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104da565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f4591906152a1565b825114611fa95760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b60648201526084016104da565b60208201516001600160a01b03161561201f5760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104da565b5f8061202e84604001516138cf565b9150915081871461209b5760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b60648201526084016104da565b9695505050505050565b5f8181525f80516020615c3d8339815191526020526040812060020180545f80516020615bfd83398151915291600160401b9091046001600160401b03169060086120ef836158ac565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b61213f815f613aa7565b50565b5f9182525f80516020615c3d833981519152602052604090912060020180546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b6002811015612203576121c38160016158c7565b6121ce90600861568f565b5081515f908390839081106121e5576121e56153c9565b60200101906001600160f81b03191690815f1a9053506001016121af565b505f5b600481101561226e5761221a8160036158c7565b61222590600861568f565b600263ffffffff16901c60f81b82826002612240919061565a565b81518110612250576122506153c9565b60200101906001600160f81b03191690815f1a905350600101612206565b505f5b60208110156122d05761228581601f6158c7565b61229090600861568f565b86901c60f81b826122a283600661565a565b815181106122b2576122b26153c9565b60200101906001600160f81b03191690815f1a905350600101612271565b505f5b600881101561233b576122e78160076158c7565b6122f290600861568f565b6001600160401b038616901c60f81b8261230d83602661565a565b8151811061231d5761231d6153c9565b60200101906001600160f81b03191690815f1a9053506001016122d3565b505f5b60088110156123a6576123528160076158c7565b61235d90600861568f565b6001600160401b038516901c60f81b8261237883602e61565a565b81518110612388576123886153c9565b60200101906001600160f81b03191690815f1a90535060010161233e565b5090505b9392505050565b6123b9613d01565b6123c282613d4c565b61175f81613dc0565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290525f80516020615bfd8339815191525f61241a85612779565b90505f8061242b83604001516134b9565b9150915080156124905760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b60648201526084016104da565b5f828152600885016020526040808220815160e081019092528054829060ff1660058111156124c1576124c16150d9565b60058111156124d2576124d26150d9565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f9082516005811115612543576125436150d9565b1480612561575060018251600581111561255f5761255f6150d9565b145b6125c05760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b60648201526084016104da565b6003825160058111156125d5576125d56150d9565b036125e2575060046125e6565b5060055b6020808301515f9081526009880190915260408120558181600581111561260f5761260f6150d9565b90816005811115612622576126226150d9565b9052505f84815260088701602052604090208251815484929190829060ff19166001836005811115612656576126566150d9565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558151600581111561270a5761270a6150d9565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b7f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab005461175f906001600160a01b03168284613e74565b60408051606080820183525f8083526020830181905292820152905f80516020615bfd8339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156127ee573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261281591908101906157da565b91509150806128755760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20496e76616c69642077617270206d60448201526565737361676560d01b60648201526084016104da565b82548251146128d85760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b60648201526084016104da565b60208201516001600160a01b03161561294b5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b60648201526084016104da565b509392505050565b5f805f83516036146129775760405162461bcd60e51b81526004016104da906158da565b5f805b60028110156129c65761298e8160016158c7565b61299990600861568f565b61ffff168682815181106129af576129af6153c9565b016020015160f81c901b919091179060010161297a565b5061ffff8116156129e95760405162461bcd60e51b81526004016104da90615923565b5f805b6004811015612a4457612a008160036158c7565b612a0b90600861568f565b63ffffffff1687612a1d83600261565a565b81518110612a2d57612a2d6153c9565b016020015160f81c901b91909117906001016129ec565b5063ffffffff8116600414612a6b5760405162461bcd60e51b81526004016104da90615966565b5f805b6020811015612ac057612a8281601f6158c7565b612a8d90600861568f565b88612a9983600661565a565b81518110612aa957612aa96153c9565b016020015160f81c901b9190911790600101612a6e565b505f805b6008811015612b1f57612ad88160076158c7565b612ae390600861568f565b6001600160401b031689612af883602661565a565b81518110612b0857612b086153c9565b016020015160f81c901b9190911790600101612ac4565b505f805b6008811015612b7e57612b378160076158c7565b612b4290600861568f565b6001600160401b03168a612b5783602e61565a565b81518110612b6757612b676153c9565b016020015160f81c901b9190911790600101612b23565b5091989097509095509350505050565b5f8151602614612bb05760405162461bcd60e51b81526004016104da906158da565b5f805b6002811015612bff57612bc78160016158c7565b612bd290600861568f565b61ffff16848281518110612be857612be86153c9565b016020015160f81c901b9190911790600101612bb3565b5061ffff811615612c225760405162461bcd60e51b81526004016104da90615923565b5f805b6004811015612c7d57612c398160036158c7565b612c4490600861568f565b63ffffffff1685612c5683600261565a565b81518110612c6657612c666153c9565b016020015160f81c901b9190911790600101612c25565b5063ffffffff811615612ca25760405162461bcd60e51b81526004016104da90615966565b5f805b6020811015612cf757612cb981601f6158c7565b612cc490600861568f565b86612cd083600661565a565b81518110612ce057612ce06153c9565b016020015160f81c901b9190911790600101612ca5565b50949350505050565b5f8181525f80516020615c3d8339815191526020526040808220815160e0810190925280545f80516020615bfd83398151915293929190829060ff166005811115612d4d57612d4d6150d9565b6005811115612d5e57612d5e6150d9565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c09091015290915081516005811115612dd057612dd06150d9565b14612e2c5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b60648201526084016104da565b612e398160800151612135565b60038152426001600160401b031660c08201525f83815260088301602052604090208151815483929190829060ff19166001836005811115612e7d57612e7d6150d9565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f612f3284612f2c816120a5565b5f61218a565b60405163ee5b48eb60e01b81529091505f906005600160991b019063ee5b48eb90612f6190859060040161526f565b6020604051808303815f875af1158015612f7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fa191906152a1565b6080840151604080516001600160401b039092168252426020830152919250829187917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a35050505050565b5f80516020615c1d83398151915280546001190161302757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60015f80516020615c1d83398151915255565b5f5f80516020615bbd8339815191528161305c6101ed85613ed3565b90505f61306887611ce1565b905060028151600581111561307f5761307f6150d9565b146130de5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b60648201526084016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b03166131715760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b60648201526084016104da565b61317a82613f09565b5f82826080015161318b91906156a6565b600485015460408401519192506131ad916001600160401b03909116906159ad565b6001600160401b0316816001600160401b0316111561322c5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b60648201526084016104da565b6132368882612142565b5f613240896120a5565b90505f898260405160200161326c92919091825260c01b6001600160c01b031916602082015260280190565b6040516020818303038152906040528051906020012090505f6005600160991b016001600160a01b031663ee5b48eb6132a68d868861218a565b6040518263ffffffff1660e01b81526004016132c2919061526f565b6020604051808303815f875af11580156132de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061330291906152a1565b60408051610100810190915290915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905285835260068b01909152902081518154829060ff1916600183600481111561338a5761338a6150d9565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101849052908c16918d9185917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a4509998505050505050505050565b5f8082516027146134dc5760405162461bcd60e51b81526004016104da906158da565b5f805b600281101561352b576134f38160016158c7565b6134fe90600861568f565b61ffff16858281518110613514576135146153c9565b016020015160f81c901b91909117906001016134df565b5061ffff81161561354e5760405162461bcd60e51b81526004016104da90615923565b5f805b60048110156135a9576135658160036158c7565b61357090600861568f565b63ffffffff168661358283600261565a565b81518110613592576135926153c9565b016020015160f81c901b9190911790600101613551565b5063ffffffff81166003146135d05760405162461bcd60e51b81526004016104da90615966565b5f805b6020811015613625576135e781601f6158c7565b6135f290600861568f565b876135fe83600661565a565b8151811061360e5761360e6153c9565b016020015160f81c901b91909117906001016135d3565b505f8660268151811061363a5761363a6153c9565b016020015191976001600160f81b03199092161515965090945050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f80516020615bbd8339815191529061ffff8616108015906136a6575061271061ffff861611155b6136c25760405162461bcd60e51b81526004016104da906159d8565b60028101546001600160401b03908116908516101561373b5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b60648201526084016104da565b805483101561379e5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b60648201526084016104da565b80600101548311156138055760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b60648201526084016104da565b5f61380f84613ed3565b90505f61381b826109bf565b90505f6138288983613f14565b9050604051806060016040528061383c3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b5f808251602e146138f25760405162461bcd60e51b81526004016104da906158da565b5f805b6002811015613941576139098160016158c7565b61391490600861568f565b61ffff1685828151811061392a5761392a6153c9565b016020015160f81c901b91909117906001016138f5565b5061ffff8116156139645760405162461bcd60e51b81526004016104da90615923565b5f805b60048110156139bf5761397b8160036158c7565b61398690600861568f565b63ffffffff168661399883600261565a565b815181106139a8576139a86153c9565b016020015160f81c901b9190911790600101613967565b5063ffffffff81166005146139e65760405162461bcd60e51b81526004016104da90615966565b5f805b6020811015613a3b576139fd81601f6158c7565b613a0890600861568f565b87613a1483600661565a565b81518110613a2457613a246153c9565b016020015160f81c901b91909117906001016139e9565b505f805b6008811015613a9a57613a538160076158c7565b613a5e90600861568f565b6001600160401b031688613a7383602661565a565b81518110613a8357613a836153c9565b016020015160f81c901b9190911790600101613a3f565b5090969095509350505050565b604080516080810182527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb045460208301527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0554928201929092527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06546001600160401b031660608201525f80516020615bfd833981519152914291901580613b8d575060028301548151613b89916001600160401b03169061565a565b8210155b15613bb3576001600160401b038516606082015281815260408101516020820152613bd2565b8481606001818151613bc591906156a6565b6001600160401b03169052505b6060810151613be29060646159ad565b602082015160028501546001600160401b039290921691613c0d9190600160401b900460ff1661568f565b1015613c715760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b60648201526084016104da565b8315613c9a57846001600160401b031681604001818151613c92919061565a565b905250613cb9565b846001600160401b031681604001818151613cb591906158c7565b9052505b805160038401556020810151600484015560408101516005840155606001516006909201805467ffffffffffffffff19166001600160401b0390931692909217909155505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613d4a57604051631afcd79f60e31b815260040160405180910390fd5b565b613d54613d01565b613d5d816143f8565b613d65614411565b61213f608082013560a0830135613d8260e0850160c086016150a0565b613d93610100860160e08701615a23565b61ffff16613da961012087016101008801615a3c565b613dbb61014088016101208901615362565b614421565b613dc8613d01565b7f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab006001600160a01b038216613e545760405162461bcd60e51b815260206004820152602c60248201527f4552433230546f6b656e5374616b696e674d616e616765723a207a65726f207460448201526b6f6b656e206164647265737360a01b60648201526084016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b03838116602483015260448201839052611cdc91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614665565b5f6109cf827f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00546001600160a01b0316906146c6565b61213f816001613aa7565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff16613f9f5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b60648201526084016104da565b5f80516020615bfd83398151915242613fbe60408601602087016150a0565b6001600160401b0316116140305760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b60648201526084016104da565b61404060408501602086016150a0565b6001600160401b03166140566202a3004261565a565b116140c95760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e2066757475726500000000000000000060648201526084016104da565b83356140e75760405162461bcd60e51b81526004016104da90615524565b83355f908152600982016020526040902054156141165760405162461bcd60e51b81526004016104da90615565565b6141236040850185615a5c565b90506030146141445760405162461bcd60e51b81526004016104da906155ad565b61414d83613f09565b5f806141e76040518060a0016040528085600101548152602001885f01358152602001876001600160401b0316815260200188602001602081019061419291906150a0565b6001600160401b031681526020016141ad60408a018a615a5c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250614828565b5f828152600786016020526040902091935091506142058282615ae2565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061423290859060040161526f565b6020604051808303815f875af115801561424e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061427291906152a1565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff191660018360058111156142ea576142ea6150d9565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b916143ca918e01908e016150a0565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b614400613d01565b614408614bd7565b61213f81614bdf565b614419613d01565b613d4a614d8b565b614429613d01565b5f80516020615bbd833981519152836144955760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b60648201526084016104da565b6127108411156144b75760405162461bcd60e51b81526004016104da906159d8565b8587111561451f5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b60648201526084016104da565b5f8360ff161161458c5760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b60648201526084016104da565b600a60ff841611156145fe5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b60648201526084016104da565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b5f6146796001600160a01b03841683614d93565b905080515f1415801561469d57508080602001905181019061469b9190615ba1565b155b15611cdc57604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa15801561470c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061473091906152a1565b90506147476001600160a01b038516333086614da0565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa15801561478b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147af91906152a1565b90508181116148155760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61481f82826158c7565b95945050505050565b5f60608260800151516030146148925760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b60648201526084016104da565b60408051608680825260c082019092525f916020820181803683370190505090505f5b6002811015614909576148c98160016158c7565b6148d490600861568f565b5081515f908390839081106148eb576148eb6153c9565b60200101906001600160f81b03191690815f1a9053506001016148b5565b505f5b6004811015614971576149208160036158c7565b61492b90600861568f565b600160ff919091161c60f81b8261494383600261565a565b81518110614953576149536153c9565b60200101906001600160f81b03191690815f1a90535060010161490c565b505f5b60208110156149ce5784518160208110614990576149906153c9565b1a60f81b826149a083600661565a565b815181106149b0576149b06153c9565b60200101906001600160f81b03191690815f1a905350600101614974565b505f5b6020811015614a2e57846020015181602081106149f0576149f06153c9565b1a60f81b82614a0083602661565a565b81518110614a1057614a106153c9565b60200101906001600160f81b03191690815f1a9053506001016149d1565b505f5b6008811015614aa257614a458160076158c7565b614a5090600861568f565b60ff1685604001516001600160401b0316901c60f81b82826046614a74919061565a565b81518110614a8457614a846153c9565b60200101906001600160f81b03191690815f1a905350600101614a31565b505f5b6030811015614b0d5784608001518181518110614ac457614ac46153c9565b01602001516001600160f81b03191682614adf83604e61565a565b81518110614aef57614aef6153c9565b60200101906001600160f81b03191690815f1a905350600101614aa5565b505f5b6008811015614b7f57614b248160076158c7565b614b2f90600861568f565b60608601516001600160401b0390811691161c60f81b82614b5183607e61565a565b81518110614b6157614b616153c9565b60200101906001600160f81b03191690815f1a905350600101614b10565b50600281604051614b909190615649565b602060405180830381855afa158015614bab573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614bce91906152a1565b94909350915050565b613d4a613d01565b614be7613d01565b80355f80516020615bfd83398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01556014614c336080840160608501615a3c565b60ff161115614ca05760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b60648201526084016104da565b5f614cb16080840160608501615a3c565b60ff1611614d195760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b60648201526084016104da565b614d296080830160608401615a3c565b60028201805460ff92909216600160401b0260ff60401b19909216919091179055614d5a60608301604084016150a0565b60028201805467ffffffffffffffff19166001600160401b0392909216919091179055600a01805460ff1916905550565b61302d613d01565b60606123aa83835f614dd9565b6040516001600160a01b0384811660248301528381166044830152606482018390526109b99186918216906323b872dd90608401613ea1565b606081471015614dfe5760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614e199190615649565b5f6040518083038185875af1925050503d805f8114614e53576040519150601f19603f3d011682016040523d82523d5f602084013e614e58565b606091505b509150915061209b868383606082614e7857614e7382614ebf565b6123aa565b8151158015614e8f57506001600160a01b0384163b155b15614eb857604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b50806123aa565b805115614ecf5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614ef4906156c6565b5f825580601f10614f03575050565b601f0160209004905f5260205f209081019061213f91905b80821115614f2e575f8155600101614f1b565b5090565b801515811461213f575f80fd5b803563ffffffff81168114614f52575f80fd5b919050565b5f805f60608486031215614f69575f80fd5b833592506020840135614f7b81614f32565b9150614f8960408501614f3f565b90509250925092565b5f60208284031215614fa2575f80fd5b5035919050565b6001600160a01b038116811461213f575f80fd5b5f80828403610160811215614fd0575f80fd5b61014080821215614fdf575f80fd5b8493508301359050614ff081614fa9565b809150509250929050565b5f6020828403121561500b575f80fd5b6123aa82614f3f565b5f8060408385031215615025575f80fd5b61502e83614f3f565b946020939093013593505050565b5f806040838503121561504d575f80fd5b82356001600160401b03811115615062575f80fd5b830160808186031215615073575f80fd5b915061508160208401614f3f565b90509250929050565b80356001600160401b0381168114614f52575f80fd5b5f602082840312156150b0575f80fd5b6123aa8261508a565b5f80604083850312156150ca575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b815160e08201906006811061511057634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b036040840151166040830152606083015161514b60608401826001600160401b03169052565b50608083015161516660808401826001600160401b03169052565b5060a083015161518160a08401826001600160401b03169052565b5060c083015161519c60c08401826001600160401b03169052565b5092915050565b803561ffff81168114614f52575f80fd5b5f805f80608085870312156151c7575f80fd5b84356001600160401b038111156151dc575f80fd5b8501606081880312156151ed575f80fd5b93506151fb602086016151a3565b92506152096040860161508a565b9396929550929360600135925050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0382811682821603908082111561519c5761519c615219565b5f5b8381101561526757818101518382015260200161524f565b50505f910152565b602081525f825180602084015261528d81604085016020870161524d565b601f01601f19169190910160400192915050565b5f602082840312156152b1575f80fd5b5051919050565b5f826152d257634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b5f60208284031215615372575f80fd5b81356123aa81614fa9565b5f808335601e19843603018112615392575f80fd5b8301803591506001600160401b038211156153ab575f80fd5b6020019150600581901b36038213156153c2575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126153f1575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715615431576154316153fb565b60405290565b604051601f8201601f191681016001600160401b038111828210171561545f5761545f6153fb565b604052919050565b5f6001600160401b0382111561547f5761547f6153fb565b50601f01601f191660200190565b5f6060823603121561549d575f80fd5b6154a561540f565b8235815260206154b681850161508a565b8183015260408401356001600160401b038111156154d2575f80fd5b840136601f8201126154e2575f80fd5b80356154f56154f082615467565b615437565b8181523684838501011115615508575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526021908201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496040820152601160fa1b606082015260800190565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b6020808252602d908201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260408201526c0d8d2c696caf240d8cadccee8d609b1b606082015260800190565b5f855161560b818460208a0161524d565b80830190508581526001600160401b0360c01b8560c01b166020820152835161563b81602884016020880161524d565b016028019695505050505050565b5f82516153f181846020870161524d565b808201808211156109cf576109cf615219565b5f63ffffffff80831681810361568557615685615219565b6001019392505050565b80820281158282048414176109cf576109cf615219565b6001600160401b0381811683821601908082111561519c5761519c615219565b600181811c908216806156da57607f821691505b6020821081036156f857634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f8454615757816156c6565b806020870152604060018084165f81146157785760018114615794576157c1565b60ff19851660408a0152604084151560051b8a010195506157c1565b895f5260205f205f5b858110156157b85781548b820186015290830190880161579d565b8a016040019650505b509398975050505050505050565b8051614f5281614f32565b5f80604083850312156157eb575f80fd5b82516001600160401b0380821115615801575f80fd5b9084019060608287031215615814575f80fd5b61581c61540f565b8251815260208084015161582f81614fa9565b82820152604084015183811115615844575f80fd5b80850194505087601f850112615858575f80fd5b835192506158686154f084615467565b838152888285870101111561587b575f80fd5b61588a8483830184880161524d565b8060408401525081955061589f8188016157cf565b9450505050509250929050565b5f6001600160401b0380831681810361568557615685615219565b818103818111156109cf576109cf615219565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b038181168382160280821691908281146159d0576159d0615219565b505092915050565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b5f60208284031215615a33575f80fd5b6123aa826151a3565b5f60208284031215615a4c575f80fd5b813560ff811681146123aa575f80fd5b5f808335601e19843603018112615a71575f80fd5b8301803591506001600160401b03821115615a8a575f80fd5b6020019150368190038213156153c2575f80fd5b601f821115611cdc57805f5260205f20601f840160051c81016020851015615ac35750805b601f840160051c820191505b8181101561152f575f8155600101615acf565b81516001600160401b03811115615afb57615afb6153fb565b615b0f81615b0984546156c6565b84615a9e565b602080601f831160018114615b42575f8415615b2b5750858301515b5f19600386901b1c1916600185901b178555615b99565b5f85815260208120601f198616915b82811015615b7057888601518255948401946001909101908401615b51565b5085821015615b8d57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215615bb1575f80fd5b81516123aa81614f3256fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", + Bin: "0x608060405234801561000f575f80fd5b50604051615dac380380615dac83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615c5f8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c806366435abf116100bf578063ba3a4b9711610079578063ba3a4b971461030a578063bee0a03f1461031d578063c974d1b614610330578063d5f20ff614610338578063df93d8de14610358578063eb0acb8914610362575f80fd5b806366435abf1461028557806376f786211461029857806398f3e2b4146102ab5780639e1bc4ef146102be578063a3a65e48146102d1578063b771b3bc146102e4575f80fd5b8063330a0a3a11610110578063330a0a3a1461020a57806335455ded1461021d578063467ef06f146102395780635297fae61461024c57806361e2f4901461025f5780636206585614610272575f80fd5b80630118acc41461014c5780630322ed98146101615780630cdd098514610174578063151d30d1146101c55780632e2194d8146101df575b5f80fd5b61015f61015a366004614f4d565b610375565b005b61015f61016f366004614f88565b610806565b6101b2610182366004614f88565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b6101cd600a81565b60405160ff90911681526020016101bc565b6101f26101ed366004614f88565b6109bf565b6040516001600160401b0390911681526020016101bc565b61015f610218366004614fb3565b6109d5565b61022661271081565b60405161ffff90911681526020016101bc565b61015f610247366004614ff1565b610ab4565b61015f61025a36600461500a565b610b07565b61015f61026d366004615032565b610cdc565b6101b2610280366004615096565b611428565b6101f2610293366004614f88565b611441565b61015f6102a6366004614f4d565b611455565b61015f6102b936600461500a565b611536565b6101b26102cc3660046150af565b611763565b61015f6102df366004614ff1565b61178f565b6102f26005600160991b0181565b6040516001600160a01b0390911681526020016101bc565b61015f610318366004614f88565b611947565b61015f61032b366004614f88565b611bcd565b6101cd601481565b61034b610346366004614f88565b611ce1565b6040516101bc91906150e3565b6101f26202a30081565b6101b26103703660046151aa565b611dd4565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408120600101545f80516020615bb38339815191529184156103c7576103c48285611e09565b90505b5f868152600684016020526040808220815161010081019092528054829060ff1660048111156103f9576103f96150cf565b600481111561040a5761040a6150cf565b8152815461010090046001600160a01b03166020820152600182015460408201526002808301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115610491576104916150cf565b146104e35760405162461bcd60e51b815260206004820152602a60248201525f80516020615bd38339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208101516001600160a01b031633146105485760405162461bcd60e51b815260206004820152603360248201525f80516020615bd38339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b60648201526084016104da565b5f610552846120a5565b600383526001600160401b0342811660a0850152811660e08401525f8981526006870160205260409020835181549293508492829060ff1916600183600481111561059f5761059f6150cf565b021790555060208201518154610100600160a81b0319166101006001600160a01b0390921691909102178155604082015160018201556060820151600282018054608085015160a086015160c08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560e0909201516003909101805467ffffffffffffffff1916919092161790555f61067185611ce1565b905082606001516001600160401b031681608001516001600160401b0316116106e85760405162461bcd60e51b815260206004820152602360248201527f506f5356616c696461746f724d616e616765723a20496e76616c69642077656960448201526219da1d60ea1b60648201526084016104da565b6002815160058111156106fd576106fd6150cf565b0361070f5761070f8360600151612135565b5f836060015182608001516107249190615223565b90506107308682612142565b5f6005600160991b0163ee5b48eb61074989878661218a565b6040518263ffffffff1660e01b81526004016107659190615265565b6020604051808303815f875af1158015610781573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a59190615297565b604080516001600160401b03858116825242602083015291810183905291925085169088908d907f5318ab4d7cdf77056db2db5b539a08fe7d1a63d6885ecee8236a0dbda2843b4e9060600160405180910390a45050505050505050505050565b5f8181525f80516020615c338339815191526020526040808220815160e0810190925280545f80516020615bf383398151915293929190829060ff166005811115610853576108536150cf565b6005811115610864576108646150cf565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c090910152909150815160058111156108d3576108d36150cf565b146109385760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b60648201526084016104da565b6005600160991b016001600160a01b031663ee5b48eb61095d8584606001515f61218a565b6040518263ffffffff1660e01b81526004016109799190615265565b6020604051808303815f875af1158015610995573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b99190615297565b50505050565b5f6109cf64e8d4a51000836152ae565b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610a1e575080546001600160401b03808416911610155b15610a3c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610a6784846123b1565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615bb38339815191525f80610acd846123cb565b6040808201515f8481526005880160205291909120549294509092506109b9916001600160401b03909116906001600160a01b0316612743565b5f80516020615bb38339815191525f610b1f84612779565b90505f80610b308360400151612953565b50915091505f610b3f83611ce1565b9050816001600160401b031681606001516001600160401b03161015610b775760405162461bcd60e51b81526004016104da906152cd565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610bbc5760405162461bcd60e51b81526004016104da9061530f565b60015f87815260068701602052604090205460ff166004811115610be257610be26150cf565b14610c4b5760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b60648201526084016104da565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f80516020615bf38339815191529060ff1615610d795760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b60648201526084016104da565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de09190615297565b836020013514610e425760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b60648201526084016104da565b30610e536060850160408601615358565b6001600160a01b031614610ec55760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b60648201526084016104da565b5f610ed36060850185615373565b905011610f325760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a206e6f20696e697469616c2076616c604482015266696461746f727360c81b60648201526084016104da565b5f610f406060850185615373565b91505063ffffffff8110610fac5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20746f6f206d616e7920696e69746960448201526c616c2076616c696461746f727360981b60648201526084016104da565b5f843560208601356014610fc66060890160408a01615358565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff161015611338575f6110466060890189615373565b8363ffffffff1681811061105c5761105c6153bf565b905060200281019061106e91906153d3565b61107790615483565b8051909150806110995760405162461bcd60e51b81526004016104da9061551a565b5f818152600988016020526040902054156110c65760405162461bcd60e51b81526004016104da9061555b565b8160400151516030146110eb5760405162461bcd60e51b81526004016104da906155a3565b84825f01518360200151846040015160405160200161110d94939291906155f0565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f9160029161115b919061563f565b602060405180830381855afa158015611176573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906111999190615297565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff19166001836005811115611225576112256150cf565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff1916928416929092179091558401516112d8911686615650565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a3505050808061133090615663565b91505061102a565b50600584018190555f61134a86612779565b90505f61135a8260400151612b8e565b90508060028560405161136d919061563f565b602060405180830381855afa158015611388573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906113ab9190615297565b1461140f5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b60648201526084016104da565b505050600a909201805460ff1916600117905550505050565b5f6109cf6001600160401b03831664e8d4a51000615685565b5f61144b82611ce1565b6080015192915050565b5f80516020615bb38339815191525f61146d85611ce1565b5f86815260058401602052604090205460a08201519192506114a091600160b01b9091046001600160401b03169061569c565b6001600160401b03164210156115145760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b60648201526084016104da565b8315611526576115248584611e09565b505b61152f85612d00565b5050505050565b61153e612ff6565b5f80516020615bb38339815191525f61155684612779565b90505f806115678360400151612953565b50915091505f61157683611ce1565b9050816001600160401b031681606001516001600160401b031610156115ae5760405162461bcd60e51b81526004016104da906152cd565b5f8681526006860160205260409020600301546001600160401b03808416911611156115ec5760405162461bcd60e51b81526004016104da9061530f565b60035f87815260068701602052604090205460ff166004811115611612576116126150cf565b146116665760405162461bcd60e51b815260206004820152603160248201525f80516020615bd38339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b60648201526084016104da565b5f868152600686016020908152604091829020805460ff19166004908117808355845161010080820187529281529190046001600160a01b031692810183905260018201549381019390935260028101546001600160401b0380821660608601819052600160401b830482166080870152600160801b8304821660a0870152600160c01b909204811660c086015260039092015490911660e084015261170b91612743565b826001600160401b031684887f52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab60405160405180910390a450505050505061175f60015f80516020615c1383398151915255565b5050565b5f61176c612ff6565b611777833384613040565b90506109cf60015f80516020615c1383398151915255565b5f80516020615bf38339815191525f6117a783612779565b90505f806117b883604001516134b9565b915091508061181a5760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b60648201526084016104da565b5f82815260078501602052604081208054611834906156bc565b9050118015611866575060015f83815260088601602052604090205460ff166005811115611864576118646150cf565b145b6118825760405162461bcd60e51b81526004016104da906156f4565b5f828152600785016020526040812061189a91614ede565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615bb383398151915293929190829060ff1660048111156119a8576119a86150cf565b60048111156119b9576119b96150cf565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611a4057611a406150cf565b1480611a5e5750600381516004811115611a5c57611a5c6150cf565b145b611ab25760405162461bcd60e51b815260206004820152603260248201525f80516020615bd3833981519152604482015271737461747573206e6f742070656e64696e6760701b60648201526084016104da565b5f611ac08260400151611ce1565b905080606001516001600160401b03165f03611b445760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e2049440060648201526084016104da565b6005600160991b016001600160a01b031663ee5b48eb611b7184604001518460600151856080015161218a565b6040518263ffffffff1660e01b8152600401611b8d9190615265565b6020604051808303815f875af1158015611ba9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152f9190615297565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f80516020615bf3833981519152929190611c15906156bc565b9050118015611c47575060015f83815260088301602052604090205460ff166005811115611c4557611c456150cf565b145b611c635760405162461bcd60e51b81526004016104da906156f4565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611c9c919060040161573b565b6020604051808303815f875af1158015611cb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cdc9190615297565b505050565b6040805160e080820183525f8083526020808401829052838501829052606084018290526080840182905260a0840182905260c084018290528582525f80516020615c3383398151915290528390208351918201909352825491925f80516020615bf383398151915292829060ff166005811115611d6157611d616150cf565b6005811115611d7257611d726150cf565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b5f611ddd612ff6565b611de98585858561365a565b9050611e0160015f80516020615c1383398151915255565b949350505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611e54573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e7b91908101906157d0565b9150915080611ede5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104da565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f459190615297565b825114611fa95760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b60648201526084016104da565b60208201516001600160a01b03161561201f5760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104da565b5f8061202e84604001516138cf565b9150915081871461209b5760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b60648201526084016104da565b9695505050505050565b5f8181525f80516020615c338339815191526020526040812060020180545f80516020615bf383398151915291600160401b9091046001600160401b03169060086120ef836158a2565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b61213f815f613aa7565b50565b5f9182525f80516020615c33833981519152602052604090912060020180546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b6002811015612203576121c38160016158bd565b6121ce906008615685565b5081515f908390839081106121e5576121e56153bf565b60200101906001600160f81b03191690815f1a9053506001016121af565b505f5b600481101561226e5761221a8160036158bd565b612225906008615685565b600263ffffffff16901c60f81b828260026122409190615650565b81518110612250576122506153bf565b60200101906001600160f81b03191690815f1a905350600101612206565b505f5b60208110156122d05761228581601f6158bd565b612290906008615685565b86901c60f81b826122a2836006615650565b815181106122b2576122b26153bf565b60200101906001600160f81b03191690815f1a905350600101612271565b505f5b600881101561233b576122e78160076158bd565b6122f2906008615685565b6001600160401b038616901c60f81b8261230d836026615650565b8151811061231d5761231d6153bf565b60200101906001600160f81b03191690815f1a9053506001016122d3565b505f5b60088110156123a6576123528160076158bd565b61235d906008615685565b6001600160401b038516901c60f81b8261237883602e615650565b81518110612388576123886153bf565b60200101906001600160f81b03191690815f1a90535060010161233e565b5090505b9392505050565b6123b9613d01565b6123c282613d4c565b61175f81613dc0565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290525f80516020615bf38339815191525f61241a85612779565b90505f8061242b83604001516134b9565b9150915080156124905760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b60648201526084016104da565b5f828152600885016020526040808220815160e081019092528054829060ff1660058111156124c1576124c16150cf565b60058111156124d2576124d26150cf565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f9082516005811115612543576125436150cf565b1480612561575060018251600581111561255f5761255f6150cf565b145b6125c05760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b60648201526084016104da565b6003825160058111156125d5576125d56150cf565b036125e2575060046125e6565b5060055b6020808301515f9081526009880190915260408120558181600581111561260f5761260f6150cf565b90816005811115612622576126226150cf565b9052505f84815260088701602052604090208251815484929190829060ff19166001836005811115612656576126566150cf565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558151600581111561270a5761270a6150cf565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b7f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab005461175f906001600160a01b03168284613e74565b60408051606080820183525f8083526020830181905292820152905f80516020615bf38339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156127ee573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261281591908101906157d0565b91509150806128755760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20496e76616c69642077617270206d60448201526565737361676560d01b60648201526084016104da565b82548251146128d85760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b60648201526084016104da565b60208201516001600160a01b03161561294b5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b60648201526084016104da565b509392505050565b5f805f83516036146129775760405162461bcd60e51b81526004016104da906158d0565b5f805b60028110156129c65761298e8160016158bd565b612999906008615685565b61ffff168682815181106129af576129af6153bf565b016020015160f81c901b919091179060010161297a565b5061ffff8116156129e95760405162461bcd60e51b81526004016104da90615919565b5f805b6004811015612a4457612a008160036158bd565b612a0b906008615685565b63ffffffff1687612a1d836002615650565b81518110612a2d57612a2d6153bf565b016020015160f81c901b91909117906001016129ec565b5063ffffffff8116600414612a6b5760405162461bcd60e51b81526004016104da9061595c565b5f805b6020811015612ac057612a8281601f6158bd565b612a8d906008615685565b88612a99836006615650565b81518110612aa957612aa96153bf565b016020015160f81c901b9190911790600101612a6e565b505f805b6008811015612b1f57612ad88160076158bd565b612ae3906008615685565b6001600160401b031689612af8836026615650565b81518110612b0857612b086153bf565b016020015160f81c901b9190911790600101612ac4565b505f805b6008811015612b7e57612b378160076158bd565b612b42906008615685565b6001600160401b03168a612b5783602e615650565b81518110612b6757612b676153bf565b016020015160f81c901b9190911790600101612b23565b5091989097509095509350505050565b5f8151602614612bb05760405162461bcd60e51b81526004016104da906158d0565b5f805b6002811015612bff57612bc78160016158bd565b612bd2906008615685565b61ffff16848281518110612be857612be86153bf565b016020015160f81c901b9190911790600101612bb3565b5061ffff811615612c225760405162461bcd60e51b81526004016104da90615919565b5f805b6004811015612c7d57612c398160036158bd565b612c44906008615685565b63ffffffff1685612c56836002615650565b81518110612c6657612c666153bf565b016020015160f81c901b9190911790600101612c25565b5063ffffffff811615612ca25760405162461bcd60e51b81526004016104da9061595c565b5f805b6020811015612cf757612cb981601f6158bd565b612cc4906008615685565b86612cd0836006615650565b81518110612ce057612ce06153bf565b016020015160f81c901b9190911790600101612ca5565b50949350505050565b5f8181525f80516020615c338339815191526020526040808220815160e0810190925280545f80516020615bf383398151915293929190829060ff166005811115612d4d57612d4d6150cf565b6005811115612d5e57612d5e6150cf565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c09091015290915081516005811115612dd057612dd06150cf565b14612e2c5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b60648201526084016104da565b612e398160800151612135565b60038152426001600160401b031660c08201525f83815260088301602052604090208151815483929190829060ff19166001836005811115612e7d57612e7d6150cf565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f612f3284612f2c816120a5565b5f61218a565b60405163ee5b48eb60e01b81529091505f906005600160991b019063ee5b48eb90612f61908590600401615265565b6020604051808303815f875af1158015612f7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fa19190615297565b6080840151604080516001600160401b039092168252426020830152919250829187917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a35050505050565b5f80516020615c1383398151915280546001190161302757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60015f80516020615c1383398151915255565b5f5f80516020615bb38339815191528161305c6101ed85613ed3565b90505f61306887611ce1565b905060028151600581111561307f5761307f6150cf565b146130de5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b60648201526084016104da565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b03166131715760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b60648201526084016104da565b61317a82613f09565b5f82826080015161318b919061569c565b600485015460408401519192506131ad916001600160401b03909116906159a3565b6001600160401b0316816001600160401b0316111561322c5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b60648201526084016104da565b6132368882612142565b5f613240896120a5565b90505f898260405160200161326c92919091825260c01b6001600160c01b031916602082015260280190565b6040516020818303038152906040528051906020012090505f6005600160991b016001600160a01b031663ee5b48eb6132a68d868861218a565b6040518263ffffffff1660e01b81526004016132c29190615265565b6020604051808303815f875af11580156132de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133029190615297565b60408051610100810190915290915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905285835260068b01909152902081518154829060ff1916600183600481111561338a5761338a6150cf565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101849052908c16918d9185917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a4509998505050505050505050565b5f8082516027146134dc5760405162461bcd60e51b81526004016104da906158d0565b5f805b600281101561352b576134f38160016158bd565b6134fe906008615685565b61ffff16858281518110613514576135146153bf565b016020015160f81c901b91909117906001016134df565b5061ffff81161561354e5760405162461bcd60e51b81526004016104da90615919565b5f805b60048110156135a9576135658160036158bd565b613570906008615685565b63ffffffff1686613582836002615650565b81518110613592576135926153bf565b016020015160f81c901b9190911790600101613551565b5063ffffffff81166003146135d05760405162461bcd60e51b81526004016104da9061595c565b5f805b6020811015613625576135e781601f6158bd565b6135f2906008615685565b876135fe836006615650565b8151811061360e5761360e6153bf565b016020015160f81c901b91909117906001016135d3565b505f8660268151811061363a5761363a6153bf565b016020015191976001600160f81b03199092161515965090945050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f80516020615bb38339815191529061ffff8616108015906136a6575061271061ffff861611155b6136c25760405162461bcd60e51b81526004016104da906159ce565b60028101546001600160401b03908116908516101561373b5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b60648201526084016104da565b805483101561379e5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b60648201526084016104da565b80600101548311156138055760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b60648201526084016104da565b5f61380f84613ed3565b90505f61381b826109bf565b90505f6138288983613f14565b9050604051806060016040528061383c3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b5f808251602e146138f25760405162461bcd60e51b81526004016104da906158d0565b5f805b6002811015613941576139098160016158bd565b613914906008615685565b61ffff1685828151811061392a5761392a6153bf565b016020015160f81c901b91909117906001016138f5565b5061ffff8116156139645760405162461bcd60e51b81526004016104da90615919565b5f805b60048110156139bf5761397b8160036158bd565b613986906008615685565b63ffffffff1686613998836002615650565b815181106139a8576139a86153bf565b016020015160f81c901b9190911790600101613967565b5063ffffffff81166005146139e65760405162461bcd60e51b81526004016104da9061595c565b5f805b6020811015613a3b576139fd81601f6158bd565b613a08906008615685565b87613a14836006615650565b81518110613a2457613a246153bf565b016020015160f81c901b91909117906001016139e9565b505f805b6008811015613a9a57613a538160076158bd565b613a5e906008615685565b6001600160401b031688613a73836026615650565b81518110613a8357613a836153bf565b016020015160f81c901b9190911790600101613a3f565b5090969095509350505050565b604080516080810182527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb045460208301527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0554928201929092527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06546001600160401b031660608201525f80516020615bf3833981519152914291901580613b8d575060028301548151613b89916001600160401b031690615650565b8210155b15613bb3576001600160401b038516606082015281815260408101516020820152613bd2565b8481606001818151613bc5919061569c565b6001600160401b03169052505b6060810151613be29060646159a3565b602082015160028501546001600160401b039290921691613c0d9190600160401b900460ff16615685565b1015613c715760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b60648201526084016104da565b8315613c9a57846001600160401b031681604001818151613c929190615650565b905250613cb9565b846001600160401b031681604001818151613cb591906158bd565b9052505b805160038401556020810151600484015560408101516005840155606001516006909201805467ffffffffffffffff19166001600160401b0390931692909217909155505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613d4a57604051631afcd79f60e31b815260040160405180910390fd5b565b613d54613d01565b613d5d816143f8565b613d65614411565b61213f608082013560a0830135613d8260e0850160c08601615096565b613d93610100860160e08701615a19565b61ffff16613da961012087016101008801615a32565b613dbb61014088016101208901615358565b614421565b613dc8613d01565b7f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab006001600160a01b038216613e545760405162461bcd60e51b815260206004820152602c60248201527f4552433230546f6b656e5374616b696e674d616e616765723a207a65726f207460448201526b6f6b656e206164647265737360a01b60648201526084016104da565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b03838116602483015260448201839052611cdc91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614665565b5f6109cf827f6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00546001600160a01b0316906146c6565b61213f816001613aa7565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff16613f9f5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b60648201526084016104da565b5f80516020615bf383398151915242613fbe6040860160208701615096565b6001600160401b0316116140305760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b60648201526084016104da565b6140406040850160208601615096565b6001600160401b03166140566202a30042615650565b116140c95760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e2066757475726500000000000000000060648201526084016104da565b83356140e75760405162461bcd60e51b81526004016104da9061551a565b83355f908152600982016020526040902054156141165760405162461bcd60e51b81526004016104da9061555b565b6141236040850185615a52565b90506030146141445760405162461bcd60e51b81526004016104da906155a3565b61414d83613f09565b5f806141e76040518060a0016040528085600101548152602001885f01358152602001876001600160401b031681526020018860200160208101906141929190615096565b6001600160401b031681526020016141ad60408a018a615a52565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250614828565b5f828152600786016020526040902091935091506142058282615ad8565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90614232908590600401615265565b6020604051808303815f875af115801561424e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142729190615297565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff191660018360058111156142ea576142ea6150cf565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b916143ca918e01908e01615096565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b614400613d01565b614408614bd7565b61213f81614bdf565b614419613d01565b613d4a614d81565b614429613d01565b5f80516020615bb3833981519152836144955760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b60648201526084016104da565b6127108411156144b75760405162461bcd60e51b81526004016104da906159ce565b8587111561451f5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b60648201526084016104da565b5f8360ff161161458c5760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b60648201526084016104da565b600a60ff841611156145fe5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b60648201526084016104da565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b5f6146796001600160a01b03841683614d89565b905080515f1415801561469d57508080602001905181019061469b9190615b97565b155b15611cdc57604051635274afe760e01b81526001600160a01b03841660048201526024016104da565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa15801561470c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147309190615297565b90506147476001600160a01b038516333086614d96565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa15801561478b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147af9190615297565b90508181116148155760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104da565b61481f82826158bd565b95945050505050565b5f60608260800151516030146148925760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b60648201526084016104da565b60408051608680825260c082019092525f916020820181803683370190505090505f5b6002811015614909576148c98160016158bd565b6148d4906008615685565b5081515f908390839081106148eb576148eb6153bf565b60200101906001600160f81b03191690815f1a9053506001016148b5565b505f5b6004811015614971576149208160036158bd565b61492b906008615685565b600160ff919091161c60f81b82614943836002615650565b81518110614953576149536153bf565b60200101906001600160f81b03191690815f1a90535060010161490c565b505f5b60208110156149ce5784518160208110614990576149906153bf565b1a60f81b826149a0836006615650565b815181106149b0576149b06153bf565b60200101906001600160f81b03191690815f1a905350600101614974565b505f5b6020811015614a2e57846020015181602081106149f0576149f06153bf565b1a60f81b82614a00836026615650565b81518110614a1057614a106153bf565b60200101906001600160f81b03191690815f1a9053506001016149d1565b505f5b6008811015614aa257614a458160076158bd565b614a50906008615685565b60ff1685604001516001600160401b0316901c60f81b82826046614a749190615650565b81518110614a8457614a846153bf565b60200101906001600160f81b03191690815f1a905350600101614a31565b505f5b6030811015614b0d5784608001518181518110614ac457614ac46153bf565b01602001516001600160f81b03191682614adf83604e615650565b81518110614aef57614aef6153bf565b60200101906001600160f81b03191690815f1a905350600101614aa5565b505f5b6008811015614b7f57614b248160076158bd565b614b2f906008615685565b60608601516001600160401b0390811691161c60f81b82614b5183607e615650565b81518110614b6157614b616153bf565b60200101906001600160f81b03191690815f1a905350600101614b10565b50600281604051614b90919061563f565b602060405180830381855afa158015614bab573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614bce9190615297565b94909350915050565b613d4a613d01565b614be7613d01565b80355f80516020615bf383398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01556014614c336080840160608501615a32565b60ff161115614ca05760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b60648201526084016104da565b5f614cb16080840160608501615a32565b60ff1611614d195760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b60648201526084016104da565b614d296080830160608401615a32565b60028201805460ff92909216600160401b0260ff60401b19909216919091179055614d5a6060830160408401615096565b600291909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b61302d613d01565b60606123aa83835f614dcf565b6040516001600160a01b0384811660248301528381166044830152606482018390526109b99186918216906323b872dd90608401613ea1565b606081471015614df45760405163cd78605960e01b81523060048201526024016104da565b5f80856001600160a01b03168486604051614e0f919061563f565b5f6040518083038185875af1925050503d805f8114614e49576040519150601f19603f3d011682016040523d82523d5f602084013e614e4e565b606091505b509150915061209b868383606082614e6e57614e6982614eb5565b6123aa565b8151158015614e8557506001600160a01b0384163b155b15614eae57604051639996b31560e01b81526001600160a01b03851660048201526024016104da565b50806123aa565b805115614ec55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614eea906156bc565b5f825580601f10614ef9575050565b601f0160209004905f5260205f209081019061213f91905b80821115614f24575f8155600101614f11565b5090565b801515811461213f575f80fd5b803563ffffffff81168114614f48575f80fd5b919050565b5f805f60608486031215614f5f575f80fd5b833592506020840135614f7181614f28565b9150614f7f60408501614f35565b90509250925092565b5f60208284031215614f98575f80fd5b5035919050565b6001600160a01b038116811461213f575f80fd5b5f80828403610160811215614fc6575f80fd5b61014080821215614fd5575f80fd5b8493508301359050614fe681614f9f565b809150509250929050565b5f60208284031215615001575f80fd5b6123aa82614f35565b5f806040838503121561501b575f80fd5b61502483614f35565b946020939093013593505050565b5f8060408385031215615043575f80fd5b82356001600160401b03811115615058575f80fd5b830160808186031215615069575f80fd5b915061507760208401614f35565b90509250929050565b80356001600160401b0381168114614f48575f80fd5b5f602082840312156150a6575f80fd5b6123aa82615080565b5f80604083850312156150c0575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b815160e08201906006811061510657634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b036040840151166040830152606083015161514160608401826001600160401b03169052565b50608083015161515c60808401826001600160401b03169052565b5060a083015161517760a08401826001600160401b03169052565b5060c083015161519260c08401826001600160401b03169052565b5092915050565b803561ffff81168114614f48575f80fd5b5f805f80608085870312156151bd575f80fd5b84356001600160401b038111156151d2575f80fd5b8501606081880312156151e3575f80fd5b93506151f160208601615199565b92506151ff60408601615080565b9396929550929360600135925050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038281168282160390808211156151925761519261520f565b5f5b8381101561525d578181015183820152602001615245565b50505f910152565b602081525f8251806020840152615283816040850160208701615243565b601f01601f19169190910160400192915050565b5f602082840312156152a7575f80fd5b5051919050565b5f826152c857634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b5f60208284031215615368575f80fd5b81356123aa81614f9f565b5f808335601e19843603018112615388575f80fd5b8301803591506001600160401b038211156153a1575f80fd5b6020019150600581901b36038213156153b8575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126153e7575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715615427576154276153f1565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615455576154556153f1565b604052919050565b5f6001600160401b03821115615475576154756153f1565b50601f01601f191660200190565b5f60608236031215615493575f80fd5b61549b615405565b8235815260206154ac818501615080565b8183015260408401356001600160401b038111156154c8575f80fd5b840136601f8201126154d8575f80fd5b80356154eb6154e68261545d565b61542d565b81815236848385010111156154fe575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526021908201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496040820152601160fa1b606082015260800190565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b6020808252602d908201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260408201526c0d8d2c696caf240d8cadccee8d609b1b606082015260800190565b5f8551615601818460208a01615243565b80830190508581526001600160401b0360c01b8560c01b1660208201528351615631816028840160208801615243565b016028019695505050505050565b5f82516153e7818460208701615243565b808201808211156109cf576109cf61520f565b5f63ffffffff80831681810361567b5761567b61520f565b6001019392505050565b80820281158282048414176109cf576109cf61520f565b6001600160401b038181168382160190808211156151925761519261520f565b600181811c908216806156d057607f821691505b6020821081036156ee57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f845461574d816156bc565b806020870152604060018084165f811461576e576001811461578a576157b7565b60ff19851660408a0152604084151560051b8a010195506157b7565b895f5260205f205f5b858110156157ae5781548b8201860152908301908801615793565b8a016040019650505b509398975050505050505050565b8051614f4881614f28565b5f80604083850312156157e1575f80fd5b82516001600160401b03808211156157f7575f80fd5b908401906060828703121561580a575f80fd5b615812615405565b8251815260208084015161582581614f9f565b8282015260408401518381111561583a575f80fd5b80850194505087601f85011261584e575f80fd5b8351925061585e6154e68461545d565b8381528882858701011115615871575f80fd5b61588084838301848801615243565b806040840152508195506158958188016157c5565b9450505050509250929050565b5f6001600160401b0380831681810361567b5761567b61520f565b818103818111156109cf576109cf61520f565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b038181168382160280821691908281146159c6576159c661520f565b505092915050565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b5f60208284031215615a29575f80fd5b6123aa82615199565b5f60208284031215615a42575f80fd5b813560ff811681146123aa575f80fd5b5f808335601e19843603018112615a67575f80fd5b8301803591506001600160401b03821115615a80575f80fd5b6020019150368190038213156153b8575f80fd5b601f821115611cdc57805f5260205f20601f840160051c81016020851015615ab95750805b601f840160051c820191505b8181101561152f575f8155600101615ac5565b81516001600160401b03811115615af157615af16153f1565b615b0581615aff84546156bc565b84615a94565b602080601f831160018114615b38575f8415615b215750858301515b5f19600386901b1c1916600185901b178555615b8f565b5f85815260208120601f198616915b82811015615b6657888601518255948401946001909101908401615b47565b5085821015615b8357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215615ba7575f80fd5b81516123aa81614f2856fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/staking/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/staking/NativeTokenStakingManager/NativeTokenStakingManager.go index 0862fa0d2..94f16f49d 100644 --- a/abi-bindings/go/staking/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/staking/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -84,7 +84,7 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"pChainBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"convertSubnetTxID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615a17380380615a1783398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158ca8061014d5f395ff3fe60806040526004361061013c575f3560e01c806362065856116100b3578063ba3a4b971161006d578063ba3a4b97146103be578063bee0a03f146103dd578063c599e24f146103fc578063c974d1b61461040f578063d5f20ff614610423578063df93d8de1461044f575f80fd5b806362065856146102f157806366435abf1461031057806376f786211461032f57806398f3e2b41461034e578063a3a65e481461036d578063b771b3bc1461038c575f80fd5b80632e2194d8116101045780632e2194d81461022257806335455ded1461025957806340034a9314610281578063467ef06f146102945780635297fae6146102b357806361e2f490146102d2575f80fd5b80630118acc4146101405780630322ed98146101615780630cdd098514610180578063151d30d1146101dd5780631f7a9d8f14610203575b5f80fd5b34801561014b575f80fd5b5061015f61015a366004614c31565b610465565b005b34801561016c575f80fd5b5061015f61017b366004614c6c565b6108f6565b34801561018b575f80fd5b506101ca61019a366004614c6c565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b3480156101e8575f80fd5b506101f1600a81565b60405160ff90911681526020016101d4565b34801561020e575f80fd5b5061015f61021d366004614c83565b610aaf565b34801561022d575f80fd5b5061024161023c366004614c6c565b610b8c565b6040516001600160401b0390911681526020016101d4565b348015610264575f80fd5b5061026e61271081565b60405161ffff90911681526020016101d4565b6101ca61028f366004614cc1565b610ba2565b34801561029f575f80fd5b5061015f6102ae366004614d15565b610bd6565b3480156102be575f80fd5b5061015f6102cd366004614d2e565b610c29565b3480156102dd575f80fd5b5061015f6102ec366004614d56565b610dfe565b3480156102fc575f80fd5b506101ca61030b366004614da4565b61154a565b34801561031b575f80fd5b5061024161032a366004614c6c565b611563565b34801561033a575f80fd5b5061015f610349366004614c31565b611577565b348015610359575f80fd5b5061015f610368366004614d2e565b611658565b348015610378575f80fd5b5061015f610387366004614d15565b611885565b348015610397575f80fd5b506103a66005600160991b0181565b6040516001600160a01b0390911681526020016101d4565b3480156103c9575f80fd5b5061015f6103d8366004614c6c565b611a3d565b3480156103e8575f80fd5b5061015f6103f7366004614c6c565b611cc3565b6101ca61040a366004614c6c565b611dd7565b34801561041a575f80fd5b506101f1601481565b34801561042e575f80fd5b5061044261043d366004614c6c565b611e08565b6040516101d49190614dd1565b34801561045a575f80fd5b506102416202a30081565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408120600101545f8051602061581e8339815191529184156104b7576104b48285611efb565b90505b5f868152600684016020526040808220815161010081019092528054829060ff1660048111156104e9576104e9614dbd565b60048111156104fa576104fa614dbd565b8152815461010090046001600160a01b03166020820152600182015460408201526002808301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e0909101529091508151600481111561058157610581614dbd565b146105d35760405162461bcd60e51b815260206004820152602a60248201525f8051602061583e8339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208101516001600160a01b031633146106385760405162461bcd60e51b815260206004820152603360248201525f8051602061583e8339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b60648201526084016105ca565b5f61064284612197565b600383526001600160401b0342811660a0850152811660e08401525f8981526006870160205260409020835181549293508492829060ff1916600183600481111561068f5761068f614dbd565b021790555060208201518154610100600160a81b0319166101006001600160a01b0390921691909102178155604082015160018201556060820151600282018054608085015160a086015160c08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560e0909201516003909101805467ffffffffffffffff1916919092161790555f61076185611e08565b905082606001516001600160401b031681608001516001600160401b0316116107d85760405162461bcd60e51b815260206004820152602360248201527f506f5356616c696461746f724d616e616765723a20496e76616c69642077656960448201526219da1d60ea1b60648201526084016105ca565b6002815160058111156107ed576107ed614dbd565b036107ff576107ff8360600151612227565b5f836060015182608001516108149190614e9b565b90506108208682612234565b5f6005600160991b0163ee5b48eb61083989878661227c565b6040518263ffffffff1660e01b81526004016108559190614edd565b6020604051808303815f875af1158015610871573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108959190614f0f565b604080516001600160401b03858116825242602083015291810183905291925085169088908d907f5318ab4d7cdf77056db2db5b539a08fe7d1a63d6885ecee8236a0dbda2843b4e9060600160405180910390a45050505050505050505050565b5f8181525f8051602061589e8339815191526020526040808220815160e0810190925280545f8051602061585e83398151915293929190829060ff16600581111561094357610943614dbd565b600581111561095457610954614dbd565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c090910152909150815160058111156109c3576109c3614dbd565b14610a285760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b60648201526084016105ca565b6005600160991b016001600160a01b031663ee5b48eb610a4d8584606001515f61227c565b6040518263ffffffff1660e01b8152600401610a699190614edd565b6020604051808303815f875af1158015610a85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa99190614f0f565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610af8575080546001600160401b03808416911610155b15610b165760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610b40836124a1565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f610b9c64e8d4a5100083614f26565b92915050565b5f610bab6124b2565b610bb7848484346124e9565b9050610bcf60015f8051602061587e83398151915255565b9392505050565b5f8051602061581e8339815191525f80610bef84612766565b6040808201515f848152600588016020529190912054929450909250610aa9916001600160401b03909116906001600160a01b0316612ade565b5f8051602061581e8339815191525f610c4184612af1565b90505f80610c528360400151612ccb565b50915091505f610c6183611e08565b9050816001600160401b031681606001516001600160401b03161015610c995760405162461bcd60e51b81526004016105ca90614f45565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610cde5760405162461bcd60e51b81526004016105ca90614f87565b60015f87815260068701602052604090205460ff166004811115610d0457610d04614dbd565b14610d6d5760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b60648201526084016105ca565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f8051602061585e8339815191529060ff1615610e9b5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b60648201526084016105ca565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f029190614f0f565b836020013514610f645760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b60648201526084016105ca565b30610f756060850160408601614fe4565b6001600160a01b031614610fe75760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b60648201526084016105ca565b5f610ff56060850185614fff565b9050116110545760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a206e6f20696e697469616c2076616c604482015266696461746f727360c81b60648201526084016105ca565b5f6110626060850185614fff565b91505063ffffffff81106110ce5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20746f6f206d616e7920696e69746960448201526c616c2076616c696461746f727360981b60648201526084016105ca565b5f8435602086013560146110e86060890160408a01614fe4565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff16101561145a575f6111686060890189614fff565b8363ffffffff1681811061117e5761117e61504b565b9050602002810190611190919061505f565b6111999061510f565b8051909150806111bb5760405162461bcd60e51b81526004016105ca906151a6565b5f818152600988016020526040902054156111e85760405162461bcd60e51b81526004016105ca906151e7565b81604001515160301461120d5760405162461bcd60e51b81526004016105ca9061522f565b84825f01518360200151846040015160405160200161122f949392919061527c565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f9160029161127d91906152cb565b602060405180830381855afa158015611298573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906112bb9190614f0f565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff1916600183600581111561134757611347614dbd565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff1916928416929092179091558401516113fa9116866152dc565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a35050508080611452906152ef565b91505061114c565b50600584018190555f61146c86612af1565b90505f61147c8260400151612f06565b90508060028560405161148f91906152cb565b602060405180830381855afa1580156114aa573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906114cd9190614f0f565b146115315760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b60648201526084016105ca565b505050600a909201805460ff1916600117905550505050565b5f610b9c6001600160401b03831664e8d4a51000615311565b5f61156d82611e08565b6080015192915050565b5f8051602061581e8339815191525f61158f85611e08565b5f86815260058401602052604090205460a08201519192506115c291600160b01b9091046001600160401b031690615328565b6001600160401b03164210156116365760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b60648201526084016105ca565b8315611648576116468584611efb565b505b6116518561306f565b5050505050565b6116606124b2565b5f8051602061581e8339815191525f61167884612af1565b90505f806116898360400151612ccb565b50915091505f61169883611e08565b9050816001600160401b031681606001516001600160401b031610156116d05760405162461bcd60e51b81526004016105ca90614f45565b5f8681526006860160205260409020600301546001600160401b038084169116111561170e5760405162461bcd60e51b81526004016105ca90614f87565b60035f87815260068701602052604090205460ff16600481111561173457611734614dbd565b146117885760405162461bcd60e51b815260206004820152603160248201525f8051602061583e8339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b60648201526084016105ca565b5f868152600686016020908152604091829020805460ff19166004908117808355845161010080820187529281529190046001600160a01b031692810183905260018201549381019390935260028101546001600160401b0380821660608601819052600160401b830482166080870152600160801b8304821660a0870152600160c01b909204811660c086015260039092015490911660e084015261182d91612ade565b826001600160401b031684887f52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab60405160405180910390a450505050505061188160015f8051602061587e83398151915255565b5050565b5f8051602061585e8339815191525f61189d83612af1565b90505f806118ae8360400151613365565b91509150806119105760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b60648201526084016105ca565b5f8281526007850160205260408120805461192a90615348565b905011801561195c575060015f83815260088601602052604090205460ff16600581111561195a5761195a614dbd565b145b6119785760405162461bcd60e51b81526004016105ca9061537a565b5f828152600785016020526040812061199091614bc7565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f8051602061581e83398151915293929190829060ff166004811115611a9e57611a9e614dbd565b6004811115611aaf57611aaf614dbd565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611b3657611b36614dbd565b1480611b545750600381516004811115611b5257611b52614dbd565b145b611ba85760405162461bcd60e51b815260206004820152603260248201525f8051602061583e833981519152604482015271737461747573206e6f742070656e64696e6760701b60648201526084016105ca565b5f611bb68260400151611e08565b905080606001516001600160401b03165f03611c3a5760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e2049440060648201526084016105ca565b6005600160991b016001600160a01b031663ee5b48eb611c6784604001518460600151856080015161227c565b6040518263ffffffff1660e01b8152600401611c839190614edd565b6020604051808303815f875af1158015611c9f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116519190614f0f565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f8051602061585e833981519152929190611d0b90615348565b9050118015611d3d575060015f83815260088301602052604090205460ff166005811115611d3b57611d3b614dbd565b145b611d595760405162461bcd60e51b81526004016105ca9061537a565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611d9291906004016153c1565b6020604051808303815f875af1158015611dae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd29190614f0f565b505050565b5f611de06124b2565b611deb823334613506565b9050611e0360015f8051602061587e83398151915255565b919050565b6040805160e080820183525f8083526020808401829052838501829052606084018290526080840182905260a0840182905260c084018290528582525f8051602061589e83398151915290528390208351918201909352825491925f8051602061585e83398151915292829060ff166005811115611e8857611e88614dbd565b6005811115611e9957611e99614dbd565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611f46573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f6d9190810190615456565b9150915080611fd05760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016105ca565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612013573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120379190614f0f565b82511461209b5760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b60648201526084016105ca565b60208201516001600160a01b0316156121115760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016105ca565b5f80612120846040015161397c565b9150915081871461218d5760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b60648201526084016105ca565b9695505050505050565b5f8181525f8051602061589e8339815191526020526040812060020180545f8051602061585e83398151915291600160401b9091046001600160401b03169060086121e183615528565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b612231815f613b54565b50565b5f9182525f8051602061589e833981519152602052604090912060020180546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b60028110156122f5576122b5816001615543565b6122c0906008615311565b5081515f908390839081106122d7576122d761504b565b60200101906001600160f81b03191690815f1a9053506001016122a1565b505f5b60048110156123605761230c816003615543565b612317906008615311565b600263ffffffff16901c60f81b8282600261233291906152dc565b815181106123425761234261504b565b60200101906001600160f81b03191690815f1a9053506001016122f8565b505f5b60208110156123c25761237781601f615543565b612382906008615311565b86901c60f81b826123948360066152dc565b815181106123a4576123a461504b565b60200101906001600160f81b03191690815f1a905350600101612363565b505f5b600881101561242d576123d9816007615543565b6123e4906008615311565b6001600160401b038616901c60f81b826123ff8360266152dc565b8151811061240f5761240f61504b565b60200101906001600160f81b03191690815f1a9053506001016123c5565b505f5b600881101561249857612444816007615543565b61244f906008615311565b6001600160401b038516901c60f81b8261246a83602e6152dc565b8151811061247a5761247a61504b565b60200101906001600160f81b03191690815f1a905350600101612430565b50949350505050565b6124a9613dae565b61223181613df9565b5f8051602061587e8339815191528054600119016124e357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f8051602061581e8339815191529061ffff861610801590612535575061271061ffff861611155b6125515760405162461bcd60e51b81526004016105ca90615556565b60028101546001600160401b0390811690851610156125ca5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b60648201526084016105ca565b805483101561262d5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b60648201526084016105ca565b80600101548311156126945760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b60648201526084016105ca565b825f61269f82610b8c565b90505f6126ac8983613e6d565b905060405180606001604052806126c03390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b60015f8051602061587e83398151915255565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290525f8051602061585e8339815191525f6127b585612af1565b90505f806127c68360400151613365565b91509150801561282b5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b60648201526084016105ca565b5f828152600885016020526040808220815160e081019092528054829060ff16600581111561285c5761285c614dbd565b600581111561286d5761286d614dbd565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f90825160058111156128de576128de614dbd565b14806128fc57506001825160058111156128fa576128fa614dbd565b145b61295b5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b60648201526084016105ca565b60038251600581111561297057612970614dbd565b0361297d57506004612981565b5060055b6020808301515f908152600988019091526040812055818160058111156129aa576129aa614dbd565b908160058111156129bd576129bd614dbd565b9052505f84815260088701602052604090208251815484929190829060ff191660018360058111156129f1576129f1614dbd565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905581516005811115612aa557612aa5614dbd565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b6118816001600160a01b03821683614351565b60408051606080820183525f8083526020830181905292820152905f8051602061585e8339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612b66573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b8d9190810190615456565b9150915080612bed5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20496e76616c69642077617270206d60448201526565737361676560d01b60648201526084016105ca565b8254825114612c505760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b60648201526084016105ca565b60208201516001600160a01b031615612cc35760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b60648201526084016105ca565b509392505050565b5f805f8351603614612cef5760405162461bcd60e51b81526004016105ca906155a1565b5f805b6002811015612d3e57612d06816001615543565b612d11906008615311565b61ffff16868281518110612d2757612d2761504b565b016020015160f81c901b9190911790600101612cf2565b5061ffff811615612d615760405162461bcd60e51b81526004016105ca906155ea565b5f805b6004811015612dbc57612d78816003615543565b612d83906008615311565b63ffffffff1687612d958360026152dc565b81518110612da557612da561504b565b016020015160f81c901b9190911790600101612d64565b5063ffffffff8116600414612de35760405162461bcd60e51b81526004016105ca9061562d565b5f805b6020811015612e3857612dfa81601f615543565b612e05906008615311565b88612e118360066152dc565b81518110612e2157612e2161504b565b016020015160f81c901b9190911790600101612de6565b505f805b6008811015612e9757612e50816007615543565b612e5b906008615311565b6001600160401b031689612e708360266152dc565b81518110612e8057612e8061504b565b016020015160f81c901b9190911790600101612e3c565b505f805b6008811015612ef657612eaf816007615543565b612eba906008615311565b6001600160401b03168a612ecf83602e6152dc565b81518110612edf57612edf61504b565b016020015160f81c901b9190911790600101612e9b565b5091989097509095509350505050565b5f8151602614612f285760405162461bcd60e51b81526004016105ca906155a1565b5f805b6002811015612f7757612f3f816001615543565b612f4a906008615311565b61ffff16848281518110612f6057612f6061504b565b016020015160f81c901b9190911790600101612f2b565b5061ffff811615612f9a5760405162461bcd60e51b81526004016105ca906155ea565b5f805b6004811015612ff557612fb1816003615543565b612fbc906008615311565b63ffffffff1685612fce8360026152dc565b81518110612fde57612fde61504b565b016020015160f81c901b9190911790600101612f9d565b5063ffffffff81161561301a5760405162461bcd60e51b81526004016105ca9061562d565b5f805b60208110156124985761303181601f615543565b61303c906008615311565b866130488360066152dc565b815181106130585761305861504b565b016020015160f81c901b919091179060010161301d565b5f8181525f8051602061589e8339815191526020526040808220815160e0810190925280545f8051602061585e83398151915293929190829060ff1660058111156130bc576130bc614dbd565b60058111156130cd576130cd614dbd565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c0909101529091508151600581111561313f5761313f614dbd565b1461319b5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b60648201526084016105ca565b6131a88160800151612227565b60038152426001600160401b031660c08201525f83815260088301602052604090208151815483929190829060ff191660018360058111156131ec576131ec614dbd565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6132a18461329b81612197565b5f61227c565b60405163ee5b48eb60e01b81529091505f906005600160991b019063ee5b48eb906132d0908590600401614edd565b6020604051808303815f875af11580156132ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133109190614f0f565b6080840151604080516001600160401b039092168252426020830152919250829187917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a35050505050565b5f8082516027146133885760405162461bcd60e51b81526004016105ca906155a1565b5f805b60028110156133d75761339f816001615543565b6133aa906008615311565b61ffff168582815181106133c0576133c061504b565b016020015160f81c901b919091179060010161338b565b5061ffff8116156133fa5760405162461bcd60e51b81526004016105ca906155ea565b5f805b600481101561345557613411816003615543565b61341c906008615311565b63ffffffff168661342e8360026152dc565b8151811061343e5761343e61504b565b016020015160f81c901b91909117906001016133fd565b5063ffffffff811660031461347c5760405162461bcd60e51b81526004016105ca9061562d565b5f805b60208110156134d15761349381601f615543565b61349e906008615311565b876134aa8360066152dc565b815181106134ba576134ba61504b565b016020015160f81c901b919091179060010161347f565b505f866026815181106134e6576134e661504b565b016020015191976001600160f81b03199092161515965090945050505050565b5f5f8051602061581e8339815191528161351f84610b8c565b90505f61352b87611e08565b905060028151600581111561354257613542614dbd565b146135a15760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b60648201526084016105ca565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b03166136345760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b60648201526084016105ca565b61363d826143e4565b5f82826080015161364e9190615328565b60048501546040840151919250613670916001600160401b0390911690615674565b6001600160401b0316816001600160401b031611156136ef5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b60648201526084016105ca565b6136f98882612234565b5f61370389612197565b90505f898260405160200161372f92919091825260c01b6001600160c01b031916602082015260280190565b6040516020818303038152906040528051906020012090505f6005600160991b016001600160a01b031663ee5b48eb6137698d868861227c565b6040518263ffffffff1660e01b81526004016137859190614edd565b6020604051808303815f875af11580156137a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137c59190614f0f565b60408051610100810190915290915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905285835260068b01909152902081518154829060ff1916600183600481111561384d5761384d614dbd565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101849052908c16918d9185917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a4509998505050505050505050565b5f808251602e1461399f5760405162461bcd60e51b81526004016105ca906155a1565b5f805b60028110156139ee576139b6816001615543565b6139c1906008615311565b61ffff168582815181106139d7576139d761504b565b016020015160f81c901b91909117906001016139a2565b5061ffff811615613a115760405162461bcd60e51b81526004016105ca906155ea565b5f805b6004811015613a6c57613a28816003615543565b613a33906008615311565b63ffffffff1686613a458360026152dc565b81518110613a5557613a5561504b565b016020015160f81c901b9190911790600101613a14565b5063ffffffff8116600514613a935760405162461bcd60e51b81526004016105ca9061562d565b5f805b6020811015613ae857613aaa81601f615543565b613ab5906008615311565b87613ac18360066152dc565b81518110613ad157613ad161504b565b016020015160f81c901b9190911790600101613a96565b505f805b6008811015613b4757613b00816007615543565b613b0b906008615311565b6001600160401b031688613b208360266152dc565b81518110613b3057613b3061504b565b016020015160f81c901b9190911790600101613aec565b5090969095509350505050565b604080516080810182527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb045460208301527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0554928201929092527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06546001600160401b031660608201525f8051602061585e833981519152914291901580613c3a575060028301548151613c36916001600160401b0316906152dc565b8210155b15613c60576001600160401b038516606082015281815260408101516020820152613c7f565b8481606001818151613c729190615328565b6001600160401b03169052505b6060810151613c8f906064615674565b602082015160028501546001600160401b039290921691613cba9190600160401b900460ff16615311565b1015613d1e5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b60648201526084016105ca565b8315613d4757846001600160401b031681604001818151613d3f91906152dc565b905250613d66565b846001600160401b031681604001818151613d629190615543565b9052505b805160038401556020810151600484015560408101516005840155606001516006909201805467ffffffffffffffff19166001600160401b0390931692909217909155505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613df757604051631afcd79f60e31b815260040160405180910390fd5b565b613e01613dae565b613e0a816143ef565b613e12614408565b612231608082013560a0830135613e2f60e0850160c08601614da4565b613e40610100860160e0870161569f565b61ffff16613e56610120870161010088016156b8565b613e6861014088016101208901614fe4565b614418565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff16613ef85760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b60648201526084016105ca565b5f8051602061585e83398151915242613f176040860160208701614da4565b6001600160401b031611613f895760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b60648201526084016105ca565b613f996040850160208601614da4565b6001600160401b0316613faf6202a300426152dc565b116140225760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e2066757475726500000000000000000060648201526084016105ca565b83356140405760405162461bcd60e51b81526004016105ca906151a6565b83355f9081526009820160205260409020541561406f5760405162461bcd60e51b81526004016105ca906151e7565b61407c60408501856156d8565b905060301461409d5760405162461bcd60e51b81526004016105ca9061522f565b6140a6836143e4565b5f806141406040518060a0016040528085600101548152602001885f01358152602001876001600160401b031681526020018860200160208101906140eb9190614da4565b6001600160401b0316815260200161410660408a018a6156d8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525061465c565b5f8281526007860160205260409020919350915061415e828261575e565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061418b908590600401614edd565b6020604051808303815f875af11580156141a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141cb9190614f0f565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff1916600183600581111561424357614243614dbd565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b91614323918e01908e01614da4565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b804710156143745760405163cd78605960e01b81523060048201526024016105ca565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146143bd576040519150601f19603f3d011682016040523d82523d5f602084013e6143c2565b606091505b5050905080611dd257604051630a12f52160e11b815260040160405180910390fd5b612231816001613b54565b6143f7613dae565b6143ff614a0b565b61223181614a13565b614410613dae565b613df7614bbf565b614420613dae565b5f8051602061581e8339815191528361448c5760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b60648201526084016105ca565b6127108411156144ae5760405162461bcd60e51b81526004016105ca90615556565b858711156145165760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b60648201526084016105ca565b5f8360ff16116145835760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b60648201526084016105ca565b600a60ff841611156145f55760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b60648201526084016105ca565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b5f60608260800151516030146146c65760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b60648201526084016105ca565b60408051608680825260c082019092525f916020820181803683370190505090505f5b600281101561473d576146fd816001615543565b614708906008615311565b5081515f9083908390811061471f5761471f61504b565b60200101906001600160f81b03191690815f1a9053506001016146e9565b505f5b60048110156147a557614754816003615543565b61475f906008615311565b600160ff919091161c60f81b826147778360026152dc565b815181106147875761478761504b565b60200101906001600160f81b03191690815f1a905350600101614740565b505f5b602081101561480257845181602081106147c4576147c461504b565b1a60f81b826147d48360066152dc565b815181106147e4576147e461504b565b60200101906001600160f81b03191690815f1a9053506001016147a8565b505f5b602081101561486257846020015181602081106148245761482461504b565b1a60f81b826148348360266152dc565b815181106148445761484461504b565b60200101906001600160f81b03191690815f1a905350600101614805565b505f5b60088110156148d657614879816007615543565b614884906008615311565b60ff1685604001516001600160401b0316901c60f81b828260466148a891906152dc565b815181106148b8576148b861504b565b60200101906001600160f81b03191690815f1a905350600101614865565b505f5b603081101561494157846080015181815181106148f8576148f861504b565b01602001516001600160f81b0319168261491383604e6152dc565b815181106149235761492361504b565b60200101906001600160f81b03191690815f1a9053506001016148d9565b505f5b60088110156149b357614958816007615543565b614963906008615311565b60608601516001600160401b0390811691161c60f81b8261498583607e6152dc565b815181106149955761499561504b565b60200101906001600160f81b03191690815f1a905350600101614944565b506002816040516149c491906152cb565b602060405180830381855afa1580156149df573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614a029190614f0f565b94909350915050565b613df7613dae565b614a1b613dae565b80355f8051602061585e83398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01556014614a6760808401606085016156b8565b60ff161115614ad45760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b60648201526084016105ca565b5f614ae560808401606085016156b8565b60ff1611614b4d5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b60648201526084016105ca565b614b5d60808301606084016156b8565b60028201805460ff92909216600160401b0260ff60401b19909216919091179055614b8e6060830160408401614da4565b60028201805467ffffffffffffffff19166001600160401b0392909216919091179055600a01805460ff1916905550565b612753613dae565b508054614bd390615348565b5f825580601f10614be2575050565b601f0160209004905f5260205f209081019061223191905b80821115614c0d575f8155600101614bfa565b5090565b8015158114612231575f80fd5b803563ffffffff81168114611e03575f80fd5b5f805f60608486031215614c43575f80fd5b833592506020840135614c5581614c11565b9150614c6360408501614c1e565b90509250925092565b5f60208284031215614c7c575f80fd5b5035919050565b5f6101408284031215614c94575f80fd5b50919050565b803561ffff81168114611e03575f80fd5b80356001600160401b0381168114611e03575f80fd5b5f805f60608486031215614cd3575f80fd5b83356001600160401b03811115614ce8575f80fd5b840160608187031215614cf9575f80fd5b9250614d0760208501614c9a565b9150614c6360408501614cab565b5f60208284031215614d25575f80fd5b610bcf82614c1e565b5f8060408385031215614d3f575f80fd5b614d4883614c1e565b946020939093013593505050565b5f8060408385031215614d67575f80fd5b82356001600160401b03811115614d7c575f80fd5b830160808186031215614d8d575f80fd5b9150614d9b60208401614c1e565b90509250929050565b5f60208284031215614db4575f80fd5b610bcf82614cab565b634e487b7160e01b5f52602160045260245ffd5b815160e082019060068110614df457634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b0360408401511660408301526060830151614e2f60608401826001600160401b03169052565b506080830151614e4a60808401826001600160401b03169052565b5060a0830151614e6560a08401826001600160401b03169052565b5060c0830151614e8060c08401826001600160401b03169052565b5092915050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03828116828216039080821115614e8057614e80614e87565b5f5b83811015614ed5578181015183820152602001614ebd565b50505f910152565b602081525f8251806020840152614efb816040850160208701614ebb565b601f01601f19169190910160400192915050565b5f60208284031215614f1f575f80fd5b5051919050565b5f82614f4057634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b6001600160a01b0381168114612231575f80fd5b5f60208284031215614ff4575f80fd5b8135610bcf81614fd0565b5f808335601e19843603018112615014575f80fd5b8301803591506001600160401b0382111561502d575f80fd5b6020019150600581901b3603821315615044575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615073575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156150b3576150b361507d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156150e1576150e161507d565b604052919050565b5f6001600160401b038211156151015761510161507d565b50601f01601f191660200190565b5f6060823603121561511f575f80fd5b615127615091565b823581526020615138818501614cab565b8183015260408401356001600160401b03811115615154575f80fd5b840136601f820112615164575f80fd5b8035615177615172826150e9565b6150b9565b818152368483850101111561518a575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526021908201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496040820152601160fa1b606082015260800190565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b6020808252602d908201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260408201526c0d8d2c696caf240d8cadccee8d609b1b606082015260800190565b5f855161528d818460208a01614ebb565b80830190508581526001600160401b0360c01b8560c01b16602082015283516152bd816028840160208801614ebb565b016028019695505050505050565b5f8251615073818460208701614ebb565b80820180821115610b9c57610b9c614e87565b5f63ffffffff80831681810361530757615307614e87565b6001019392505050565b8082028115828204841417610b9c57610b9c614e87565b6001600160401b03818116838216019080821115614e8057614e80614e87565b600181811c9082168061535c57607f821691505b602082108103614c9457634e487b7160e01b5f52602260045260245ffd5b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f84546153d381615348565b806020870152604060018084165f81146153f457600181146154105761543d565b60ff19851660408a0152604084151560051b8a0101955061543d565b895f5260205f205f5b858110156154345781548b8201860152908301908801615419565b8a016040019650505b509398975050505050505050565b8051611e0381614c11565b5f8060408385031215615467575f80fd5b82516001600160401b038082111561547d575f80fd5b9084019060608287031215615490575f80fd5b615498615091565b825181526020808401516154ab81614fd0565b828201526040840151838111156154c0575f80fd5b80850194505087601f8501126154d4575f80fd5b835192506154e4615172846150e9565b83815288828587010111156154f7575f80fd5b61550684838301848801614ebb565b8060408401525081955061551b81880161544b565b9450505050509250929050565b5f6001600160401b0380831681810361530757615307614e87565b81810381811115610b9c57610b9c614e87565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b0381811683821602808216919082811461569757615697614e87565b505092915050565b5f602082840312156156af575f80fd5b610bcf82614c9a565b5f602082840312156156c8575f80fd5b813560ff81168114610bcf575f80fd5b5f808335601e198436030181126156ed575f80fd5b8301803591506001600160401b03821115615706575f80fd5b602001915036819003821315615044575f80fd5b601f821115611dd257805f5260205f20601f840160051c8101602085101561573f5750805b601f840160051c820191505b81811015611651575f815560010161574b565b81516001600160401b038111156157775761577761507d565b61578b816157858454615348565b8461571a565b602080601f8311600181146157be575f84156157a75750858301515b5f19600386901b1c1916600185901b178555615815565b5f85815260208120601f198616915b828110156157ec578886015182559484019460019091019084016157cd565b508582101561580957878501515f19600388901b60f8161c191681555b505060018460011b0185555b50505050505056fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", + Bin: "0x608060405234801561000f575f80fd5b50604051615a0d380380615a0d83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6158c08061014d5f395ff3fe60806040526004361061013c575f3560e01c806362065856116100b3578063ba3a4b971161006d578063ba3a4b97146103be578063bee0a03f146103dd578063c599e24f146103fc578063c974d1b61461040f578063d5f20ff614610423578063df93d8de1461044f575f80fd5b806362065856146102f157806366435abf1461031057806376f786211461032f57806398f3e2b41461034e578063a3a65e481461036d578063b771b3bc1461038c575f80fd5b80632e2194d8116101045780632e2194d81461022257806335455ded1461025957806340034a9314610281578063467ef06f146102945780635297fae6146102b357806361e2f490146102d2575f80fd5b80630118acc4146101405780630322ed98146101615780630cdd098514610180578063151d30d1146101dd5780631f7a9d8f14610203575b5f80fd5b34801561014b575f80fd5b5061015f61015a366004614c27565b610465565b005b34801561016c575f80fd5b5061015f61017b366004614c62565b6108f6565b34801561018b575f80fd5b506101ca61019a366004614c62565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b3480156101e8575f80fd5b506101f1600a81565b60405160ff90911681526020016101d4565b34801561020e575f80fd5b5061015f61021d366004614c79565b610aaf565b34801561022d575f80fd5b5061024161023c366004614c62565b610b8c565b6040516001600160401b0390911681526020016101d4565b348015610264575f80fd5b5061026e61271081565b60405161ffff90911681526020016101d4565b6101ca61028f366004614cb7565b610ba2565b34801561029f575f80fd5b5061015f6102ae366004614d0b565b610bd6565b3480156102be575f80fd5b5061015f6102cd366004614d24565b610c29565b3480156102dd575f80fd5b5061015f6102ec366004614d4c565b610dfe565b3480156102fc575f80fd5b506101ca61030b366004614d9a565b61154a565b34801561031b575f80fd5b5061024161032a366004614c62565b611563565b34801561033a575f80fd5b5061015f610349366004614c27565b611577565b348015610359575f80fd5b5061015f610368366004614d24565b611658565b348015610378575f80fd5b5061015f610387366004614d0b565b611885565b348015610397575f80fd5b506103a66005600160991b0181565b6040516001600160a01b0390911681526020016101d4565b3480156103c9575f80fd5b5061015f6103d8366004614c62565b611a3d565b3480156103e8575f80fd5b5061015f6103f7366004614c62565b611cc3565b6101ca61040a366004614c62565b611dd7565b34801561041a575f80fd5b506101f1601481565b34801561042e575f80fd5b5061044261043d366004614c62565b611e08565b6040516101d49190614dc7565b34801561045a575f80fd5b506102416202a30081565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408120600101545f805160206158148339815191529184156104b7576104b48285611efb565b90505b5f868152600684016020526040808220815161010081019092528054829060ff1660048111156104e9576104e9614db3565b60048111156104fa576104fa614db3565b8152815461010090046001600160a01b03166020820152600182015460408201526002808301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e0909101529091508151600481111561058157610581614db3565b146105d35760405162461bcd60e51b815260206004820152602a60248201525f805160206158348339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208101516001600160a01b031633146106385760405162461bcd60e51b815260206004820152603360248201525f805160206158348339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b60648201526084016105ca565b5f61064284612197565b600383526001600160401b0342811660a0850152811660e08401525f8981526006870160205260409020835181549293508492829060ff1916600183600481111561068f5761068f614db3565b021790555060208201518154610100600160a81b0319166101006001600160a01b0390921691909102178155604082015160018201556060820151600282018054608085015160a086015160c08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560e0909201516003909101805467ffffffffffffffff1916919092161790555f61076185611e08565b905082606001516001600160401b031681608001516001600160401b0316116107d85760405162461bcd60e51b815260206004820152602360248201527f506f5356616c696461746f724d616e616765723a20496e76616c69642077656960448201526219da1d60ea1b60648201526084016105ca565b6002815160058111156107ed576107ed614db3565b036107ff576107ff8360600151612227565b5f836060015182608001516108149190614e91565b90506108208682612234565b5f6005600160991b0163ee5b48eb61083989878661227c565b6040518263ffffffff1660e01b81526004016108559190614ed3565b6020604051808303815f875af1158015610871573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108959190614f05565b604080516001600160401b03858116825242602083015291810183905291925085169088908d907f5318ab4d7cdf77056db2db5b539a08fe7d1a63d6885ecee8236a0dbda2843b4e9060600160405180910390a45050505050505050505050565b5f8181525f805160206158948339815191526020526040808220815160e0810190925280545f8051602061585483398151915293929190829060ff16600581111561094357610943614db3565b600581111561095457610954614db3565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c090910152909150815160058111156109c3576109c3614db3565b14610a285760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b60648201526084016105ca565b6005600160991b016001600160a01b031663ee5b48eb610a4d8584606001515f61227c565b6040518263ffffffff1660e01b8152600401610a699190614ed3565b6020604051808303815f875af1158015610a85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa99190614f05565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610af8575080546001600160401b03808416911610155b15610b165760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610b40836124a1565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f610b9c64e8d4a5100083614f1c565b92915050565b5f610bab6124b2565b610bb7848484346124e9565b9050610bcf60015f8051602061587483398151915255565b9392505050565b5f805160206158148339815191525f80610bef84612766565b6040808201515f848152600588016020529190912054929450909250610aa9916001600160401b03909116906001600160a01b0316612ade565b5f805160206158148339815191525f610c4184612af1565b90505f80610c528360400151612ccb565b50915091505f610c6183611e08565b9050816001600160401b031681606001516001600160401b03161015610c995760405162461bcd60e51b81526004016105ca90614f3b565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610cde5760405162461bcd60e51b81526004016105ca90614f7d565b60015f87815260068701602052604090205460ff166004811115610d0457610d04614db3565b14610d6d5760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b60648201526084016105ca565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f805160206158548339815191529060ff1615610e9b5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b60648201526084016105ca565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f029190614f05565b836020013514610f645760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b60648201526084016105ca565b30610f756060850160408601614fda565b6001600160a01b031614610fe75760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b60648201526084016105ca565b5f610ff56060850185614ff5565b9050116110545760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a206e6f20696e697469616c2076616c604482015266696461746f727360c81b60648201526084016105ca565b5f6110626060850185614ff5565b91505063ffffffff81106110ce5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20746f6f206d616e7920696e69746960448201526c616c2076616c696461746f727360981b60648201526084016105ca565b5f8435602086013560146110e86060890160408a01614fda565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff16101561145a575f6111686060890189614ff5565b8363ffffffff1681811061117e5761117e615041565b90506020028101906111909190615055565b61119990615105565b8051909150806111bb5760405162461bcd60e51b81526004016105ca9061519c565b5f818152600988016020526040902054156111e85760405162461bcd60e51b81526004016105ca906151dd565b81604001515160301461120d5760405162461bcd60e51b81526004016105ca90615225565b84825f01518360200151846040015160405160200161122f9493929190615272565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f9160029161127d91906152c1565b602060405180830381855afa158015611298573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906112bb9190614f05565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff1916600183600581111561134757611347614db3565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff1916928416929092179091558401516113fa9116866152d2565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a35050508080611452906152e5565b91505061114c565b50600584018190555f61146c86612af1565b90505f61147c8260400151612f06565b90508060028560405161148f91906152c1565b602060405180830381855afa1580156114aa573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906114cd9190614f05565b146115315760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b60648201526084016105ca565b505050600a909201805460ff1916600117905550505050565b5f610b9c6001600160401b03831664e8d4a51000615307565b5f61156d82611e08565b6080015192915050565b5f805160206158148339815191525f61158f85611e08565b5f86815260058401602052604090205460a08201519192506115c291600160b01b9091046001600160401b03169061531e565b6001600160401b03164210156116365760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b60648201526084016105ca565b8315611648576116468584611efb565b505b6116518561306f565b5050505050565b6116606124b2565b5f805160206158148339815191525f61167884612af1565b90505f806116898360400151612ccb565b50915091505f61169883611e08565b9050816001600160401b031681606001516001600160401b031610156116d05760405162461bcd60e51b81526004016105ca90614f3b565b5f8681526006860160205260409020600301546001600160401b038084169116111561170e5760405162461bcd60e51b81526004016105ca90614f7d565b60035f87815260068701602052604090205460ff16600481111561173457611734614db3565b146117885760405162461bcd60e51b815260206004820152603160248201525f805160206158348339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b60648201526084016105ca565b5f868152600686016020908152604091829020805460ff19166004908117808355845161010080820187529281529190046001600160a01b031692810183905260018201549381019390935260028101546001600160401b0380821660608601819052600160401b830482166080870152600160801b8304821660a0870152600160c01b909204811660c086015260039092015490911660e084015261182d91612ade565b826001600160401b031684887f52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab60405160405180910390a450505050505061188160015f8051602061587483398151915255565b5050565b5f805160206158548339815191525f61189d83612af1565b90505f806118ae8360400151613365565b91509150806119105760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b60648201526084016105ca565b5f8281526007850160205260408120805461192a9061533e565b905011801561195c575060015f83815260088601602052604090205460ff16600581111561195a5761195a614db3565b145b6119785760405162461bcd60e51b81526004016105ca90615370565b5f828152600785016020526040812061199091614bbd565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f8051602061581483398151915293929190829060ff166004811115611a9e57611a9e614db3565b6004811115611aaf57611aaf614db3565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611b3657611b36614db3565b1480611b545750600381516004811115611b5257611b52614db3565b145b611ba85760405162461bcd60e51b815260206004820152603260248201525f80516020615834833981519152604482015271737461747573206e6f742070656e64696e6760701b60648201526084016105ca565b5f611bb68260400151611e08565b905080606001516001600160401b03165f03611c3a5760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e2049440060648201526084016105ca565b6005600160991b016001600160a01b031663ee5b48eb611c6784604001518460600151856080015161227c565b6040518263ffffffff1660e01b8152600401611c839190614ed3565b6020604051808303815f875af1158015611c9f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116519190614f05565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f80516020615854833981519152929190611d0b9061533e565b9050118015611d3d575060015f83815260088301602052604090205460ff166005811115611d3b57611d3b614db3565b145b611d595760405162461bcd60e51b81526004016105ca90615370565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611d9291906004016153b7565b6020604051808303815f875af1158015611dae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd29190614f05565b505050565b5f611de06124b2565b611deb823334613506565b9050611e0360015f8051602061587483398151915255565b919050565b6040805160e080820183525f8083526020808401829052838501829052606084018290526080840182905260a0840182905260c084018290528582525f8051602061589483398151915290528390208351918201909352825491925f8051602061585483398151915292829060ff166005811115611e8857611e88614db3565b6005811115611e9957611e99614db3565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015611f46573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f6d919081019061544c565b9150915080611fd05760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016105ca565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612013573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120379190614f05565b82511461209b5760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b60648201526084016105ca565b60208201516001600160a01b0316156121115760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016105ca565b5f80612120846040015161397c565b9150915081871461218d5760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b60648201526084016105ca565b9695505050505050565b5f8181525f805160206158948339815191526020526040812060020180545f8051602061585483398151915291600160401b9091046001600160401b03169060086121e18361551e565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b612231815f613b54565b50565b5f9182525f80516020615894833981519152602052604090912060020180546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b60028110156122f5576122b5816001615539565b6122c0906008615307565b5081515f908390839081106122d7576122d7615041565b60200101906001600160f81b03191690815f1a9053506001016122a1565b505f5b60048110156123605761230c816003615539565b612317906008615307565b600263ffffffff16901c60f81b8282600261233291906152d2565b8151811061234257612342615041565b60200101906001600160f81b03191690815f1a9053506001016122f8565b505f5b60208110156123c25761237781601f615539565b612382906008615307565b86901c60f81b826123948360066152d2565b815181106123a4576123a4615041565b60200101906001600160f81b03191690815f1a905350600101612363565b505f5b600881101561242d576123d9816007615539565b6123e4906008615307565b6001600160401b038616901c60f81b826123ff8360266152d2565b8151811061240f5761240f615041565b60200101906001600160f81b03191690815f1a9053506001016123c5565b505f5b600881101561249857612444816007615539565b61244f906008615307565b6001600160401b038516901c60f81b8261246a83602e6152d2565b8151811061247a5761247a615041565b60200101906001600160f81b03191690815f1a905350600101612430565b50949350505050565b6124a9613dae565b61223181613df9565b5f805160206158748339815191528054600119016124e357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f805160206158148339815191529061ffff861610801590612535575061271061ffff861611155b6125515760405162461bcd60e51b81526004016105ca9061554c565b60028101546001600160401b0390811690851610156125ca5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b60648201526084016105ca565b805483101561262d5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b60648201526084016105ca565b80600101548311156126945760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b60648201526084016105ca565b825f61269f82610b8c565b90505f6126ac8983613e6d565b905060405180606001604052806126c03390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b60015f8051602061587483398151915255565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290525f805160206158548339815191525f6127b585612af1565b90505f806127c68360400151613365565b91509150801561282b5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b60648201526084016105ca565b5f828152600885016020526040808220815160e081019092528054829060ff16600581111561285c5761285c614db3565b600581111561286d5761286d614db3565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f90825160058111156128de576128de614db3565b14806128fc57506001825160058111156128fa576128fa614db3565b145b61295b5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b60648201526084016105ca565b60038251600581111561297057612970614db3565b0361297d57506004612981565b5060055b6020808301515f908152600988019091526040812055818160058111156129aa576129aa614db3565b908160058111156129bd576129bd614db3565b9052505f84815260088701602052604090208251815484929190829060ff191660018360058111156129f1576129f1614db3565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905581516005811115612aa557612aa5614db3565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b6118816001600160a01b03821683614351565b60408051606080820183525f8083526020830181905292820152905f805160206158548339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612b66573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b8d919081019061544c565b9150915080612bed5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20496e76616c69642077617270206d60448201526565737361676560d01b60648201526084016105ca565b8254825114612c505760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b60648201526084016105ca565b60208201516001600160a01b031615612cc35760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b60648201526084016105ca565b509392505050565b5f805f8351603614612cef5760405162461bcd60e51b81526004016105ca90615597565b5f805b6002811015612d3e57612d06816001615539565b612d11906008615307565b61ffff16868281518110612d2757612d27615041565b016020015160f81c901b9190911790600101612cf2565b5061ffff811615612d615760405162461bcd60e51b81526004016105ca906155e0565b5f805b6004811015612dbc57612d78816003615539565b612d83906008615307565b63ffffffff1687612d958360026152d2565b81518110612da557612da5615041565b016020015160f81c901b9190911790600101612d64565b5063ffffffff8116600414612de35760405162461bcd60e51b81526004016105ca90615623565b5f805b6020811015612e3857612dfa81601f615539565b612e05906008615307565b88612e118360066152d2565b81518110612e2157612e21615041565b016020015160f81c901b9190911790600101612de6565b505f805b6008811015612e9757612e50816007615539565b612e5b906008615307565b6001600160401b031689612e708360266152d2565b81518110612e8057612e80615041565b016020015160f81c901b9190911790600101612e3c565b505f805b6008811015612ef657612eaf816007615539565b612eba906008615307565b6001600160401b03168a612ecf83602e6152d2565b81518110612edf57612edf615041565b016020015160f81c901b9190911790600101612e9b565b5091989097509095509350505050565b5f8151602614612f285760405162461bcd60e51b81526004016105ca90615597565b5f805b6002811015612f7757612f3f816001615539565b612f4a906008615307565b61ffff16848281518110612f6057612f60615041565b016020015160f81c901b9190911790600101612f2b565b5061ffff811615612f9a5760405162461bcd60e51b81526004016105ca906155e0565b5f805b6004811015612ff557612fb1816003615539565b612fbc906008615307565b63ffffffff1685612fce8360026152d2565b81518110612fde57612fde615041565b016020015160f81c901b9190911790600101612f9d565b5063ffffffff81161561301a5760405162461bcd60e51b81526004016105ca90615623565b5f805b60208110156124985761303181601f615539565b61303c906008615307565b866130488360066152d2565b8151811061305857613058615041565b016020015160f81c901b919091179060010161301d565b5f8181525f805160206158948339815191526020526040808220815160e0810190925280545f8051602061585483398151915293929190829060ff1660058111156130bc576130bc614db3565b60058111156130cd576130cd614db3565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c0909101529091508151600581111561313f5761313f614db3565b1461319b5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b60648201526084016105ca565b6131a88160800151612227565b60038152426001600160401b031660c08201525f83815260088301602052604090208151815483929190829060ff191660018360058111156131ec576131ec614db3565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6132a18461329b81612197565b5f61227c565b60405163ee5b48eb60e01b81529091505f906005600160991b019063ee5b48eb906132d0908590600401614ed3565b6020604051808303815f875af11580156132ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133109190614f05565b6080840151604080516001600160401b039092168252426020830152919250829187917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a35050505050565b5f8082516027146133885760405162461bcd60e51b81526004016105ca90615597565b5f805b60028110156133d75761339f816001615539565b6133aa906008615307565b61ffff168582815181106133c0576133c0615041565b016020015160f81c901b919091179060010161338b565b5061ffff8116156133fa5760405162461bcd60e51b81526004016105ca906155e0565b5f805b600481101561345557613411816003615539565b61341c906008615307565b63ffffffff168661342e8360026152d2565b8151811061343e5761343e615041565b016020015160f81c901b91909117906001016133fd565b5063ffffffff811660031461347c5760405162461bcd60e51b81526004016105ca90615623565b5f805b60208110156134d15761349381601f615539565b61349e906008615307565b876134aa8360066152d2565b815181106134ba576134ba615041565b016020015160f81c901b919091179060010161347f565b505f866026815181106134e6576134e6615041565b016020015191976001600160f81b03199092161515965090945050505050565b5f5f805160206158148339815191528161351f84610b8c565b90505f61352b87611e08565b905060028151600581111561354257613542614db3565b146135a15760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b60648201526084016105ca565b5f8781527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b03166136345760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b60648201526084016105ca565b61363d826143e4565b5f82826080015161364e919061531e565b60048501546040840151919250613670916001600160401b039091169061566a565b6001600160401b0316816001600160401b031611156136ef5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b60648201526084016105ca565b6136f98882612234565b5f61370389612197565b90505f898260405160200161372f92919091825260c01b6001600160c01b031916602082015260280190565b6040516020818303038152906040528051906020012090505f6005600160991b016001600160a01b031663ee5b48eb6137698d868861227c565b6040518263ffffffff1660e01b81526004016137859190614ed3565b6020604051808303815f875af11580156137a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137c59190614f05565b60408051610100810190915290915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905285835260068b01909152902081518154829060ff1916600183600481111561384d5761384d614db3565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101849052908c16918d9185917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a4509998505050505050505050565b5f808251602e1461399f5760405162461bcd60e51b81526004016105ca90615597565b5f805b60028110156139ee576139b6816001615539565b6139c1906008615307565b61ffff168582815181106139d7576139d7615041565b016020015160f81c901b91909117906001016139a2565b5061ffff811615613a115760405162461bcd60e51b81526004016105ca906155e0565b5f805b6004811015613a6c57613a28816003615539565b613a33906008615307565b63ffffffff1686613a458360026152d2565b81518110613a5557613a55615041565b016020015160f81c901b9190911790600101613a14565b5063ffffffff8116600514613a935760405162461bcd60e51b81526004016105ca90615623565b5f805b6020811015613ae857613aaa81601f615539565b613ab5906008615307565b87613ac18360066152d2565b81518110613ad157613ad1615041565b016020015160f81c901b9190911790600101613a96565b505f805b6008811015613b4757613b00816007615539565b613b0b906008615307565b6001600160401b031688613b208360266152d2565b81518110613b3057613b30615041565b016020015160f81c901b9190911790600101613aec565b5090969095509350505050565b604080516080810182527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb045460208301527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0554928201929092527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06546001600160401b031660608201525f80516020615854833981519152914291901580613c3a575060028301548151613c36916001600160401b0316906152d2565b8210155b15613c60576001600160401b038516606082015281815260408101516020820152613c7f565b8481606001818151613c72919061531e565b6001600160401b03169052505b6060810151613c8f90606461566a565b602082015160028501546001600160401b039290921691613cba9190600160401b900460ff16615307565b1015613d1e5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b60648201526084016105ca565b8315613d4757846001600160401b031681604001818151613d3f91906152d2565b905250613d66565b846001600160401b031681604001818151613d629190615539565b9052505b805160038401556020810151600484015560408101516005840155606001516006909201805467ffffffffffffffff19166001600160401b0390931692909217909155505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613df757604051631afcd79f60e31b815260040160405180910390fd5b565b613e01613dae565b613e0a816143ef565b613e12614408565b612231608082013560a0830135613e2f60e0850160c08601614d9a565b613e40610100860160e08701615695565b61ffff16613e56610120870161010088016156ae565b613e6861014088016101208901614fda565b614418565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff16613ef85760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b60648201526084016105ca565b5f8051602061585483398151915242613f176040860160208701614d9a565b6001600160401b031611613f895760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b60648201526084016105ca565b613f996040850160208601614d9a565b6001600160401b0316613faf6202a300426152d2565b116140225760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e2066757475726500000000000000000060648201526084016105ca565b83356140405760405162461bcd60e51b81526004016105ca9061519c565b83355f9081526009820160205260409020541561406f5760405162461bcd60e51b81526004016105ca906151dd565b61407c60408501856156ce565b905060301461409d5760405162461bcd60e51b81526004016105ca90615225565b6140a6836143e4565b5f806141406040518060a0016040528085600101548152602001885f01358152602001876001600160401b031681526020018860200160208101906140eb9190614d9a565b6001600160401b0316815260200161410660408a018a6156ce565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525061465c565b5f8281526007860160205260409020919350915061415e8282615754565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061418b908590600401614ed3565b6020604051808303815f875af11580156141a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141cb9190614f05565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff1916600183600581111561424357614243614db3565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b91614323918e01908e01614d9a565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b804710156143745760405163cd78605960e01b81523060048201526024016105ca565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146143bd576040519150601f19603f3d011682016040523d82523d5f602084013e6143c2565b606091505b5050905080611dd257604051630a12f52160e11b815260040160405180910390fd5b612231816001613b54565b6143f7613dae565b6143ff614a0b565b61223181614a13565b614410613dae565b613df7614bb5565b614420613dae565b5f805160206158148339815191528361448c5760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b60648201526084016105ca565b6127108411156144ae5760405162461bcd60e51b81526004016105ca9061554c565b858711156145165760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b60648201526084016105ca565b5f8360ff16116145835760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b60648201526084016105ca565b600a60ff841611156145f55760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b60648201526084016105ca565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b5f60608260800151516030146146c65760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b60648201526084016105ca565b60408051608680825260c082019092525f916020820181803683370190505090505f5b600281101561473d576146fd816001615539565b614708906008615307565b5081515f9083908390811061471f5761471f615041565b60200101906001600160f81b03191690815f1a9053506001016146e9565b505f5b60048110156147a557614754816003615539565b61475f906008615307565b600160ff919091161c60f81b826147778360026152d2565b8151811061478757614787615041565b60200101906001600160f81b03191690815f1a905350600101614740565b505f5b602081101561480257845181602081106147c4576147c4615041565b1a60f81b826147d48360066152d2565b815181106147e4576147e4615041565b60200101906001600160f81b03191690815f1a9053506001016147a8565b505f5b6020811015614862578460200151816020811061482457614824615041565b1a60f81b826148348360266152d2565b8151811061484457614844615041565b60200101906001600160f81b03191690815f1a905350600101614805565b505f5b60088110156148d657614879816007615539565b614884906008615307565b60ff1685604001516001600160401b0316901c60f81b828260466148a891906152d2565b815181106148b8576148b8615041565b60200101906001600160f81b03191690815f1a905350600101614865565b505f5b603081101561494157846080015181815181106148f8576148f8615041565b01602001516001600160f81b0319168261491383604e6152d2565b8151811061492357614923615041565b60200101906001600160f81b03191690815f1a9053506001016148d9565b505f5b60088110156149b357614958816007615539565b614963906008615307565b60608601516001600160401b0390811691161c60f81b8261498583607e6152d2565b8151811061499557614995615041565b60200101906001600160f81b03191690815f1a905350600101614944565b506002816040516149c491906152c1565b602060405180830381855afa1580156149df573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614a029190614f05565b94909350915050565b613df7613dae565b614a1b613dae565b80355f8051602061585483398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01556014614a6760808401606085016156ae565b60ff161115614ad45760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b60648201526084016105ca565b5f614ae560808401606085016156ae565b60ff1611614b4d5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b60648201526084016105ca565b614b5d60808301606084016156ae565b60028201805460ff92909216600160401b0260ff60401b19909216919091179055614b8e6060830160408401614d9a565b600291909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612753613dae565b508054614bc99061533e565b5f825580601f10614bd8575050565b601f0160209004905f5260205f209081019061223191905b80821115614c03575f8155600101614bf0565b5090565b8015158114612231575f80fd5b803563ffffffff81168114611e03575f80fd5b5f805f60608486031215614c39575f80fd5b833592506020840135614c4b81614c07565b9150614c5960408501614c14565b90509250925092565b5f60208284031215614c72575f80fd5b5035919050565b5f6101408284031215614c8a575f80fd5b50919050565b803561ffff81168114611e03575f80fd5b80356001600160401b0381168114611e03575f80fd5b5f805f60608486031215614cc9575f80fd5b83356001600160401b03811115614cde575f80fd5b840160608187031215614cef575f80fd5b9250614cfd60208501614c90565b9150614c5960408501614ca1565b5f60208284031215614d1b575f80fd5b610bcf82614c14565b5f8060408385031215614d35575f80fd5b614d3e83614c14565b946020939093013593505050565b5f8060408385031215614d5d575f80fd5b82356001600160401b03811115614d72575f80fd5b830160808186031215614d83575f80fd5b9150614d9160208401614c14565b90509250929050565b5f60208284031215614daa575f80fd5b610bcf82614ca1565b634e487b7160e01b5f52602160045260245ffd5b815160e082019060068110614dea57634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b0360408401511660408301526060830151614e2560608401826001600160401b03169052565b506080830151614e4060808401826001600160401b03169052565b5060a0830151614e5b60a08401826001600160401b03169052565b5060c0830151614e7660c08401826001600160401b03169052565b5092915050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03828116828216039080821115614e7657614e76614e7d565b5f5b83811015614ecb578181015183820152602001614eb3565b50505f910152565b602081525f8251806020840152614ef1816040850160208701614eb1565b601f01601f19169190910160400192915050565b5f60208284031215614f15575f80fd5b5051919050565b5f82614f3657634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b6001600160a01b0381168114612231575f80fd5b5f60208284031215614fea575f80fd5b8135610bcf81614fc6565b5f808335601e1984360301811261500a575f80fd5b8301803591506001600160401b03821115615023575f80fd5b6020019150600581901b360382131561503a575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615069575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156150a9576150a9615073565b60405290565b604051601f8201601f191681016001600160401b03811182821017156150d7576150d7615073565b604052919050565b5f6001600160401b038211156150f7576150f7615073565b50601f01601f191660200190565b5f60608236031215615115575f80fd5b61511d615087565b82358152602061512e818501614ca1565b8183015260408401356001600160401b0381111561514a575f80fd5b840136601f82011261515a575f80fd5b803561516d615168826150df565b6150af565b8181523684838501011115615180575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526021908201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496040820152601160fa1b606082015260800190565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b6020808252602d908201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260408201526c0d8d2c696caf240d8cadccee8d609b1b606082015260800190565b5f8551615283818460208a01614eb1565b80830190508581526001600160401b0360c01b8560c01b16602082015283516152b3816028840160208801614eb1565b016028019695505050505050565b5f8251615069818460208701614eb1565b80820180821115610b9c57610b9c614e7d565b5f63ffffffff8083168181036152fd576152fd614e7d565b6001019392505050565b8082028115828204841417610b9c57610b9c614e7d565b6001600160401b03818116838216019080821115614e7657614e76614e7d565b600181811c9082168061535257607f821691505b602082108103614c8a57634e487b7160e01b5f52602260045260245ffd5b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f84546153c98161533e565b806020870152604060018084165f81146153ea576001811461540657615433565b60ff19851660408a0152604084151560051b8a01019550615433565b895f5260205f205f5b8581101561542a5781548b820186015290830190880161540f565b8a016040019650505b509398975050505050505050565b8051611e0381614c07565b5f806040838503121561545d575f80fd5b82516001600160401b0380821115615473575f80fd5b9084019060608287031215615486575f80fd5b61548e615087565b825181526020808401516154a181614fc6565b828201526040840151838111156154b6575f80fd5b80850194505087601f8501126154ca575f80fd5b835192506154da615168846150df565b83815288828587010111156154ed575f80fd5b6154fc84838301848801614eb1565b80604084015250819550615511818801615441565b9450505050509250929050565b5f6001600160401b038083168181036152fd576152fd614e7d565b81810381811115610b9c57610b9c614e7d565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b0381811683821602808216919082811461568d5761568d614e7d565b505092915050565b5f602082840312156156a5575f80fd5b610bcf82614c90565b5f602082840312156156be575f80fd5b813560ff81168114610bcf575f80fd5b5f808335601e198436030181126156e3575f80fd5b8301803591506001600160401b038211156156fc575f80fd5b60200191503681900382131561503a575f80fd5b601f821115611dd257805f5260205f20601f840160051c810160208510156157355750805b601f840160051c820191505b81811015611651575f8155600101615741565b81516001600160401b0381111561576d5761576d615073565b6157818161577b845461533e565b84615710565b602080601f8311600181146157b4575f841561579d5750858301515b5f19600386901b1c1916600185901b17855561580b565b5f85815260208120601f198616915b828110156157e2578886015182559484019460019091019084016157c3565b50858210156157ff57878501515f19600388901b60f8161c191681555b505060018460011b0185555b50505050505056fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/staking/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/staking/PoAValidatorManager/PoAValidatorManager.go index 35bfa3b07..a4628fa89 100644 --- a/abi-bindings/go/staking/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/staking/PoAValidatorManager/PoAValidatorManager.go @@ -73,7 +73,7 @@ type ValidatorRegistrationInput struct { // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"startingWeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"messageNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"pChainBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"convertSubnetTxID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b506040516139dd3803806139dd83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6138908061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c80638da5cb5b1161009e578063bee0a03f1161006e578063bee0a03f14610267578063c974d1b61461027a578063d5f20ff614610294578063df93d8de146102b4578063f2fde38b146102be575f80fd5b80638da5cb5b146101ef57806397fb70d414610233578063a3a65e4814610246578063b771b3bc14610259575f80fd5b806361e2f490116100d957806361e2f4901461019657806366435abf146101a9578063715018a6146101d45780638994ab49146101dc575f80fd5b80630322ed981461010a5780630cdd09851461011f578063467ef06f14610170578063580a400614610183575b5f80fd5b61011d610118366004612dad565b6102d1565b005b61015d61012d366004612dad565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b61011d61017e366004612ddc565b61048f565b61011d610191366004612e1f565b61049d565b61011d6101a4366004612e55565b6105ab565b6101bc6101b7366004612dad565b610cf7565b6040516001600160401b039091168152602001610167565b61011d610d0b565b61015d6101ea366004612eb5565b610d1e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610167565b61011d610241366004612dad565b610d3a565b61011d610254366004612ddc565b610d4e565b61021b6005600160991b0181565b61011d610275366004612dad565b610f06565b610282601481565b60405160ff9091168152602001610167565b6102a76102a2366004612dad565b611015565b6040516101679190612f0e565b6101bc6202a30081565b61011d6102cc366004612fc4565b611108565b5f8181525f805160206138648339815191526020526040808220815160e0810190925280545f8051602061384483398151915293929190829060ff16600581111561031e5761031e612efa565b600581111561032f5761032f612efa565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091508151600581111561039e5761039e612efa565b146104085760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b60648201526084015b60405180910390fd5b6005600160991b016001600160a01b031663ee5b48eb61042d8584606001515f611142565b6040518263ffffffff1660e01b81526004016104499190613008565b6020604051808303815f875af1158015610465573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610489919061303a565b50505050565b61049881611367565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156104e15750825b90505f826001600160401b031660011480156104fc5750303b155b90508115801561050a575080155b156105285760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561055257845460ff60401b1916600160401b1785555b61055c87876116df565b83156105a257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f805160206138448339815191529060ff16156106485760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b60648201526084016103ff565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af919061303a565b8360200135146107115760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b60648201526084016103ff565b306107226060850160408601612fc4565b6001600160a01b0316146107945760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b60648201526084016103ff565b5f6107a26060850185613051565b9050116108015760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a206e6f20696e697469616c2076616c604482015266696461746f727360c81b60648201526084016103ff565b5f61080f6060850185613051565b91505063ffffffff811061087b5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20746f6f206d616e7920696e69746960448201526c616c2076616c696461746f727360981b60648201526084016103ff565b5f8435602086013560146108956060890160408a01612fc4565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff161015610c07575f6109156060890189613051565b8363ffffffff1681811061092b5761092b61309d565b905060200281019061093d91906130b1565b61094690613161565b8051909150806109685760405162461bcd60e51b81526004016103ff906131f8565b5f818152600988016020526040902054156109955760405162461bcd60e51b81526004016103ff90613239565b8160400151516030146109ba5760405162461bcd60e51b81526004016103ff90613281565b84825f0151836020015184604001516040516020016109dc94939291906132ce565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f91600291610a2a919061331d565b602060405180830381855afa158015610a45573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a68919061303a565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff19166001836005811115610af457610af4612efa565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155840151610ba7911686613342565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a35050508080610bff90613355565b9150506108f9565b50600584018190555f610c19866116fd565b90505f610c2982604001516118d7565b905080600285604051610c3c919061331d565b602060405180830381855afa158015610c57573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610c7a919061303a565b14610cde5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b60648201526084016103ff565b505050600a909201805460ff1916600117905550505050565b5f610d0182611015565b6080015192915050565b610d13611a40565b610d1c5f611a9b565b565b5f610d27611a40565b610d318383611b0b565b90505b92915050565b610d42611a40565b610d4b81611fef565b50565b5f805160206138448339815191525f610d66836116fd565b90505f80610d7783604001516122e5565b9150915080610dd95760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b60648201526084016103ff565b5f82815260078501602052604081208054610df390613377565b9050118015610e25575060015f83815260088601602052604090205460ff166005811115610e2357610e23612efa565b145b610e415760405162461bcd60e51b81526004016103ff906133a9565b5f8281526007850160205260408120610e5991612d63565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f80516020613844833981519152929190610f4e90613377565b9050118015610f80575060015f83815260088301602052604090205460ff166005811115610f7e57610f7e612efa565b145b610f9c5760405162461bcd60e51b81526004016103ff906133a9565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610fd591906004016133f0565b6020604051808303815f875af1158015610ff1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610498919061303a565b6040805160e080820183525f8083526020808401829052838501829052606084018290526080840182905260a0840182905260c084018290528582525f8051602061386483398151915290528390208351918201909352825491925f8051602061384483398151915292829060ff16600581111561109557611095612efa565b60058111156110a6576110a6612efa565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b611110611a40565b6001600160a01b03811661113957604051631e4fbdf760e01b81525f60048201526024016103ff565b610d4b81611a9b565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b60028110156111bb5761117b81600161347a565b61118690600861348d565b5081515f9083908390811061119d5761119d61309d565b60200101906001600160f81b03191690815f1a905350600101611167565b505f5b6004811015611226576111d281600361347a565b6111dd90600861348d565b600263ffffffff16901c60f81b828260026111f89190613342565b815181106112085761120861309d565b60200101906001600160f81b03191690815f1a9053506001016111be565b505f5b60208110156112885761123d81601f61347a565b61124890600861348d565b86901c60f81b8261125a836006613342565b8151811061126a5761126a61309d565b60200101906001600160f81b03191690815f1a905350600101611229565b505f5b60088110156112f35761129f81600761347a565b6112aa90600861348d565b6001600160401b038616901c60f81b826112c5836026613342565b815181106112d5576112d561309d565b60200101906001600160f81b03191690815f1a90535060010161128b565b505f5b600881101561135e5761130a81600761347a565b61131590600861348d565b6001600160401b038516901c60f81b8261133083602e613342565b815181106113405761134061309d565b60200101906001600160f81b03191690815f1a9053506001016112f6565b50949350505050565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290525f805160206138448339815191525f6113b6856116fd565b90505f806113c783604001516122e5565b91509150801561142c5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b60648201526084016103ff565b5f828152600885016020526040808220815160e081019092528054829060ff16600581111561145d5761145d612efa565b600581111561146e5761146e612efa565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f90825160058111156114df576114df612efa565b14806114fd57506001825160058111156114fb576114fb612efa565b145b61155c5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b60648201526084016103ff565b60038251600581111561157157611571612efa565b0361157e57506004611582565b5060055b6020808301515f908152600988019091526040812055818160058111156115ab576115ab612efa565b908160058111156115be576115be612efa565b9052505f84815260088701602052604090208251815484929190829060ff191660018360058111156115f2576115f2612efa565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055815160058111156116a6576116a6612efa565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b6116e7612486565b6116f0826124cf565b6116f9816124e8565b5050565b60408051606080820183525f8083526020830181905292820152905f805160206138448339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611772573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261179991908101906134b3565b91509150806117f95760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20496e76616c69642077617270206d60448201526565737361676560d01b60648201526084016103ff565b825482511461185c5760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b60648201526084016103ff565b60208201516001600160a01b0316156118cf5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b60648201526084016103ff565b509392505050565b5f81516026146118f95760405162461bcd60e51b81526004016103ff90613585565b5f805b60028110156119485761191081600161347a565b61191b90600861348d565b61ffff168482815181106119315761193161309d565b016020015160f81c901b91909117906001016118fc565b5061ffff81161561196b5760405162461bcd60e51b81526004016103ff906135ce565b5f805b60048110156119c65761198281600361347a565b61198d90600861348d565b63ffffffff168561199f836002613342565b815181106119af576119af61309d565b016020015160f81c901b919091179060010161196e565b5063ffffffff8116156119eb5760405162461bcd60e51b81526004016103ff90613611565b5f805b602081101561135e57611a0281601f61347a565b611a0d90600861348d565b86611a19836006613342565b81518110611a2957611a2961309d565b016020015160f81c901b91909117906001016119ee565b33611a727f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610d1c5760405163118cdaa760e01b81523360048201526024016103ff565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff16611b965760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b60648201526084016103ff565b5f8051602061384483398151915242611bb56040860160208701613658565b6001600160401b031611611c275760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b60648201526084016103ff565b611c376040850160208601613658565b6001600160401b0316611c4d6202a30042613342565b11611cc05760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e2066757475726500000000000000000060648201526084016103ff565b8335611cde5760405162461bcd60e51b81526004016103ff906131f8565b83355f90815260098201602052604090205415611d0d5760405162461bcd60e51b81526004016103ff90613239565b611d1a6040850185613671565b9050603014611d3b5760405162461bcd60e51b81526004016103ff90613281565b611d44836124f9565b5f80611dde6040518060a0016040528085600101548152602001885f01358152602001876001600160401b03168152602001886020016020810190611d899190613658565b6001600160401b03168152602001611da460408a018a613671565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250612504565b5f82815260078601602052604090209193509150611dfc82826136fe565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e29908590600401613008565b6020604051808303815f875af1158015611e45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e69919061303a565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff19166001836005811115611ee157611ee1612efa565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b91611fc1918e01908e01613658565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f8181525f805160206138648339815191526020526040808220815160e0810190925280545f8051602061384483398151915293929190829060ff16600581111561203c5761203c612efa565b600581111561204d5761204d612efa565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c090910152909150815160058111156120bf576120bf612efa565b1461211b5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b60648201526084016103ff565b61212881608001516128b3565b60038152426001600160401b031660c08201525f83815260088301602052604090208151815483929190829060ff1916600183600581111561216c5761216c612efa565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6122218461221b816128bd565b5f611142565b60405163ee5b48eb60e01b81529091505f906005600160991b019063ee5b48eb90612250908590600401613008565b6020604051808303815f875af115801561226c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612290919061303a565b6080840151604080516001600160401b039092168252426020830152919250829187917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a35050505050565b5f8082516027146123085760405162461bcd60e51b81526004016103ff90613585565b5f805b60028110156123575761231f81600161347a565b61232a90600861348d565b61ffff168582815181106123405761234061309d565b016020015160f81c901b919091179060010161230b565b5061ffff81161561237a5760405162461bcd60e51b81526004016103ff906135ce565b5f805b60048110156123d55761239181600361347a565b61239c90600861348d565b63ffffffff16866123ae836002613342565b815181106123be576123be61309d565b016020015160f81c901b919091179060010161237d565b5063ffffffff81166003146123fc5760405162461bcd60e51b81526004016103ff90613611565b5f805b60208110156124515761241381601f61347a565b61241e90600861348d565b8761242a836006613342565b8151811061243a5761243a61309d565b016020015160f81c901b91909117906001016123ff565b505f866026815181106124665761246661309d565b016020015191976001600160f81b03199092161515965090945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610d1c57604051631afcd79f60e31b815260040160405180910390fd5b6124d7612486565b6124df61294d565b610d4b81612955565b6124f0612486565b610d4b81612b01565b610d4b816001612b09565b5f606082608001515160301461256e5760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b60648201526084016103ff565b60408051608680825260c082019092525f916020820181803683370190505090505f5b60028110156125e5576125a581600161347a565b6125b090600861348d565b5081515f908390839081106125c7576125c761309d565b60200101906001600160f81b03191690815f1a905350600101612591565b505f5b600481101561264d576125fc81600361347a565b61260790600861348d565b600160ff919091161c60f81b8261261f836002613342565b8151811061262f5761262f61309d565b60200101906001600160f81b03191690815f1a9053506001016125e8565b505f5b60208110156126aa578451816020811061266c5761266c61309d565b1a60f81b8261267c836006613342565b8151811061268c5761268c61309d565b60200101906001600160f81b03191690815f1a905350600101612650565b505f5b602081101561270a57846020015181602081106126cc576126cc61309d565b1a60f81b826126dc836026613342565b815181106126ec576126ec61309d565b60200101906001600160f81b03191690815f1a9053506001016126ad565b505f5b600881101561277e5761272181600761347a565b61272c90600861348d565b60ff1685604001516001600160401b0316901c60f81b828260466127509190613342565b815181106127605761276061309d565b60200101906001600160f81b03191690815f1a90535060010161270d565b505f5b60308110156127e957846080015181815181106127a0576127a061309d565b01602001516001600160f81b031916826127bb83604e613342565b815181106127cb576127cb61309d565b60200101906001600160f81b03191690815f1a905350600101612781565b505f5b600881101561285b5761280081600761347a565b61280b90600861348d565b60608601516001600160401b0390811691161c60f81b8261282d83607e613342565b8151811061283d5761283d61309d565b60200101906001600160f81b03191690815f1a9053506001016127ec565b5060028160405161286c919061331d565b602060405180830381855afa158015612887573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906128aa919061303a565b94909350915050565b610d4b815f612b09565b5f8181525f805160206138648339815191526020526040812060020180545f8051602061384483398151915291600160401b9091046001600160401b0316906008612907836137bd565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b610d1c612486565b61295d612486565b80355f8051602061384483398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb015560146129a960808401606085016137d8565b60ff161115612a165760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b60648201526084016103ff565b5f612a2760808401606085016137d8565b60ff1611612a8f5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b60648201526084016103ff565b612a9f60808301606084016137d8565b60028201805460ff92909216600160401b0260ff60401b19909216919091179055612ad06060830160408401613658565b60028201805467ffffffffffffffff19166001600160401b0392909216919091179055600a01805460ff1916905550565b611110612486565b604080516080810182527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb045460208301527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0554928201929092527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06546001600160401b031660608201525f80516020613844833981519152914291901580612bef575060028301548151612beb916001600160401b031690613342565b8210155b15612c15576001600160401b038516606082015281815260408101516020820152612c34565b8481606001818151612c2791906137f8565b6001600160401b03169052505b6060810151612c44906064613818565b602082015160028501546001600160401b039290921691612c6f9190600160401b900460ff1661348d565b1015612cd35760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b60648201526084016103ff565b8315612cfc57846001600160401b031681604001818151612cf49190613342565b905250612d1b565b846001600160401b031681604001818151612d17919061347a565b9052505b805160038401556020810151600484015560408101516005840155606001516006909201805467ffffffffffffffff19166001600160401b0390931692909217909155505050565b508054612d6f90613377565b5f825580601f10612d7e575050565b601f0160209004905f5260205f2090810190610d4b91905b80821115612da9575f8155600101612d96565b5090565b5f60208284031215612dbd575f80fd5b5035919050565b803563ffffffff81168114612dd7575f80fd5b919050565b5f60208284031215612dec575f80fd5b610d3182612dc4565b5f60808284031215612e05575f80fd5b50919050565b6001600160a01b0381168114610d4b575f80fd5b5f8060a08385031215612e30575f80fd5b612e3a8484612df5565b91506080830135612e4a81612e0b565b809150509250929050565b5f8060408385031215612e66575f80fd5b82356001600160401b03811115612e7b575f80fd5b612e8785828601612df5565b925050612e9660208401612dc4565b90509250929050565b80356001600160401b0381168114612dd7575f80fd5b5f8060408385031215612ec6575f80fd5b82356001600160401b03811115612edb575f80fd5b830160608186031215612eec575f80fd5b9150612e9660208401612e9f565b634e487b7160e01b5f52602160045260245ffd5b815160e082019060068110612f3157634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b0360408401511660408301526060830151612f6c60608401826001600160401b03169052565b506080830151612f8760808401826001600160401b03169052565b5060a0830151612fa260a08401826001600160401b03169052565b5060c0830151612fbd60c08401826001600160401b03169052565b5092915050565b5f60208284031215612fd4575f80fd5b8135612fdf81612e0b565b9392505050565b5f5b83811015613000578181015183820152602001612fe8565b50505f910152565b602081525f8251806020840152613026816040850160208701612fe6565b601f01601f19169190910160400192915050565b5f6020828403121561304a575f80fd5b5051919050565b5f808335601e19843603018112613066575f80fd5b8301803591506001600160401b0382111561307f575f80fd5b6020019150600581901b3603821315613096575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126130c5575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715613105576131056130cf565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613133576131336130cf565b604052919050565b5f6001600160401b03821115613153576131536130cf565b50601f01601f191660200190565b5f60608236031215613171575f80fd5b6131796130e3565b82358152602061318a818501612e9f565b8183015260408401356001600160401b038111156131a6575f80fd5b840136601f8201126131b6575f80fd5b80356131c96131c48261313b565b61310b565b81815236848385010111156131dc575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526021908201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496040820152601160fa1b606082015260800190565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b6020808252602d908201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260408201526c0d8d2c696caf240d8cadccee8d609b1b606082015260800190565b5f85516132df818460208a01612fe6565b80830190508581526001600160401b0360c01b8560c01b166020820152835161330f816028840160208801612fe6565b016028019695505050505050565b5f82516130c5818460208701612fe6565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610d3457610d3461332e565b5f63ffffffff80831681810361336d5761336d61332e565b6001019392505050565b600181811c9082168061338b57607f821691505b602082108103612e0557634e487b7160e01b5f52602260045260245ffd5b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f845461340281613377565b806020870152604060018084165f8114613423576001811461343f5761346c565b60ff19851660408a0152604084151560051b8a0101955061346c565b895f5260205f205f5b858110156134635781548b8201860152908301908801613448565b8a016040019650505b509398975050505050505050565b81810381811115610d3457610d3461332e565b8082028115828204841417610d3457610d3461332e565b80518015158114612dd7575f80fd5b5f80604083850312156134c4575f80fd5b82516001600160401b03808211156134da575f80fd5b90840190606082870312156134ed575f80fd5b6134f56130e3565b8251815260208084015161350881612e0b565b8282015260408401518381111561351d575f80fd5b80850194505087601f850112613531575f80fd5b835192506135416131c48461313b565b8381528882858701011115613554575f80fd5b61356384838301848801612fe6565b806040840152508195506135788188016134a4565b9450505050509250929050565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b5f60208284031215613668575f80fd5b610d3182612e9f565b5f808335601e19843603018112613686575f80fd5b8301803591506001600160401b0382111561369f575f80fd5b602001915036819003821315613096575f80fd5b601f82111561049857805f5260205f20601f840160051c810160208510156136d85750805b601f840160051c820191505b818110156136f7575f81556001016136e4565b5050505050565b81516001600160401b03811115613717576137176130cf565b61372b816137258454613377565b846136b3565b602080601f83116001811461375e575f84156137475750858301515b5f19600386901b1c1916600185901b1785556137b5565b5f85815260208120601f198616915b8281101561378c5788860151825594840194600190910190840161376d565b50858210156137a957878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6001600160401b0380831681810361336d5761336d61332e565b5f602082840312156137e8575f80fd5b813560ff81168114612fdf575f80fd5b6001600160401b03818116838216019080821115612fbd57612fbd61332e565b6001600160401b0381811683821602808216919082811461383b5761383b61332e565b50509291505056fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", + Bin: "0x608060405234801561000f575f80fd5b506040516139d33803806139d383398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6138868061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c80638da5cb5b1161009e578063bee0a03f1161006e578063bee0a03f14610267578063c974d1b61461027a578063d5f20ff614610294578063df93d8de146102b4578063f2fde38b146102be575f80fd5b80638da5cb5b146101ef57806397fb70d414610233578063a3a65e4814610246578063b771b3bc14610259575f80fd5b806361e2f490116100d957806361e2f4901461019657806366435abf146101a9578063715018a6146101d45780638994ab49146101dc575f80fd5b80630322ed981461010a5780630cdd09851461011f578063467ef06f14610170578063580a400614610183575b5f80fd5b61011d610118366004612da3565b6102d1565b005b61015d61012d366004612da3565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b61011d61017e366004612dd2565b61048f565b61011d610191366004612e15565b61049d565b61011d6101a4366004612e4b565b6105ab565b6101bc6101b7366004612da3565b610cf7565b6040516001600160401b039091168152602001610167565b61011d610d0b565b61015d6101ea366004612eab565b610d1e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610167565b61011d610241366004612da3565b610d3a565b61011d610254366004612dd2565b610d4e565b61021b6005600160991b0181565b61011d610275366004612da3565b610f06565b610282601481565b60405160ff9091168152602001610167565b6102a76102a2366004612da3565b611015565b6040516101679190612f04565b6101bc6202a30081565b61011d6102cc366004612fba565b611108565b5f8181525f8051602061385a8339815191526020526040808220815160e0810190925280545f8051602061383a83398151915293929190829060ff16600581111561031e5761031e612ef0565b600581111561032f5761032f612ef0565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091508151600581111561039e5761039e612ef0565b146104085760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b60648201526084015b60405180910390fd5b6005600160991b016001600160a01b031663ee5b48eb61042d8584606001515f611142565b6040518263ffffffff1660e01b81526004016104499190612ffe565b6020604051808303815f875af1158015610465573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104899190613030565b50505050565b61049881611367565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156104e15750825b90505f826001600160401b031660011480156104fc5750303b155b90508115801561050a575080155b156105285760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561055257845460ff60401b1916600160401b1785555b61055c87876116df565b83156105a257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f8051602061383a8339815191529060ff16156106485760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b60648201526084016103ff565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af9190613030565b8360200135146107115760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b60648201526084016103ff565b306107226060850160408601612fba565b6001600160a01b0316146107945760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b60648201526084016103ff565b5f6107a26060850185613047565b9050116108015760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a206e6f20696e697469616c2076616c604482015266696461746f727360c81b60648201526084016103ff565b5f61080f6060850185613047565b91505063ffffffff811061087b5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20746f6f206d616e7920696e69746960448201526c616c2076616c696461746f727360981b60648201526084016103ff565b5f8435602086013560146108956060890160408a01612fba565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff161015610c07575f6109156060890189613047565b8363ffffffff1681811061092b5761092b613093565b905060200281019061093d91906130a7565b61094690613157565b8051909150806109685760405162461bcd60e51b81526004016103ff906131ee565b5f818152600988016020526040902054156109955760405162461bcd60e51b81526004016103ff9061322f565b8160400151516030146109ba5760405162461bcd60e51b81526004016103ff90613277565b84825f0151836020015184604001516040516020016109dc94939291906132c4565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f91600291610a2a9190613313565b602060405180830381855afa158015610a45573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a689190613030565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff19166001836005811115610af457610af4612ef0565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155840151610ba7911686613338565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a35050508080610bff9061334b565b9150506108f9565b50600584018190555f610c19866116fd565b90505f610c2982604001516118d7565b905080600285604051610c3c9190613313565b602060405180830381855afa158015610c57573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610c7a9190613030565b14610cde5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b60648201526084016103ff565b505050600a909201805460ff1916600117905550505050565b5f610d0182611015565b6080015192915050565b610d13611a40565b610d1c5f611a9b565b565b5f610d27611a40565b610d318383611b0b565b90505b92915050565b610d42611a40565b610d4b81611fef565b50565b5f8051602061383a8339815191525f610d66836116fd565b90505f80610d7783604001516122e5565b9150915080610dd95760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b60648201526084016103ff565b5f82815260078501602052604081208054610df39061336d565b9050118015610e25575060015f83815260088601602052604090205460ff166005811115610e2357610e23612ef0565b145b610e415760405162461bcd60e51b81526004016103ff9061339f565b5f8281526007850160205260408120610e5991612d59565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f8051602061383a833981519152929190610f4e9061336d565b9050118015610f80575060015f83815260088301602052604090205460ff166005811115610f7e57610f7e612ef0565b145b610f9c5760405162461bcd60e51b81526004016103ff9061339f565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610fd591906004016133e6565b6020604051808303815f875af1158015610ff1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104989190613030565b6040805160e080820183525f8083526020808401829052838501829052606084018290526080840182905260a0840182905260c084018290528582525f8051602061385a83398151915290528390208351918201909352825491925f8051602061383a83398151915292829060ff16600581111561109557611095612ef0565b60058111156110a6576110a6612ef0565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b611110611a40565b6001600160a01b03811661113957604051631e4fbdf760e01b81525f60048201526024016103ff565b610d4b81611a9b565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b60028110156111bb5761117b816001613470565b611186906008613483565b5081515f9083908390811061119d5761119d613093565b60200101906001600160f81b03191690815f1a905350600101611167565b505f5b6004811015611226576111d2816003613470565b6111dd906008613483565b600263ffffffff16901c60f81b828260026111f89190613338565b8151811061120857611208613093565b60200101906001600160f81b03191690815f1a9053506001016111be565b505f5b60208110156112885761123d81601f613470565b611248906008613483565b86901c60f81b8261125a836006613338565b8151811061126a5761126a613093565b60200101906001600160f81b03191690815f1a905350600101611229565b505f5b60088110156112f35761129f816007613470565b6112aa906008613483565b6001600160401b038616901c60f81b826112c5836026613338565b815181106112d5576112d5613093565b60200101906001600160f81b03191690815f1a90535060010161128b565b505f5b600881101561135e5761130a816007613470565b611315906008613483565b6001600160401b038516901c60f81b8261133083602e613338565b8151811061134057611340613093565b60200101906001600160f81b03191690815f1a9053506001016112f6565b50949350505050565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290525f8051602061383a8339815191525f6113b6856116fd565b90505f806113c783604001516122e5565b91509150801561142c5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b60648201526084016103ff565b5f828152600885016020526040808220815160e081019092528054829060ff16600581111561145d5761145d612ef0565b600581111561146e5761146e612ef0565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f90825160058111156114df576114df612ef0565b14806114fd57506001825160058111156114fb576114fb612ef0565b145b61155c5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b60648201526084016103ff565b60038251600581111561157157611571612ef0565b0361157e57506004611582565b5060055b6020808301515f908152600988019091526040812055818160058111156115ab576115ab612ef0565b908160058111156115be576115be612ef0565b9052505f84815260088701602052604090208251815484929190829060ff191660018360058111156115f2576115f2612ef0565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055815160058111156116a6576116a6612ef0565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b6116e7612486565b6116f0826124cf565b6116f9816124e8565b5050565b60408051606080820183525f8083526020830181905292820152905f8051602061383a8339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611772573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261179991908101906134a9565b91509150806117f95760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20496e76616c69642077617270206d60448201526565737361676560d01b60648201526084016103ff565b825482511461185c5760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b60648201526084016103ff565b60208201516001600160a01b0316156118cf5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b60648201526084016103ff565b509392505050565b5f81516026146118f95760405162461bcd60e51b81526004016103ff9061357b565b5f805b600281101561194857611910816001613470565b61191b906008613483565b61ffff1684828151811061193157611931613093565b016020015160f81c901b91909117906001016118fc565b5061ffff81161561196b5760405162461bcd60e51b81526004016103ff906135c4565b5f805b60048110156119c657611982816003613470565b61198d906008613483565b63ffffffff168561199f836002613338565b815181106119af576119af613093565b016020015160f81c901b919091179060010161196e565b5063ffffffff8116156119eb5760405162461bcd60e51b81526004016103ff90613607565b5f805b602081101561135e57611a0281601f613470565b611a0d906008613483565b86611a19836006613338565b81518110611a2957611a29613093565b016020015160f81c901b91909117906001016119ee565b33611a727f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610d1c5760405163118cdaa760e01b81523360048201526024016103ff565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff16611b965760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b60648201526084016103ff565b5f8051602061383a83398151915242611bb5604086016020870161364e565b6001600160401b031611611c275760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b60648201526084016103ff565b611c37604085016020860161364e565b6001600160401b0316611c4d6202a30042613338565b11611cc05760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e2066757475726500000000000000000060648201526084016103ff565b8335611cde5760405162461bcd60e51b81526004016103ff906131ee565b83355f90815260098201602052604090205415611d0d5760405162461bcd60e51b81526004016103ff9061322f565b611d1a6040850185613667565b9050603014611d3b5760405162461bcd60e51b81526004016103ff90613277565b611d44836124f9565b5f80611dde6040518060a0016040528085600101548152602001885f01358152602001876001600160401b03168152602001886020016020810190611d89919061364e565b6001600160401b03168152602001611da460408a018a613667565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250612504565b5f82815260078601602052604090209193509150611dfc82826136f4565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e29908590600401612ffe565b6020604051808303815f875af1158015611e45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e699190613030565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff19166001836005811115611ee157611ee1612ef0565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b91611fc1918e01908e0161364e565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f8181525f8051602061385a8339815191526020526040808220815160e0810190925280545f8051602061383a83398151915293929190829060ff16600581111561203c5761203c612ef0565b600581111561204d5761204d612ef0565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c090910152909150815160058111156120bf576120bf612ef0565b1461211b5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b60648201526084016103ff565b61212881608001516128b3565b60038152426001600160401b031660c08201525f83815260088301602052604090208151815483929190829060ff1916600183600581111561216c5761216c612ef0565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6122218461221b816128bd565b5f611142565b60405163ee5b48eb60e01b81529091505f906005600160991b019063ee5b48eb90612250908590600401612ffe565b6020604051808303815f875af115801561226c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122909190613030565b6080840151604080516001600160401b039092168252426020830152919250829187917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a35050505050565b5f8082516027146123085760405162461bcd60e51b81526004016103ff9061357b565b5f805b60028110156123575761231f816001613470565b61232a906008613483565b61ffff1685828151811061234057612340613093565b016020015160f81c901b919091179060010161230b565b5061ffff81161561237a5760405162461bcd60e51b81526004016103ff906135c4565b5f805b60048110156123d557612391816003613470565b61239c906008613483565b63ffffffff16866123ae836002613338565b815181106123be576123be613093565b016020015160f81c901b919091179060010161237d565b5063ffffffff81166003146123fc5760405162461bcd60e51b81526004016103ff90613607565b5f805b60208110156124515761241381601f613470565b61241e906008613483565b8761242a836006613338565b8151811061243a5761243a613093565b016020015160f81c901b91909117906001016123ff565b505f8660268151811061246657612466613093565b016020015191976001600160f81b03199092161515965090945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610d1c57604051631afcd79f60e31b815260040160405180910390fd5b6124d7612486565b6124df61294d565b610d4b81612955565b6124f0612486565b610d4b81612af7565b610d4b816001612aff565b5f606082608001515160301461256e5760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b60648201526084016103ff565b60408051608680825260c082019092525f916020820181803683370190505090505f5b60028110156125e5576125a5816001613470565b6125b0906008613483565b5081515f908390839081106125c7576125c7613093565b60200101906001600160f81b03191690815f1a905350600101612591565b505f5b600481101561264d576125fc816003613470565b612607906008613483565b600160ff919091161c60f81b8261261f836002613338565b8151811061262f5761262f613093565b60200101906001600160f81b03191690815f1a9053506001016125e8565b505f5b60208110156126aa578451816020811061266c5761266c613093565b1a60f81b8261267c836006613338565b8151811061268c5761268c613093565b60200101906001600160f81b03191690815f1a905350600101612650565b505f5b602081101561270a57846020015181602081106126cc576126cc613093565b1a60f81b826126dc836026613338565b815181106126ec576126ec613093565b60200101906001600160f81b03191690815f1a9053506001016126ad565b505f5b600881101561277e57612721816007613470565b61272c906008613483565b60ff1685604001516001600160401b0316901c60f81b828260466127509190613338565b8151811061276057612760613093565b60200101906001600160f81b03191690815f1a90535060010161270d565b505f5b60308110156127e957846080015181815181106127a0576127a0613093565b01602001516001600160f81b031916826127bb83604e613338565b815181106127cb576127cb613093565b60200101906001600160f81b03191690815f1a905350600101612781565b505f5b600881101561285b57612800816007613470565b61280b906008613483565b60608601516001600160401b0390811691161c60f81b8261282d83607e613338565b8151811061283d5761283d613093565b60200101906001600160f81b03191690815f1a9053506001016127ec565b5060028160405161286c9190613313565b602060405180830381855afa158015612887573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906128aa9190613030565b94909350915050565b610d4b815f612aff565b5f8181525f8051602061385a8339815191526020526040812060020180545f8051602061383a83398151915291600160401b9091046001600160401b0316906008612907836137b3565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b610d1c612486565b61295d612486565b80355f8051602061383a83398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb015560146129a960808401606085016137ce565b60ff161115612a165760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b60648201526084016103ff565b5f612a2760808401606085016137ce565b60ff1611612a8f5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b60648201526084016103ff565b612a9f60808301606084016137ce565b60028201805460ff92909216600160401b0260ff60401b19909216919091179055612ad0606083016040840161364e565b600291909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b611110612486565b604080516080810182527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb045460208301527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0554928201929092527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06546001600160401b031660608201525f8051602061383a833981519152914291901580612be5575060028301548151612be1916001600160401b031690613338565b8210155b15612c0b576001600160401b038516606082015281815260408101516020820152612c2a565b8481606001818151612c1d91906137ee565b6001600160401b03169052505b6060810151612c3a90606461380e565b602082015160028501546001600160401b039290921691612c659190600160401b900460ff16613483565b1015612cc95760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b60648201526084016103ff565b8315612cf257846001600160401b031681604001818151612cea9190613338565b905250612d11565b846001600160401b031681604001818151612d0d9190613470565b9052505b805160038401556020810151600484015560408101516005840155606001516006909201805467ffffffffffffffff19166001600160401b0390931692909217909155505050565b508054612d659061336d565b5f825580601f10612d74575050565b601f0160209004905f5260205f2090810190610d4b91905b80821115612d9f575f8155600101612d8c565b5090565b5f60208284031215612db3575f80fd5b5035919050565b803563ffffffff81168114612dcd575f80fd5b919050565b5f60208284031215612de2575f80fd5b610d3182612dba565b5f60808284031215612dfb575f80fd5b50919050565b6001600160a01b0381168114610d4b575f80fd5b5f8060a08385031215612e26575f80fd5b612e308484612deb565b91506080830135612e4081612e01565b809150509250929050565b5f8060408385031215612e5c575f80fd5b82356001600160401b03811115612e71575f80fd5b612e7d85828601612deb565b925050612e8c60208401612dba565b90509250929050565b80356001600160401b0381168114612dcd575f80fd5b5f8060408385031215612ebc575f80fd5b82356001600160401b03811115612ed1575f80fd5b830160608186031215612ee2575f80fd5b9150612e8c60208401612e95565b634e487b7160e01b5f52602160045260245ffd5b815160e082019060068110612f2757634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b0360408401511660408301526060830151612f6260608401826001600160401b03169052565b506080830151612f7d60808401826001600160401b03169052565b5060a0830151612f9860a08401826001600160401b03169052565b5060c0830151612fb360c08401826001600160401b03169052565b5092915050565b5f60208284031215612fca575f80fd5b8135612fd581612e01565b9392505050565b5f5b83811015612ff6578181015183820152602001612fde565b50505f910152565b602081525f825180602084015261301c816040850160208701612fdc565b601f01601f19169190910160400192915050565b5f60208284031215613040575f80fd5b5051919050565b5f808335601e1984360301811261305c575f80fd5b8301803591506001600160401b03821115613075575f80fd5b6020019150600581901b360382131561308c575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126130bb575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156130fb576130fb6130c5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613129576131296130c5565b604052919050565b5f6001600160401b03821115613149576131496130c5565b50601f01601f191660200190565b5f60608236031215613167575f80fd5b61316f6130d9565b823581526020613180818501612e95565b8183015260408401356001600160401b0381111561319c575f80fd5b840136601f8201126131ac575f80fd5b80356131bf6131ba82613131565b613101565b81815236848385010111156131d2575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526021908201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496040820152601160fa1b606082015260800190565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b6020808252602d908201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260408201526c0d8d2c696caf240d8cadccee8d609b1b606082015260800190565b5f85516132d5818460208a01612fdc565b80830190508581526001600160401b0360c01b8560c01b1660208201528351613305816028840160208801612fdc565b016028019695505050505050565b5f82516130bb818460208701612fdc565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610d3457610d34613324565b5f63ffffffff80831681810361336357613363613324565b6001019392505050565b600181811c9082168061338157607f821691505b602082108103612dfb57634e487b7160e01b5f52602260045260245ffd5b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f84546133f88161336d565b806020870152604060018084165f8114613419576001811461343557613462565b60ff19851660408a0152604084151560051b8a01019550613462565b895f5260205f205f5b858110156134595781548b820186015290830190880161343e565b8a016040019650505b509398975050505050505050565b81810381811115610d3457610d34613324565b8082028115828204841417610d3457610d34613324565b80518015158114612dcd575f80fd5b5f80604083850312156134ba575f80fd5b82516001600160401b03808211156134d0575f80fd5b90840190606082870312156134e3575f80fd5b6134eb6130d9565b825181526020808401516134fe81612e01565b82820152604084015183811115613513575f80fd5b80850194505087601f850112613527575f80fd5b835192506135376131ba84613131565b838152888285870101111561354a575f80fd5b61355984838301848801612fdc565b8060408401525081955061356e81880161349a565b9450505050509250929050565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b5f6020828403121561365e575f80fd5b610d3182612e95565b5f808335601e1984360301811261367c575f80fd5b8301803591506001600160401b03821115613695575f80fd5b60200191503681900382131561308c575f80fd5b601f82111561049857805f5260205f20601f840160051c810160208510156136ce5750805b601f840160051c820191505b818110156136ed575f81556001016136da565b5050505050565b81516001600160401b0381111561370d5761370d6130c5565b6137218161371b845461336d565b846136a9565b602080601f831160018114613754575f841561373d5750858301515b5f19600386901b1c1916600185901b1785556137ab565b5f85815260208120601f198616915b8281101561378257888601518255948401946001909101908401613763565b508582101561379f57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6001600160401b0380831681810361336357613363613324565b5f602082840312156137de575f80fd5b813560ff81168114612fd5575f80fd5b6001600160401b03818116838216019080821115612fb357612fb3613324565b6001600160401b0381811683821602808216919082811461383157613831613324565b50509291505056fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/staking/ValidatorManager.sol b/contracts/staking/ValidatorManager.sol index eec31de9f..d3999179c 100644 --- a/contracts/staking/ValidatorManager.sol +++ b/contracts/staking/ValidatorManager.sol @@ -105,7 +105,6 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida ); $._maximumChurnPercentage = settings.maximumChurnPercentage; $._churnPeriodSeconds = settings.churnPeriodSeconds; - $._initializedValidatorSet = false; } modifier initializedValidatorSet() {