1.23m txs
1.59m calls
constructor
constructor(address[] hotAddresses, address[] coldAddresses, uint64[] powers, address usdcAddress, uint64 _disputePeriodSeconds, uint64 _blockDurationMillis, uint64 _lockerThreshold)
functions
blockDurationMillis
viewfunction blockDurationMillis() view returns (uint64)
coldValidatorSetHash
viewfunction coldValidatorSetHash() view returns (bytes32)
disputePeriodSeconds
viewfunction disputePeriodSeconds() view returns (uint64)
epoch
viewfunction epoch() view returns (uint64)
finalizedWithdrawals
viewfunction finalizedWithdrawals(bytes32) view returns (bool)
finalizers
viewfunction finalizers(address) view returns (bool)
getLockersVotingLock
viewfunction getLockersVotingLock() view returns (address[])
hotValidatorSetHash
viewfunction hotValidatorSetHash() view returns (bytes32)
isVotingLock
viewfunction isVotingLock(address locker) view returns (bool)
lockers
viewfunction lockers(address) view returns (bool)
lockerThreshold
viewfunction lockerThreshold() view returns (uint64)
nValidators
viewfunction nValidators() view returns (uint64)
paused
viewfunction paused() view returns (bool)
pendingValidatorSetUpdate
viewfunction pendingValidatorSetUpdate() view returns (uint64 epoch, uint64 totalValidatorPower, uint64 updateTime, uint64 updateBlockNumber, uint64 nValidators, bytes32 hotValidatorSetHash, bytes32 coldValidatorSetHash)
requestedWithdrawals
viewfunction requestedWithdrawals(bytes32) view returns (address user, address destination, uint64 usd, uint64 nonce, uint64 requestedTime, uint64 requestedBlockNumber, bytes32 message)
totalValidatorPower
viewfunction totalValidatorPower() view returns (uint64)
usdcToken
viewfunction usdcToken() view returns (address)
usedMessages
viewfunction usedMessages(bytes32) view returns (bool)
withdrawalsInvalidated
viewfunction withdrawalsInvalidated(bytes32) view returns (bool)
batchedDepositWithPermit
nonpayablefunction batchedDepositWithPermit(tuple[] deposits)
batchedFinalizeWithdrawals
nonpayablefunction batchedFinalizeWithdrawals(bytes32[] messages)
batchedRequestWithdrawals
nonpayablefunction batchedRequestWithdrawals(tuple[] withdrawalRequests, tuple hotValidatorSet)
changeBlockDurationMillis
nonpayablefunction changeBlockDurationMillis(uint64 newBlockDurationMillis, uint64 nonce, tuple activeColdValidatorSet, tuple[] signatures)
changeDisputePeriodSeconds
nonpayablefunction changeDisputePeriodSeconds(uint64 newDisputePeriodSeconds, uint64 nonce, tuple activeColdValidatorSet, tuple[] signatures)
changeLockerThreshold
nonpayablefunction changeLockerThreshold(uint64 newLockerThreshold, uint64 nonce, tuple activeColdValidatorSet, tuple[] signatures)
emergencyUnlock
nonpayablefunction emergencyUnlock(tuple newValidatorSet, tuple activeColdValidatorSet, tuple[] signatures, uint64 nonce)
finalizeValidatorSetUpdate
nonpayablefunction finalizeValidatorSetUpdate()
invalidateWithdrawals
nonpayablefunction invalidateWithdrawals(bytes32[] messages, uint64 nonce, tuple activeColdValidatorSet, tuple[] signatures)
modifyFinalizer
nonpayablefunction modifyFinalizer(address finalizer, bool _isFinalizer, uint64 nonce, tuple activeValidatorSet, tuple[] signatures)
modifyLocker
nonpayablefunction modifyLocker(address locker, bool _isLocker, uint64 nonce, tuple activeValidatorSet, tuple[] signatures)
unvoteEmergencyLock
nonpayablefunction unvoteEmergencyLock()
updateValidatorSet
nonpayablefunction updateValidatorSet(tuple newValidatorSet, tuple activeHotValidatorSet, tuple[] signatures)
voteEmergencyLock
nonpayablefunction voteEmergencyLock()
events
ChangedBlockDurationMillis
event ChangedBlockDurationMillis(uint64 newBlockDurationMillis)
ChangedDisputePeriodSeconds
event ChangedDisputePeriodSeconds(uint64 newDisputePeriodSeconds)
ChangedLockerThreshold
event ChangedLockerThreshold(uint64 newLockerThreshold)
Deposit
event Deposit(address indexed user, uint64 usd)
FailedPermitDeposit
event FailedPermitDeposit(address user, uint64 usd, uint32 errorCode)
FailedWithdrawal
event FailedWithdrawal(bytes32 message, uint32 errorCode)
FinalizedValidatorSetUpdate
event FinalizedValidatorSetUpdate(uint64 epoch, bytes32 hotValidatorSetHash, bytes32 coldValidatorSetHash)
FinalizedWithdrawal
event FinalizedWithdrawal(address indexed user, address destination, uint64 usd, uint64 nonce, bytes32 message)
InvalidatedWithdrawal
event InvalidatedWithdrawal((address user, address destination, uint64 usd, uint64 nonce, uint64 requestedTime, uint64 requestedBlockNumber, bytes32 message) withdrawal)
ModifiedFinalizer
event ModifiedFinalizer(address indexed finalizer, bool isFinalizer)
ModifiedLocker
event ModifiedLocker(address indexed locker, bool isLocker)
Paused
event Paused(address account)
RequestedValidatorSetUpdate
event RequestedValidatorSetUpdate(uint64 epoch, bytes32 hotValidatorSetHash, bytes32 coldValidatorSetHash, uint64 updateTime)
RequestedWithdrawal
event RequestedWithdrawal(address indexed user, address destination, uint64 usd, uint64 nonce, bytes32 message, uint64 requestedTime)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60a06040523480156200001157600080fd5b50604051620056ad380380620056ad833981016040819052620000349162000849565b6000805460ff191681556001808055604080518082018252600881526745786368616e676560c01b60209182015281518083018352928352603160f81b9281019290925280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527fddd112a261429abc594f5771eb08d7fa47bff456b2e5f1a47907b78573e33d96818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015246608082015260a0808201949094528151808203909401845260c001905281519101206080526200011b8562000478565b600e60086101000a8154816001600160401b0302191690836001600160401b031602179055508551875114620001ac5760405162461bcd60e51b815260206004820152602b60248201527f486f7420616e6420636f6c642076616c696461746f722073657473206c656e6760448201526a0e8d040dad2e6dac2e8c6d60ab1b60648201526084015b60405180910390fd5b8651600f80546001600160401b0319166001600160401b03909216919091179055604080516060808201835260008083526020808401839052928401829052835191820184528082529181018a90529182018790526200020c8262000563565b6003819055604080516060808201835260008083526020808401839052928401829052835191820184528082529181018c90529182018a905291925090620002548262000563565b6004819055600280546001600160a01b0319166001600160a01b038b16179055600e80546001600160801b0316600160801b6001600160401b038b8116919091026001600160c01b031691909117600160c01b8a83160217909155600c80546001600160401b0319169188169190911790559050620002d38b62000600565b600354600454604080516000815260208101939093528201526001600160401b03421660608201527f420bbe99bd2c52ec500d33614359525f3ef7bb3358c0e07d1312db0941cbf2f49060800160405180910390a16040805160e0810182526000808252600e546801000000000000000090046001600160401b031660208301529181019190915260608101620003696200069c565b6001600160401b039081168252600f54811660208084019190915260035460408085018290526004546060958601819052865160058054898701518a8601518b8b0151948a166001600160801b03199093169290921768010000000000000000918a1691909102176001600160801b0316600160801b918916919091026001600160c01b031617600160c01b928816929092029190911790556080870151600680546001600160401b031916919096161790945560a086015160075560c09095015160085584516000815291820152928301527f87da17ff65d815d1e1c369cb3bbda9a11af181b92dc52681a2779419781c6270910160405180910390a1505050505050505050505062000acf565b60008060005b8351816001600160401b03161015620004db5783816001600160401b031681518110620004af57620004af62000989565b602002602001015182620004c49190620009b5565b915080620004d281620009e3565b9150506200047e565b506000816001600160401b0316116200055d5760405162461bcd60e51b815260206004820152603460248201527f5375626d69747465642076616c696461746f7220706f77657273206d7573742060448201527f62652067726561746572207468616e207a65726f0000000000000000000000006064820152608401620001a3565b92915050565b600081604001515182602001515114620005c05760405162461bcd60e51b815260206004820152601760248201527f4d616c666f726d65642076616c696461746f72207365740000000000000000006044820152606401620001a3565b60208083015160408085015185519151600094620005e19493910162000a0d565b60408051601f1981840301815291905280516020909101209392505050565b805160005b816001600160401b0316816001600160401b031610156200069757600083826001600160401b03168151811062000640576200064062000989565b6020908102919091018101516001600160a01b03166000908152600a825260408082208054600160ff199182168117909255600d9094529120805490921617905550806200068e81620009e3565b91505062000605565b505050565b6000466105391415620006ae57504390565b60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620006e957600080fd5b505afa158015620006fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000724919062000ab5565b905090565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200076a576200076a62000729565b604052919050565b60006001600160401b038211156200078e576200078e62000729565b5060051b60200190565b80516001600160a01b0381168114620007b057600080fd5b919050565b600082601f830112620007c757600080fd5b81516020620007e0620007da8362000772565b6200073f565b82815260059290921b840181019181810190868411156200080057600080fd5b8286015b848110156200082657620008188162000798565b835291830191830162000804565b509695505050505050565b80516001600160401b0381168114620007b057600080fd5b600080600080600080600060e0888a0312156200086557600080fd5b87516001600160401b03808211156200087d57600080fd5b6200088b8b838c01620007b5565b985060209150818a015181811115620008a357600080fd5b620008b18c828d01620007b5565b98505060408a015181811115620008c757600080fd5b8a019050601f81018b13620008db57600080fd5b8051620008ec620007da8262000772565b81815260059190911b8201830190838101908d8311156200090c57600080fd5b928401925b828410156200093557620009258462000831565b8252928401929084019062000911565b80995050505050506200094b6060890162000798565b93506200095b6080890162000831565b92506200096b60a0890162000831565b91506200097b60c0890162000831565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03828116848216808303821115620009da57620009da6200099f565b01949350505050565b60006001600160401b038281168082141562000a035762000a036200099f565b6001019392505050565b606080825284519082018190526000906020906080840190828801845b8281101562000a515781516001600160a01b03168452928401929084019060010162000a2a565b5050508381038285015285518082528683019183019060005b8181101562000a915783516001600160401b03168352928401929184019160010162000a6a565b50506001600160401b0386166040860152925062000aad915050565b949350505050565b60006020828403121562000ac857600080fd5b5051919050565b608051614bc262000aeb60003960006120960152614bc26000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80635c975abb1161012a578063b091049c116100bd578063cea75eb71161008c578063e73ea41e11610071578063e73ea41e1461068f578063f8156a6e146106a2578063fc3f7ad3146106c257600080fd5b8063cea75eb714610659578063e3e6c4411461067c57600080fd5b8063b091049c14610574578063b30b5bce1461057c578063c10ee9ae1461058f578063c5bdf3ca1461064657600080fd5b80639770e2c8116100f95780639770e2c8146105055780639d5bc9e114610518578063a14238e714610548578063b0801e541461056b57600080fd5b80635c975abb146103d95780637694c6fa146103e4578063900cf0cf146104de57806391ed1344146104f257600080fd5b80631f12171f116101a25780634878ee53116101715780634878ee53146103865780634aad62101461038e57806353f79ef4146103a15780635a028400146103b657600080fd5b80631f12171f1461030a5780632c8e7a211461031d5780633a37326e14610350578063420828281461036357600080fd5b80630f711438116101de5780630f711438146102885780630fb61a2e1461029f57806311eac855146102b2578063180f2e8c146102f757600080fd5b806305355e2314610210578063058731e5146102425780630756183b1461024c5780630833c91a14610274575b600080fd5b600c546102249067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b61024a6106d5565b005b600e5461022490700100000000000000000000000000000000900467ffffffffffffffff1681565b600f546102249067ffffffffffffffff1681565b61029160045481565b604051908152602001610239565b61024a6102ad366004613fed565b6108d5565b6002546102d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610239565b61024a610305366004614104565b610a8f565b61024a61031836600461419c565b610c46565b61034061032b366004614306565b600a6020526000908152604090205460ff1681565b6040519015158152602001610239565b61034061035e366004614306565b610d48565b610340610371366004614321565b60126020526000908152604090205460ff1681565b61024a610dee565b61024a61039c36600461433a565b610faf565b6103a96110d3565b60405161023991906143d5565b6103406103c4366004614321565b60096020526000908152604090205460ff1681565b60005460ff16610340565b6104826103f2366004614321565b601060205260009081526040902080546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff928316939282169267ffffffffffffffff740100000000000000000000000000000000000000009093048316928181169268010000000000000000830482169270010000000000000000000000000000000090049091169087565b6040805173ffffffffffffffffffffffffffffffffffffffff988916815297909616602088015267ffffffffffffffff948516958701959095529183166060860152821660808501521660a083015260c082015260e001610239565b600e546102249067ffffffffffffffff1681565b61024a61050036600461433a565b611142565b61024a61051336600461448d565b61125a565b600e54610224907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b610340610556366004614321565b60116020526000908152604090205460ff1681565b61029160035481565b61024a611348565b61024a61058a36600461455d565b61148d565b6005546006546007546008546105fa9367ffffffffffffffff8082169468010000000000000000830482169470010000000000000000000000000000000084048316947801000000000000000000000000000000000000000000000000909404831693929091169187565b6040805167ffffffffffffffff98891681529688166020880152948716948601949094529185166060850152909316608083015260a082019290925260c081019190915260e001610239565b61024a610654366004614642565b6115eb565b610340610667366004614306565b600d6020526000908152604090205460ff1681565b61024a61068a3660046146b7565b6116cb565b61024a61069d366004614104565b6117cf565b600e546102249068010000000000000000900467ffffffffffffffff1681565b61024a6106d036600461433a565b611921565b60026001541415610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600155610754611a52565b61075d33611abf565b600554700100000000000000000000000000000000900467ffffffffffffffff1661080a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f50656e64696e672076616c696461746f72207365742075706461746520616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161073e565b6005546000906108569067ffffffffffffffff70010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416611b51565b905063ffffffff8116156108c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5374696c6c20696e206469737075746520706572696f64000000000000000000604482015260640161073e565b6108ce611c49565b5060018055565b600084846040516020016108ea92919061473f565b604051602081830303815290604052805190602001209050600061090d82611d4b565b905061091881611e5f565b610926818585600454611f11565b855160005b8167ffffffffffffffff168167ffffffffffffffff161015610a85576001601260008a8467ffffffffffffffff1681518110610969576109696147cd565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1d1674a854ef85d43fe928545420db98386c6a01fa1c7bc45efe559579416405601060008a8467ffffffffffffffff16815181106109d7576109d76147cd565b60200260200101518152602001908152602001600020604051610a6b9190815473ffffffffffffffffffffffffffffffffffffffff90811682526001830154908116602083015260a090811c67ffffffffffffffff908116604080850191909152600285015480831660608601529081901c82166080808601919091521c169082015260039091015460c082015260e00190565b60405180910390a180610a7d8161482b565b91505061092b565b5050505050505050565b6000858585604051602001610b0d939291906080808252600c908201527f6d6f646966794c6f636b6572000000000000000000000000000000000000000060a082015273ffffffffffffffffffffffffffffffffffffffff939093166020840152901515604083015267ffffffffffffffff16606082015260c00190565b6040516020818303038152906040528051906020012090506000610b3082611d4b565b905060008615610b435750600354610b48565b506004545b610b5182611e5f565b610b6582610b5e87614853565b8684611f11565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600a602052604090205460ff168015610b98575086155b8015610ba7575060005460ff16155b15610bb557610bb5886122b7565b73ffffffffffffffffffffffffffffffffffffffff88166000818152600a602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168b151590811790915591519182527f26690dc5c5a9d2aa7ac3efa2b7c515652e4621a3e075d267bcac51c16fb9753291015b60405180910390a25050505050505050565b60026001541415610cb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161073e565b6002600155610cc0611a52565b815160005b8167ffffffffffffffff168167ffffffffffffffff161015610d3e576000848267ffffffffffffffff1681518110610cff57610cff6147cd565b60200260200101519050610d2b8160000151826020015183604001518460600151888660800151612529565b5080610d368161482b565b915050610cc5565b5050600180555050565b600b54600090815b8167ffffffffffffffff168167ffffffffffffffff161015610de4578373ffffffffffffffffffffffffffffffffffffffff16600b8267ffffffffffffffff1681548110610da057610da06147cd565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610dd2575060019392505050565b80610ddc8161482b565b915050610d50565b5060009392505050565b336000908152600a602052604090205460ff16610e8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f53656e646572206973206e6f7420617574686f72697a656420746f206c6f636b60448201527f20736d61727420636f6e74726163740000000000000000000000000000000000606482015260840161073e565b610e9633610d48565b15610f23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c6f636b657220616c726561647920766f74656420666f7220656d657267656e60448201527f6379206c6f636b00000000000000000000000000000000000000000000000000606482015260840161073e565b600b805460018101825560008290527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600c54905467ffffffffffffffff918216911610801590610fa0575060005460ff16155b15610fad57610fad6128ea565b565b6000848460405160200161100e92919060608082526019908201527f6368616e6765426c6f636b4475726174696f6e4d696c6c697300000000000000608082015267ffffffffffffffff92831660208201529116604082015260a00190565b604051602081830303815290604052805190602001209050600061103182611d4b565b905061103c81611e5f565b61104a818585600454611f11565b600e805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff8916908102919091179091556040519081527f0ef2da393c3832a8f08ce447e14948d21e84f864facf7327137387bd0596a563906020015b60405180910390a1505050505050565b6060600b80548060200260200160405190810160405280929190818152602001828054801561113857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161110d575b5050505050905090565b600084846040516020016111a19291906060808252601a908201527f6368616e676544697370757465506572696f645365636f6e6473000000000000608082015267ffffffffffffffff92831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905060006111c482611d4b565b90506111cf81611e5f565b6111dd818585600454611f11565b600e80547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8916908102919091179091556040519081527f04edaf680108675f58d2ea70e9e7886c39ed38b66439622f8362d36595fe8169906020016110c3565b61126261296a565b600085600001518660200151876040015188606001518560405160200161128d959493929190614899565b60405160208183030381529060405280519060200120905060006112b082611d4b565b90506112bb81611e5f565b611323876112c888614853565b8787808060200260200160405190810160405280939291908181526020016000905b828210156113165761130760608302860136819003810190614930565b815260200190600101906112ea565b50505050508460016129d6565b61132b611c49565b611337600b6000613c5c565b61133f612e9a565b50505050505050565b611350611a52565b336000908152600a602052604090205460ff166113ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f53656e646572206973206e6f7420617574686f72697a656420746f206c6f636b60448201527f20736d61727420636f6e74726163740000000000000000000000000000000000606482015260840161073e565b6113f833610d48565b611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c6f636b6572206973206e6f742063757272656e746c7920766f74696e67206660448201527f6f7220656d657267656e6379206c6f636b000000000000000000000000000000606482015260840161073e565b610fad336122b7565b600260015414156114fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161073e565b6002600155611507611a52565b805160005b8167ffffffffffffffff168167ffffffffffffffff1610156115e2576115d0838267ffffffffffffffff1681518110611547576115476147cd565b602002602001015160000151848367ffffffffffffffff168151811061156f5761156f6147cd565b602002602001015160200151858467ffffffffffffffff1681518110611597576115976147cd565b602002602001015160400151868567ffffffffffffffff16815181106115bf576115bf6147cd565b602002602001015160600151612ef1565b806115da8161482b565b91505061150c565b50506001805550565b60026001541415611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161073e565b6002600155611665611a52565b61166e33611abf565b8060005b8167ffffffffffffffff168167ffffffffffffffff161015610d3e576116b984848367ffffffffffffffff168181106116ad576116ad6147cd565b905060200201356131c4565b806116c38161482b565b915050611672565b6116d3611a52565b6003546116df836134da565b1461176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f537570706c696564206163746976652076616c696461746f727320616e64207060448201527f6f7765727320646f206e6f74206d6174636820636865636b706f696e74000000606482015260840161073e565b60008360000151846020015185604001518660600151604051602001611795949392919061494c565b60405160208183030381529060405280519060200120905060006117b882611d4b565b90506117c88585858460006129d6565b5050505050565b600085858560405160200161184d939291906080808252600f908201527f6d6f6469667946696e616c697a6572000000000000000000000000000000000060a082015273ffffffffffffffffffffffffffffffffffffffff939093166020840152901515604083015267ffffffffffffffff16606082015260c00190565b604051602081830303815290604052805190602001209050600061187082611d4b565b9050600086156118835750600354611888565b506004545b61189182611e5f565b61189e82610b5e87614853565b73ffffffffffffffffffffffffffffffffffffffff88166000818152600d602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168b151590811790915591519182527f2526bb92d75e00cfad8c7c16cb75f3e1073c854339e49b16baaad3067c2ed65a9101610c34565b6000848460405160200161198092919060608082526015908201527f6368616e67654c6f636b65725468726573686f6c640000000000000000000000608082015267ffffffffffffffff92831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905060006119a382611d4b565b90506119ae81611e5f565b6119bc818585600454611f11565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff888116918217909255600b5490911610801590611a0b575060005460ff16155b15611a1857611a186128ea565b60405167ffffffffffffffff871681527f2dbe453726b24b2cee427a7d6e2dcc9f353f16bee104f3d21480157a0ee409f7906020016110c3565b60005460ff1615610fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161073e565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600d602052604090205460ff16611b4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f53656e646572206973206e6f7420612066696e616c697a657200000000000000604482015260640161073e565b50565b600e546000908190611b8190700100000000000000000000000000000000900467ffffffffffffffff16856149c9565b67ffffffffffffffff164211905080611b9e576003915050611c43565b6000611ba86135ab565b600e54909150600090611bdb90700100000000000000000000000000000000900467ffffffffffffffff166103e86149f5565b600e5467ffffffffffffffff91821691780100000000000000000000000000000000000000000000000090910416611c138785614a25565b611c1d91906149f5565b67ffffffffffffffff1611905080611c3b5760049350505050611c43565b600093505050505b92915050565b6007546003819055600854600481905560058054600e805467ffffffffffffffff8084167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008085048316021791829055600654600f80549183167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092169190911790557fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff909216909255604080519290911682526020820193909352918201527f87da17ff65d815d1e1c369cb3bbda9a11af181b92dc52681a2779419781c6270906060015b60405180910390a1565b6040805160808101825260018183019081527f61000000000000000000000000000000000000000000000000000000000000006060830152815290516000918291602080830191611dc191309188910173ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012090925282518051908201208382015183517f26f05c2f7239b6983075e58321292d77b3aa173d19b27257ac96ab362570f508818501528085019290925260608083019190915283518083039091018152608090910190925281519101209091505b9392505050565b60008181526009602052604090205460ff1615611ed8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d65737361676520616c72656164792075736564000000000000000000000000604482015260640161073e565b600090815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b80611f1b846134da565b14611fce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f537570706c696564206163746976652076616c696461746f727320616e64207060448201527f6f7765727320646f206e6f74206d61746368207468652061637469766520636860648201527f65636b706f696e74000000000000000000000000000000000000000000000000608482015260a40161073e565b815167ffffffffffffffff8116612041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5369676e65727320656d70747900000000000000000000000000000000000000604482015260640161073e565b6020840151516000908190815b8167ffffffffffffffff168167ffffffffffffffff1610156121e65760006120ba8a898667ffffffffffffffff168151811061208c5761208c6147cd565b60200260200101517f0000000000000000000000000000000000000000000000000000000000000000613640565b905088602001518267ffffffffffffffff16815181106120dc576120dc6147cd565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121d357600089604001518367ffffffffffffffff1681518110612139576121396147cd565b60200260200101519050808661214f91906149c9565b600e549096506121769068010000000000000000900467ffffffffffffffff1660026149f5565b67ffffffffffffffff1661218b8760036149f5565b67ffffffffffffffff1611156121a25750506121e6565b6121ad6001866149c9565b94508667ffffffffffffffff168567ffffffffffffffff16106121d15750506121e6565b505b50806121de8161482b565b91505061204e565b50600e5461220b9068010000000000000000900467ffffffffffffffff1660026149f5565b67ffffffffffffffff166122208460036149f5565b67ffffffffffffffff1611610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f5375626d69747465642076616c696461746f7220736574207369676e6174757260448201527f657320646f206e6f74206861766520656e6f75676820706f7765720000000000606482015260840161073e565b6122bf611a52565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604090205460ff16612374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f41646472657373206973206e6f7420617574686f72697a656420746f206c6f6360448201527f6b20736d61727420636f6e747261637400000000000000000000000000000000606482015260840161073e565b600b5460005b8167ffffffffffffffff168167ffffffffffffffff161015612524578273ffffffffffffffffffffffffffffffffffffffff16600b8267ffffffffffffffff16815481106123ca576123ca6147cd565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561251257600b6123ff600184614a25565b67ffffffffffffffff1681548110612419576124196147cd565b600091825260209091200154600b805473ffffffffffffffffffffffffffffffffffffffff9092169167ffffffffffffffff841690811061245c5761245c6147cd565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b8054806124b5576124b5614a4e565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505050565b8061251c8161482b565b91505061237a565b505050565b6040805160a06020808301829052601160c08401527f726571756573745769746864726177616c00000000000000000000000000000060e08085019190915273ffffffffffffffffffffffffffffffffffffffff8b8116858701528a16606085015267ffffffffffffffff898116608086015288169284019290925283518084039092018252610100909201909252815191012060006125c882611d4b565b60008181526012602052604090205490915060ff16156126225760408051828152600560208201527f686cb4bac974cd11b0f8a75fc7c7764ed12cc46faaec53110f807aa802a7acb4910160405180910390a150506128e2565b60006040518060e001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff1681526020018767ffffffffffffffff1681526020014267ffffffffffffffff16815260200161269f6135ab565b67ffffffffffffffff908116825260209182018590526000858152601090925260409091206002015491925068010000000000000000909104161561271f5760408051838152600060208201527f686cb4bac974cd11b0f8a75fc7c7764ed12cc46faaec53110f807aa802a7acb4910160405180910390a15050506128e2565b6127358261272c87614853565b86600354611f11565b600082815260106020908152604091829020835181547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91821690811783558584015160018401805488880151929094167fffffffff0000000000000000000000000000000000000000000000000000000090941684177401000000000000000000000000000000000000000067ffffffffffffffff938416908102919091179091556060808901516002870180546080808d015160a0808f01519589167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416841768010000000000000000928a16928302177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000096909916959095029790971790925560c08c015160039099018990558a519788529887019390935297850196909652948301939093529281019190915290917fcc10abf54af5c0718b10b0156dfe1e369ce3eee72423e9e86936a0082e9c5d1b910160405180910390a25050505b505050505050565b6128f2611a52565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586129453390565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001611d41565b60005460ff16610fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161073e565b84604001515185602001515114612a6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4e657720686f7420616e6420636f6c642076616c696461746f7220736574732060448201527f6c656e677468206d69736d617463680000000000000000000000000000000000606482015260840161073e565b84606001515185602001515114612b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4e65772076616c696461746f722073657420616e6420706f77657273206c656e60448201527f677468206d69736d617463680000000000000000000000000000000000000000606482015260840161073e565b8351855167ffffffffffffffff918216911611612ba7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4e65772076616c696461746f72207365742065706f6368206d7573742062652060448201527f67726561746572207468616e20746865206163746976652065706f6368000000606482015260840161073e565b6000612bb686606001516137f0565b905060008215612bc95750600454612bce565b506003545b612bda84878784611f11565b612c086040518060600160405280600067ffffffffffffffff16815260200160608152602001606081525090565b6040518060600160405280896000015167ffffffffffffffff16815260200189602001518152602001896060015181525090506000612c46826134da565b9050612c766040518060600160405280600067ffffffffffffffff16815260200160608152602001606081525090565b5060408051606080820183528b5167ffffffffffffffff1682528b83015160208301528b0151918101919091526000612cae826134da565b905060004290506040518060e001604052808d6000015167ffffffffffffffff1681526020018867ffffffffffffffff1681526020018267ffffffffffffffff168152602001612cfc6135ab565b67ffffffffffffffff90811682526020888101515182168184015260408084018990526060938401879052845160058054938701518784015196880151861678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff97871670010000000000000000000000000000000002979097166fffffffffffffffffffffffffffffffff91871668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090961693871693909317949094179390931617939093179055608083015160068054919092167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009190911617905560a082015160075560c0909101516008558c5190517f420bbe99bd2c52ec500d33614359525f3ef7bb3358c0e07d1312db0941cbf2f491612e849187908690869067ffffffffffffffff948516815260208101939093526040830191909152909116606082015260800190565b60405180910390a1505050505050505050505050565b612ea261296a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612945565b6002546040828101518351602085015192517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152306024830181905267ffffffffffffffff808b1660448501528916606484015260ff909416608483015260a482019290925260c48101939093529092169063d505accf9060e401600060405180830381600087803b158015612fa457600080fd5b505af1925050508015612fb5575060015b61301e576040805173ffffffffffffffffffffffffffffffffffffffff8716815267ffffffffffffffff8616602082015260008183015290517fa2dc875d1f90a167d873c30143e7631eb311ea851e74c8c4e9b92c80efeba4899181900360600190a1506131be565b6002546040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152838116602483015267ffffffffffffffff87166044830152909116906323b872dd90606401602060405180830381600087803b1580156130a357600080fd5b505af19250505080156130f1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526130ee91810190614a7d565b60015b613159576040805173ffffffffffffffffffffffffffffffffffffffff8716815267ffffffffffffffff8616602082015260018183015290517fa2dc875d1f90a167d873c30143e7631eb311ea851e74c8c4e9b92c80efeba4899181900360600190a16117c8565b806128e2576040805173ffffffffffffffffffffffffffffffffffffffff8816815267ffffffffffffffff871660208201526001918101919091527fa2dc875d1f90a167d873c30143e7631eb311ea851e74c8c4e9b92c80efeba489906060016110c3565b50505050565b60008181526012602052604090205460ff16156132185760408051828152600560208201527f686cb4bac974cd11b0f8a75fc7c7764ed12cc46faaec53110f807aa802a7acb491015b60405180910390a150565b60008181526011602052604090205460ff16156132655760408051828152600160208201527f686cb4bac974cd11b0f8a75fc7c7764ed12cc46faaec53110f807aa802a7acb4910161320d565b600081815260106020908152604091829020825160e081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301549081169382019390935267ffffffffffffffff740100000000000000000000000000000000000000009093048316938101939093526002810154808316606085015268010000000000000000810483166080850181905270010000000000000000000000000000000090910490921660a08401526003015460c083015261335e5760408051838152600260208201527f686cb4bac974cd11b0f8a75fc7c7764ed12cc46faaec53110f807aa802a7acb4910160405180910390a15050565b600061337282608001518360a00151611b51565b905063ffffffff8116156133c3576040805184815263ffffffff831660208201527f686cb4bac974cd11b0f8a75fc7c7764ed12cc46faaec53110f807aa802a7acb4910160405180910390a1505050565b60008381526011602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055830151908301516002546134349273ffffffffffffffffffffffffffffffffffffffff9091169167ffffffffffffffff166138e7565b816000015173ffffffffffffffffffffffffffffffffffffffff167fe5c7fe3a4ffca1590f26d74c8ba8b0db69557f7f4607a2a43f82e930416119788360200151846040015185606001518660c001516040516134cd949392919073ffffffffffffffffffffffffffffffffffffffff94909416845267ffffffffffffffff928316602085015291166040830152606082015260800190565b60405180910390a2505050565b60008160400151518260200151511461354f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d616c666f726d65642076616c696461746f7220736574000000000000000000604482015260640161073e565b6020808301516040808501518551915160009461356e94939101614a9a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b60004661053914156135bc57504390565b606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561360357600080fd5b505afa158015613617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363b9190614ada565b905090565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101829052604281018490526000908190606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012087830151885189840151600080885296909401948590529195506001936136f79387939193845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015613719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166137e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f496e76616c6964207369676e61747572652c207265636f76657265642074686560448201527f207a65726f206164647265737300000000000000000000000000000000000000606482015260840161073e565b95945050505050565b60008060005b83518167ffffffffffffffff16101561384c57838167ffffffffffffffff1681518110613825576138256147cd565b60200260200101518261383891906149c9565b9150806138448161482b565b9150506137f6565b5060008167ffffffffffffffff1611611c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f5375626d69747465642076616c696461746f7220706f77657273206d7573742060448201527f62652067726561746572207468616e207a65726f000000000000000000000000606482015260840161073e565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152612524928692916000916139b2918516908490613a5c565b80519091501561252457808060200190518101906139d09190614a7d565b612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161073e565b6060613a6b8484600085613a73565b949350505050565b606082471015613b05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161073e565b73ffffffffffffffffffffffffffffffffffffffff85163b613b83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161073e565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613bac9190614b1f565b60006040518083038185875af1925050503d8060008114613be9576040519150601f19603f3d011682016040523d82523d6000602084013e613bee565b606091505b5091509150613bfe828286613c09565b979650505050505050565b60608315613c18575081611e58565b825115613c285782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073e9190614b3b565b5080546000825590600052602060002090810190611b4e91905b80821115613c8a5760008155600101613c76565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613ce057613ce0613c8e565b60405290565b60405160a0810167ffffffffffffffff81118282101715613ce057613ce0613c8e565b6040516080810167ffffffffffffffff81118282101715613ce057613ce0613c8e565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613d7357613d73613c8e565b604052919050565b600067ffffffffffffffff821115613d9557613d95613c8e565b5060051b60200190565b803567ffffffffffffffff81168114613db757600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114613db757600080fd5b600082601f830112613df157600080fd5b81356020613e06613e0183613d7b565b613d2c565b82815260059290921b84018101918181019086841115613e2557600080fd5b8286015b84811015613e4757613e3a81613dbc565b8352918301918301613e29565b509695505050505050565b600082601f830112613e6357600080fd5b81356020613e73613e0183613d7b565b82815260059290921b84018101918181019086841115613e9257600080fd5b8286015b84811015613e4757613ea781613d9f565b8352918301918301613e96565b600060608284031215613ec657600080fd5b613ece613cbd565b9050613ed982613d9f565b8152602082013567ffffffffffffffff80821115613ef657600080fd5b613f0285838601613de0565b60208401526040840135915080821115613f1b57600080fd5b50613f2884828501613e52565b60408301525092915050565b600060608284031215613f4657600080fd5b613f4e613cbd565b90508135815260208201356020820152604082013560ff81168114613f7257600080fd5b604082015292915050565b600082601f830112613f8e57600080fd5b81356020613f9e613e0183613d7b565b82815260609283028501820192828201919087851115613fbd57600080fd5b8387015b85811015613fe057613fd38982613f34565b8452928401928101613fc1565b5090979650505050505050565b6000806000806080858703121561400357600080fd5b843567ffffffffffffffff8082111561401b57600080fd5b818701915087601f83011261402f57600080fd5b8135602061403f613e0183613d7b565b82815260059290921b8401810191818101908b84111561405e57600080fd5b948201945b8386101561407c57853582529482019490820190614063565b985061408b9050898201613d9f565b9650505060408701359150808211156140a357600080fd5b6140af88838901613eb4565b935060608701359150808211156140c557600080fd5b506140d287828801613f7d565b91505092959194509250565b8015158114611b4e57600080fd5b6000606082840312156140fe57600080fd5b50919050565b600080600080600060a0868803121561411c57600080fd5b61412586613dbc565b94506020860135614135816140de565b935061414360408701613d9f565b9250606086013567ffffffffffffffff8082111561416057600080fd5b61416c89838a016140ec565b9350608088013591508082111561418257600080fd5b5061418f88828901613f7d565b9150509295509295909350565b600080604083850312156141af57600080fd5b823567ffffffffffffffff808211156141c757600080fd5b818501915085601f8301126141db57600080fd5b813560206141eb613e0183613d7b565b82815260059290921b8401810191818101908984111561420a57600080fd5b8286015b848110156142d85780358681111561422557600080fd5b870160a0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561425a5760008081fd5b614262613ce6565b61426d868301613dbc565b815261427b60408301613dbc565b86820152606061428c818401613d9f565b6040830152608061429e818501613d9f565b8284015260a08401359150898211156142b75760008081fd5b6142c58f8984870101613f7d565b908301525084525091830191830161420e565b50965050860135925050808211156142ef57600080fd5b506142fc858286016140ec565b9150509250929050565b60006020828403121561431857600080fd5b611e5882613dbc565b60006020828403121561433357600080fd5b5035919050565b6000806000806080858703121561435057600080fd5b61435985613d9f565b935061436760208601613d9f565b9250604085013567ffffffffffffffff808211156140a357600080fd5b600081518084526020808501945080840160005b838110156143ca57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614398565b509495945050505050565b602081526000611e586020830184614384565b6000608082840312156143fa57600080fd5b614402613d09565b905061440d82613d9f565b8152602082013567ffffffffffffffff8082111561442a57600080fd5b61443685838601613de0565b6020840152604084013591508082111561444f57600080fd5b61445b85838601613de0565b6040840152606084013591508082111561447457600080fd5b5061448184828501613e52565b60608301525092915050565b6000806000806000608086880312156144a557600080fd5b853567ffffffffffffffff808211156144bd57600080fd5b6144c989838a016143e8565b965060208801359150808211156144df57600080fd5b6144eb89838a016140ec565b9550604088013591508082111561450157600080fd5b818801915088601f83011261451557600080fd5b81358181111561452457600080fd5b89602060608302850101111561453957600080fd5b60208301955080945050505061455160608701613d9f565b90509295509295909350565b6000602080838503121561457057600080fd5b823567ffffffffffffffff81111561458757600080fd5b8301601f8101851361459857600080fd5b80356145a6613e0182613d7b565b81815260c091820283018401918482019190888411156145c557600080fd5b938501935b838510156146365780858a0312156145e25760008081fd5b6145ea613d09565b6145f386613dbc565b8152614600878701613d9f565b878201526040614611818801613d9f565b9082015260606146238b888301613f34565b90820152835293840193918501916145ca565b50979650505050505050565b6000806020838503121561465557600080fd5b823567ffffffffffffffff8082111561466d57600080fd5b818501915085601f83011261468157600080fd5b81358181111561469057600080fd5b8660208260051b85010111156146a557600080fd5b60209290920196919550909350505050565b6000806000606084860312156146cc57600080fd5b833567ffffffffffffffff808211156146e457600080fd5b6146f0878388016143e8565b9450602086013591508082111561470657600080fd5b61471287838801613eb4565b9350604086013591508082111561472857600080fd5b5061473586828701613f7d565b9150509250925092565b60608152601560608201527f696e76616c69646174655769746864726177616c7300000000000000000000006080820152600060a08201602060a08185015281865180845260c086019150828801935060005b818110156147ae57845183529383019391830191600101614792565b505080935050505067ffffffffffffffff831660408301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681811415614849576148496147fc565b6001019392505050565b6000611c433683613eb4565b600081518084526020808501945080840160005b838110156143ca57815167ffffffffffffffff1687529582019590820190600101614873565b60c08152600660c08201527f756e6c6f636b000000000000000000000000000000000000000000000000000060e0820152600061010067ffffffffffffffff80891660208501528160408501526148f282850189614384565b915083820360608501526149068288614384565b9150838203608085015261491a828761485f565b925080851660a085015250509695505050505050565b60006060828403121561494257600080fd5b611e588383613f34565b60a08152601260a08201527f75706461746556616c696461746f72536574000000000000000000000000000060c082015267ffffffffffffffff8516602082015260e0604082015260006149a360e0830186614384565b82810360608401526149b58186614384565b90508281036080840152613bfe818561485f565b600067ffffffffffffffff8083168185168083038211156149ec576149ec6147fc565b01949350505050565b600067ffffffffffffffff80831681851681830481118215151615614a1c57614a1c6147fc565b02949350505050565b600067ffffffffffffffff83811690831681811015614a4657614a466147fc565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600060208284031215614a8f57600080fd5b8151611e58816140de565b606081526000614aad6060830186614384565b8281036020840152614abf818661485f565b91505067ffffffffffffffff83166040830152949350505050565b600060208284031215614aec57600080fd5b5051919050565b60005b83811015614b0e578181015183820152602001614af6565b838111156131be5750506000910152565b60008251614b31818460208701614af3565b9190910192915050565b6020815260008251806020840152614b5a816040850160208701614af3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212204ace2d4493d6cdff3098876c0fcf87414c718d228b7b3c1bcd2e0ac38fdf579564736f6c6343000809003300000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000000000000000000000000000000000000000000258000000000000000000000000000000000000000000000000000000000000015e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000045c3bbc5ca908ab49441ffe9742b919fc6ddb10a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000720237467c57cdf4bf9a501c77a27b5076d76e0400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001