0 txs
1 call
constructor
constructor(address networkMiddlewareService, address network)
functions
ADMIN_FEE_BASE
viewfunction ADMIN_FEE_BASE() view returns (uint256)
ADMIN_FEE_CLAIM_ROLE
viewfunction ADMIN_FEE_CLAIM_ROLE() view returns (bytes32)
ADMIN_FEE_SET_ROLE
viewfunction ADMIN_FEE_SET_ROLE() view returns (bytes32)
adminFee
viewfunction adminFee() view returns (uint256)
claimable
viewfunction claimable(uint48 epoch, address account, address tokenAddress) view returns (uint256 amount)
claimableAdminFee
viewfunction claimableAdminFee(uint48 epoch, address tokenAddress) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
i_network
viewfunction i_network() view returns (address)
i_networkMiddlewareService
viewfunction i_networkMiddlewareService() view returns (address)
i_vault
viewfunction i_vault() view returns (address)
OPERATOR_REWARDS_ROLE
viewfunction OPERATOR_REWARDS_ROLE() view returns (bytes32)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
rewards
viewfunction rewards(uint48 epoch, address tokenAddress) view returns (uint256)
stakerClaimedRewardPerEpoch
viewfunction stakerClaimedRewardPerEpoch(address account, uint48 epoch, address tokenAddress) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
VERSION
viewfunction VERSION() view returns (uint64)
batchClaimRewards
nonpayablefunction batchClaimRewards(address recipient, uint48[] epochs, address tokenAddress, bytes[] activeSharesOfHints)
claimAdminFee
nonpayablefunction claimAdminFee(address recipient, uint48 epoch, address tokenAddress)
claimRewards
nonpayablefunction claimRewards(address recipient, address tokenAddress, bytes data)
claimRewards
nonpayablefunction claimRewards(address recipient, uint48 epoch, address tokenAddress, bytes activeSharesOfHints)
distributeRewards
nonpayablefunction distributeRewards(uint48 epoch, uint48 eraIndex, uint256 amount, address tokenAddress, bytes data)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address operatorRewards, address vault_, tuple params)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAdminFee
nonpayablefunction setAdminFee(uint256 adminFee_)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
ClaimAdminFee
event ClaimAdminFee(address indexed recipient, address indexed tokenAddress, uint48 indexed epoch, uint256 amount)
ClaimRewards
event ClaimRewards(address network, address indexed tokenAddress, address indexed claimer, uint48 indexed epoch, address recipient, uint256 amount)
DistributeRewards
event DistributeRewards(address network, address indexed tokenAddress, uint48 indexed eraIndex, uint48 indexed epoch, uint256 amount, bytes data)
Initialized
event Initialized(uint64 version)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SetAdminFee
event SetAdminFee(uint256 adminFee)
SetVault
event SetVault(address indexed vault)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ODefaultStakerRewards__AlreadySet
error ODefaultStakerRewards__AlreadySet()
ODefaultStakerRewards__HighAdminFee
error ODefaultStakerRewards__HighAdminFee()
ODefaultStakerRewards__InsufficientAdminFee
error ODefaultStakerRewards__InsufficientAdminFee()
ODefaultStakerRewards__InsufficientReward
error ODefaultStakerRewards__InsufficientReward()
ODefaultStakerRewards__InvalidAddress
error ODefaultStakerRewards__InvalidAddress()
ODefaultStakerRewards__InvalidAdminFee
error ODefaultStakerRewards__InvalidAdminFee()
ODefaultStakerRewards__InvalidInput
error ODefaultStakerRewards__InvalidInput()
ODefaultStakerRewards__InvalidRecipient
error ODefaultStakerRewards__InvalidRecipient()
ODefaultStakerRewards__InvalidRewardTimestamp
error ODefaultStakerRewards__InvalidRewardTimestamp()
ODefaultStakerRewards__MissingRoles
error ODefaultStakerRewards__MissingRoles()
ODefaultStakerRewards__NoRewardsToClaim
error ODefaultStakerRewards__NoRewardsToClaim()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60e034610181576138e6906001600160401b0390601f38849003908101601f191682019083821183831017610185578083916040968794855283398101031261018157610057602061005083610199565b9201610199565b91306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82871c1661017057808083160361012c575b5050506001600160a01b0382811615908115610121575b506101105760a05260c0525161373890816101ae82396080518181816119470152611a2b015260a05181818161033301528181610c92015281816114200152613295015260c051818181610303015281816113f30152818161181001526132400152f35b825163e47126a560e01b8152600490fd5b90508116155f6100ac565b6001600160401b0319909116811790915583519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610095565b855163f92ee8a960e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101815756fe60806040908082526004361015610014575f80fd5b5f3560e01c90816301ffc9a71461247157508063056df496146124205780632125b19414612390578063248a9ca3146123275780632f2ff15d146122df57806335e7bd02146120c257806336568abe146120385780633ab68e1614611d085780634f1ef286146119bf57806352d1902d146119015780635d0b5205146118345780636908950c146117c65780637855a69f146117255780638beb60b6146115d85780638c52c497146112bc57806391d148541461122c5780639524c880146111d4578063a01fe38e1461117c578063a0be06f914611121578063a0bf7d8e14611056578063a217fddf1461101e578063ac9650d814610e73578063ad3cb1cc14610db8578063afff4b9c14610cf0578063c00460ea14610cb6578063c657cc1e14610c48578063c6ded7d814610b07578063cb6ba75d14610aaf578063d547741f14610a34578063ea0b76d0146101af5763ffa1ad7414610173575f80fd5b346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576020905160018152f35b5f80fd5b50346101ab5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576101e761252d565b906101f0612542565b916064359173ffffffffffffffffffffffffffffffffffffffff80841684036101ab5767ffffffffffffffff906084358281116101ab576102359036906004016126ab565b949061023f612e2e565b7f1b10771b649874c8cf0e4fbad7449446a17e0171c6e8086d0ff550f4026b0d90805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052855f20335f5260205260ff865f205416156109fe5750858101936060828603126101ab5760208201358181116101ab57856102c391840161268d565b94868301359182116101ab576102da91830161268d565b8551947fbb5ed032000000000000000000000000000000000000000000000000000000008652847f00000000000000000000000000000000000000000000000000000000000000001695866004820152602081602481897f0000000000000000000000000000000000000000000000000000000000000000165afa90811561076857869392916020915f916109d1575b5060248a51809681937f246e158f00000000000000000000000000000000000000000000000000000000835265ffffffffffff8b166004840152165afa928315610768575f936109a0575b5065ffffffffffff421161096a5765ffffffffffff421665ffffffffffff841611610941577fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c00549283853510610918579085949392916104468c989765ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0460205260405f2090565b5415610772575b5050508651602081602481887f70a08231000000000000000000000000000000000000000000000000000000009a8b8352306004840152165afa908115610768579085915f91610733575b5060208b60248b51997f23b872dd00000000000000000000000000000000000000000000000000000000848c015261053f8b610505604435303387850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b039b6105377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09d8e81018352826125dc565b878516613572565b8c5195869384928352306004840152165afa918215610729575f926106f3575b5061056d906044359261283a565b036106ca579265ffffffffffff80608096948a601f958b8e6105b47f6a4b9b1f4e6e9369e7cc09dfda8ca9def764110609845dca69c2ae408ad4dcac9e9d9b604435613012565b61060f6105c38260443561283a565b936105fd8865ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0360205260405f2090565b8b85165f526020525f20918254613190565b905581610672575b505060608b519b8c9a8b5260443560208c01528a01528160608a0152898901375f888c89010152169a1698169601168101030190a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b876106ac8665ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0160205260405f2090565b91165f526020526106c18c5f20918254613190565b90555f8e610617565b600487517f8bbb6eb7000000000000000000000000000000000000000000000000000000008152fd5b9091506020813d602011610721575b8161070f602093836125dc565b810103126101ab57519061056d61055f565b3d9150610702565b89513d5f823e3d90fd5b9150506020813d602011610760575b8161074f602093836125dc565b810103126101ab578490515f610498565b3d9150610742565b88513d5f823e3d90fd5b86975060206107b5949596975f5416928b51809681927f50f220680000000000000000000000000000000000000000000000000000000083528560048401613553565b0381855afa93841561090e575f946108d3575b5091602091610805938b518095819482937f810da75d00000000000000000000000000000000000000000000000000000000845260048401613553565b03915afa908115610768575f916108a1575b508115908115610898575b5061086f57908392916108668a969565ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0460205260405f2090565b555f808061044d565b600487517fc0a02f75000000000000000000000000000000000000000000000000000000008152fd5b9050155f610822565b90506020813d6020116108cb575b816108bc602093836125dc565b810103126101ab57515f610817565b3d91506108af565b91929093506020823d602011610906575b816108f1602093836125dc565b810103126101ab5790519290919060206107c8565b3d91506108e4565b8a513d5f823e3d90fd5b600489517fad161176000000000000000000000000000000000000000000000000000000008152fd5b600488517fc0a02f75000000000000000000000000000000000000000000000000000000008152fd5b604488517f6dfcc65000000000000000000000000000000000000000000000000000000000815260306004820152426024820152fd5b6109c391935060203d6020116109ca575b6109bb81836125dc565b8101906127e2565b915f6103b5565b503d6109b1565b6109f19150823d84116109f7575b6109e981836125dc565b8101906127b6565b5f61036a565b503d6109df565b6044908651907fe2517d3f0000000000000000000000000000000000000000000000000000000082523360048301526024820152fd5b50346101ab57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57610aad90600435610aa86001610a77612557565b93835f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020525f20015461292d565b612efd565b005b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57602090517f723d93d9e2749ff76c3a02ca5d48d83735b6f451b126d0ba0683caa16e04c6fa8152f35b50346101ab5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57610b3f61257a565b67ffffffffffffffff6024358181116101ab57610b609036906004016126d9565b929091610b6b61259d565b906064359081116101ab57610b849036906004016126d9565b93909573ffffffffffffffffffffffffffffffffffffffff841615610c1f57848603610bf657505f5b858110610bb657005b8060051b8201359065ffffffffffff821682036101ab57610bf060019285610be9610be2858b8e61288c565b3691612657565b918861319d565b01610bad565b600490517f8bb25d61000000000000000000000000000000000000000000000000000000008152fd5b600490517ffd42a973000000000000000000000000000000000000000000000000000000008152fd5b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57602090516127108152f35b50346101ab5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57602090610d2b61257a565b610d33612542565b65ffffffffffff610d89610d4561259d565b9373ffffffffffffffffffffffffffffffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0260205260405f2090565b91165f52835273ffffffffffffffffffffffffffffffffffffffff825f2091165f528252805f20549051908152f35b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab5780518181019181831067ffffffffffffffff841117610e4657610e42928152600582527f352e302e3000000000000000000000000000000000000000000000000000000060208301525191829160208352602083019061270a565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50346101ab576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab5760043567ffffffffffffffff81116101ab57610ec49036906004016126d9565b908351610ed0816125c0565b5f8152838101610edf84612874565b93610eec875195866125dc565b8085527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610f1982612874565b01865f5b82811061100e575050505f5b818110610faa57878787825191808301818452825180915281858501958260051b8601019301915f955b828710610f605785850386f35b909192938280610f9a837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a60019603018652885161270a565b9601920196019592919092610f53565b80610ff284610fec8a8c610fc1600197898d61288c565b80959192519586938585013782018381015f81528c519283915e015f838201520380845201826125dc565b3061350f565b610ffc8289612919565b526110078188612919565b5001610f29565b606082828a010152018790610f1d565b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57602090515f8152f35b50346101ab5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab5761108e61257a565b611096612542565b61109e61259d565b9060643567ffffffffffffffff81116101ab576110bf9036906004016126ab565b90946110c9612e2e565b73ffffffffffffffffffffffffffffffffffffffff851615610c1f57506110fb946110f5913691612657565b9261319d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576020907fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c00549051908152f35b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57602090517fa2e85c2f0b3a0317b9c4b4185c12b4e23dd961a7645fcbc9bb8efb8eb70e0d038152f35b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57602090517f1b10771b649874c8cf0e4fbad7449446a17e0171c6e8086d0ff550f4026b0d908152f35b50346101ab57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57602090611266612557565b6004355f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800835273ffffffffffffffffffffffffffffffffffffffff825f2091165f52825260ff815f20541690519015158152f35b50346101ab5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576112f461252d565b906112fd612557565b61130561259d565b9061133f8465ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0160205260405f2090565b9373ffffffffffffffffffffffffffffffffffffffff80931691825f526020958652845f2054936113ad8273ffffffffffffffffffffffffffffffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0260205260405f2090565b9365ffffffffffff841694855f528852865f20905f528752855f2054938651907fbb5ed032000000000000000000000000000000000000000000000000000000008252827f00000000000000000000000000000000000000000000000000000000000000001660048301528882602481867f0000000000000000000000000000000000000000000000000000000000000000165afa9182156107685791899184935f926115b6575b506024908a5195869384927f246e158f0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156115ac57916114eb94939189935f9261158d575b505f5416908851926114b3846125c0565b5f84528951968794859384937f2d73c69c00000000000000000000000000000000000000000000000000000000855260048501612800565b03915afa918215611583575f92611552575b509061154b9361153f6115469365ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0460205260405f2090565b54916130ab565b61283a565b9051908152f35b91508582813d831161157c575b61156981836125dc565b810103126101ab5790519061154b6114fd565b503d61155f565b85513d5f823e3d90fd5b6115a5919250843d86116109ca576109bb81836125dc565b905f6114a2565b87513d5f823e3d90fd5b60249192506115d190843d86116109f7576109e981836125dc565b9190611455565b50346101ab5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57600435907fa2e85c2f0b3a0317b9c4b4185c12b4e23dd961a7645fcbc9bb8efb8eb70e0d03805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052815f20335f5260205260ff825f205416156116f05750817fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0054146116c757816020916116c07f2f0d0ace1d699b471d7b39522b5c8aae053bce1b422b7a4fe8f09bd6562a4b7494612fbb565b51908152a1005b600490517f4a811f6b000000000000000000000000000000000000000000000000000000008152fd5b60449151907fe2517d3f0000000000000000000000000000000000000000000000000000000082523360048301526024820152fd5b50346101ab57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab5760209061175f61252d565b73ffffffffffffffffffffffffffffffffffffffff6117b561177f612557565b9265ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0160205260405f2090565b91165f528252805f20549051908152f35b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101ab5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab5761186c61257a565b90611875612557565b60443567ffffffffffffffff81116101ab576118959036906004016126ab565b939092846020116101ab576118a8612e2e565b73ffffffffffffffffffffffffffffffffffffffff821615610c1f57506118f96110fb947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe036910160208601612657565b92359061319d565b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361199657602090517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b600490517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576119f161257a565b60243567ffffffffffffffff81116101ab57611a1190369060040161268d565b9173ffffffffffffffffffffffffffffffffffffffff92837f000000000000000000000000000000000000000000000000000000000000000016803014908115611cda575b50611cb1575f80526020937f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268008552825f20335f52855260ff835f20541615611c7c578316928251947f52d1902d0000000000000000000000000000000000000000000000000000000086528086600481885afa9586915f97611c4c575b5050611b09576024848451907f4c9c8ce30000000000000000000000000000000000000000000000000000000082526004820152fd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc857fc9f76b5ec45e5cdef99837d7b6d2467235c1df8933c8ca56df5c35afa2c7d4448101611c1c5750823b15611bec57847fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905551927fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115611bbb57610aad925061350f565b505034611bc457005b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b6024858351907f4c9c8ce30000000000000000000000000000000000000000000000000000000082526004820152fd5b6024908351907faa1d49a40000000000000000000000000000000000000000000000000000000082526004820152fd5b9080929750813d8311611c75575b611c6481836125dc565b810103126101ab5751945f80611ad3565b503d611c5a565b604483517fe2517d3f0000000000000000000000000000000000000000000000000000000081523360048201525f6024820152fd5b600482517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b9050847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f611a56565b50346101ab5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57611d4061257a565b611d48612557565b60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc3601126101ab577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83861c16159267ffffffffffffffff811680159081612030575b6001149081612026575b15908161201d575b50611ff4578360017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316178655611fbf575b5073ffffffffffffffffffffffffffffffffffffffff90818316158015611fb5575b611f8c5781611e2761274d565b1615611f63579080611edd9392611e3c613609565b611e44613609565b611e4c613609565b611e54613609565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055611e83604435612fbb565b167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55611ebb611eb661274d565b6129a5565b5080611ec5612770565b16611f4d575b611ed3612793565b16611f3757612c75565b50611ee457005b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a1005b611f47611f42612793565b612b7e565b50612c75565b611f5d611f58612770565b612a80565b50611ecb565b600486517f0283891f000000000000000000000000000000000000000000000000000000008152fd5b600486517fe47126a5000000000000000000000000000000000000000000000000000000008152fd5b5081811615611e1a565b7fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000016680100000000000000011784555f611df8565b600486517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b9050155f611dc5565b303b159150611dbd565b859150611db3565b50346101ab57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab5761206f612557565b903373ffffffffffffffffffffffffffffffffffffffff83160361209957610aad82600435612efd565b600490517f6697b232000000000000000000000000000000000000000000000000000000008152fd5b50346101ab5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576120fa61257a565b90612103612542565b9061210c61259d565b612114612e2e565b7f723d93d9e2749ff76c3a02ca5d48d83735b6f451b126d0ba0683caa16e04c6fa805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052825f20335f5260205260ff835f205416156122a957506121ab8365ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0360205260405f2090565b9273ffffffffffffffffffffffffffffffffffffffff80921693845f52602052825f2054928315612280579165ffffffffffff827fc2d574d3b9a93bc6c915eae164cac11e27be31e678ec3f5ae12e9144e7c714919461223c60209565ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0360205260405f2090565b885f5285525f81812055612251878a8a612e88565b5195865216951692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b600490517f835cd763000000000000000000000000000000000000000000000000000000008152fd5b6044908351907fe2517d3f0000000000000000000000000000000000000000000000000000000082523360048301526024820152fd5b50346101ab57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57610aad906004356123226001610a77612557565b612d6c565b50346101ab5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576020906004355f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680082526001815f2001549051908152f35b50346101ab57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab576020906123ca61252d565b73ffffffffffffffffffffffffffffffffffffffff6117b56123ea612557565b9265ffffffffffff165f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0360205260405f2090565b50346101ab575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab5760209073ffffffffffffffffffffffffffffffffffffffff5f54169051908152f35b346101ab5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ab57600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101ab57817f7965db0b0000000000000000000000000000000000000000000000000000000060209314908115612503575b5015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014836124fc565b6004359065ffffffffffff821682036101ab57565b6024359065ffffffffffff821682036101ab57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101ab57565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101ab57565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101ab57565b6020810190811067ffffffffffffffff821117610e4657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610e4657604052565b67ffffffffffffffff8111610e4657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926126638261261d565b9161267160405193846125dc565b8294818452818301116101ab578281602093845f960137010152565b9080601f830112156101ab578160206126a893359101612657565b90565b9181601f840112156101ab5782359167ffffffffffffffff83116101ab57602083818601950101116101ab57565b9181601f840112156101ab5782359167ffffffffffffffff83116101ab576020808501948460051b0101116101ab57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b60643573ffffffffffffffffffffffffffffffffffffffff811681036101ab5790565b60843573ffffffffffffffffffffffffffffffffffffffff811681036101ab5790565b60a43573ffffffffffffffffffffffffffffffffffffffff811681036101ab5790565b908160209103126101ab575173ffffffffffffffffffffffffffffffffffffffff811681036101ab5790565b908160209103126101ab575165ffffffffffff811681036101ab5790565b65ffffffffffff6126a8949373ffffffffffffffffffffffffffffffffffffffff606094168352166020820152816040820152019061270a565b9190820391821161284757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b67ffffffffffffffff8111610e465760051b60200190565b91908110156128ec5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101ab57019081359167ffffffffffffffff83116101ab5760200182360381136101ab579190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80518210156128ec5760209160051b010190565b805f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260405f20335f5260205260ff60405f2054161561296e5750565b604490604051907fe2517d3f0000000000000000000000000000000000000000000000000000000082523360048301526024820152fd5b73ffffffffffffffffffffffffffffffffffffffff165f8181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020547f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009060ff16612a7a575f805260205260405f20815f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533905f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50505f90565b73ffffffffffffffffffffffffffffffffffffffff165f8181527fe9574111c3d75c2a60e71ea1e3f5bad97bc853dcd8d24e02cb5480dfbf98e44860205260409020547f723d93d9e2749ff76c3a02ca5d48d83735b6f451b126d0ba0683caa16e04c6fa91907f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009060ff16612b7757825f5260205260405f20815f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b5050505f90565b73ffffffffffffffffffffffffffffffffffffffff165f8181527fd8487f5b11ecc8876444ee4ba0be76a299a89e56407bc0c4ef745e8722e35cb060205260409020547fa2e85c2f0b3a0317b9c4b4185c12b4e23dd961a7645fcbc9bb8efb8eb70e0d0391907f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009060ff16612b7757825f5260205260405f20815f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b73ffffffffffffffffffffffffffffffffffffffff165f8181527f3f16bba907c2a6a4038640b26d115bec140f5d0e691fcfdb4c990f00dbb677f460205260409020547f1b10771b649874c8cf0e4fbad7449446a17e0171c6e8086d0ff550f4026b0d9091907f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009060ff16612b7757825f5260205260405f20815f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b90815f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268008060205273ffffffffffffffffffffffffffffffffffffffff60405f20921691825f5260205260ff60405f205416155f14612b7757825f5260205260405f20815f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006002815414612e5e5760029055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260448152608081019181831067ffffffffffffffff841117610e4657612efb92604052613572565b565b90815f527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268008060205273ffffffffffffffffffffffffffffffffffffffff60405f20921691825f5260205260ff60405f2054165f14612b7757825f5260205260405f20815f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6127108111612fe8577fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0055565b60046040517f01375267000000000000000000000000000000000000000000000000000000008152fd5b90808202907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818409908280831092039180830392146130a057612710908282111561308e577fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e91940990828211900360fc1b910360041c170290565b634e487b715f5260116020526024601cfd5b505061271091500490565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81850993838086109503948086039514613155578483111561313d5790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b82634e487b715f52156003026011186020526024601cfd5b505080925015613163570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9190820180921161284757565b9065ffffffffffff909392931692835f526020917fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0183526040805f209373ffffffffffffffffffffffffffffffffffffffff80941694855f528152815f20549380841694855f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c0291828452845f208a5f528452845f20885f528452845f2054907f00000000000000000000000000000000000000000000000000000000000000009986517fbb5ed032000000000000000000000000000000000000000000000000000000008152828c1660048201528681602481867f0000000000000000000000000000000000000000000000000000000000000000165afa9081156107685783918e89925f926134ed575b506024908b5194859384927f246e158f0000000000000000000000000000000000000000000000000000000084526004840152165afa908115610768575f916134d0575b508c5f527fef473712465551821e7a51c85c06a1bf76bdf2a3508e28184170ac7eb0322c048752875f205492851580156134c8575b61349f57918791613388935f5416908b8b51958694859384937f2d73c69c00000000000000000000000000000000000000000000000000000000855260048501612800565b03915afa9081156115ac575f9161346e575b50906133a993611546926130ab565b94851561344557917f5f5b2fd75e4757a8183985df9b651b03c5518b398c67e55c51a39f7f8223e45d95949391613440935f528152815f20895f528152815f2090875f5252805f206133fc858254613190565b9055613409848488612e88565b5192839233978460409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b0390a4565b600484517f1986f6d3000000000000000000000000000000000000000000000000000000008152fd5b9190508582813d8311613498575b61348681836125dc565b810103126101ab5790516133a961339a565b503d61347c565b600489517f1986f6d3000000000000000000000000000000000000000000000000000000008152fd5b508315613343565b6134e79150873d89116109ca576109bb81836125dc565b5f61330e565b602491925061350890843d86116109f7576109e981836125dc565b91906132ca565b5f806126a893602081519101845af43d1561354b573d9161352f8361261d565b9261353d60405194856125dc565b83523d5f602085013e613662565b606091613662565b60409065ffffffffffff6126a89493168152816020820152019061270a565b905f602091828151910182855af1156135fe575f513d6135f5575073ffffffffffffffffffffffffffffffffffffffff81163b155b6135ae5750565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f5274afe7000000000000000000000000000000000000000000000000000000008352166004820152fd5b600114156135a7565b6040513d5f823e3d90fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561363857565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fd5b906136a1575080511561367757805190602001fd5b60046040517fd6bda275000000000000000000000000000000000000000000000000000000008152fd5b815115806136f9575b6136b2575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b156136aa56fea26469706673582212205888c0350d45d2faec07157de0bd47366c4303c9529b1879442076450d500fad64736f6c63430008190033000000000000000000000000d7dc9b366c027743d90761f71858bca83c6899ad0000000000000000000000008c1a46d032b7b30d9ab4f30e51d8139cc3e85ce3