2 txs
2 calls
constructor
constructor(address _vrswToken, address _minter, address _tokenomicsParams, address _vPairFactory)
functions
baseRewardsCoefficient
viewfunction baseRewardsCoefficient(address, address, address) view returns (int256)
baseRewardsCoefficientGlobal
viewfunction baseRewardsCoefficientGlobal(address, address) view returns (int256)
checkLock
viewfunction checkLock(address who) view returns (uint256[] unlockedPositions)
emissionStartTs
viewfunction emissionStartTs() view returns (uint256)
extraRewardsCoefficient
viewfunction extraRewardsCoefficient(address, address, address) view returns (int256)
extraRewardsCoefficientGlobal
viewfunction extraRewardsCoefficientGlobal(address, address) view returns (int256)
isPoolValid
viewfunction isPoolValid(address pool) view returns (bool)
LOCK_DURATION_LIMIT
viewfunction LOCK_DURATION_LIMIT() view returns (uint256)
lpStakeIndex
viewfunction lpStakeIndex(address, address) view returns (uint256)
lpStakes
viewfunction lpStakes(address, uint256) view returns (address lpToken, int256 amount)
minter
viewfunction minter() view returns (address)
mu
viewfunction mu(address, address) view returns (int256)
rewards
viewfunction rewards(address, address, address) view returns (int256)
STAKE_POSITIONS_LIMIT
viewfunction STAKE_POSITIONS_LIMIT() view returns (uint256)
tokenomicsParams
viewfunction tokenomicsParams() view returns (address)
totalBaseRewardTokensAvailable
viewfunction totalBaseRewardTokensAvailable(address, address) view returns (int256)
totalExtraRewardTokensAvailable
viewfunction totalExtraRewardTokensAvailable(address, address) view returns (int256)
totalLpStaked
viewfunction totalLpStaked(address) view returns (int256)
totalMu
viewfunction totalMu(address) view returns (int256)
viewLpStakes
viewfunction viewLpStakes() view returns (tuple[] _lpStakes)
viewRewards
viewfunction viewRewards(address who, address lpToken, address rewardToken) view returns (uint256)
viewVrswStakes
viewfunction viewVrswStakes() view returns (tuple[] _vrswStakes)
vPairFactory
viewfunction vPairFactory() view returns (address)
vrswStakes
viewfunction vrswStakes(address, uint256) view returns (uint128 startTs, uint128 lockDuration, int256 discountFactor, int256 amount)
vrswToken
viewfunction vrswToken() view returns (address)
claimRewards
nonpayablefunction claimRewards(address lpToken)
lockStakedVrsw
nonpayablefunction lockStakedVrsw(uint256 amount, uint128 lockDuration)
lockVrsw
nonpayablefunction lockVrsw(uint256 amount, uint128 lockDuration)
stakeLp
nonpayablefunction stakeLp(address lpToken, uint256 amount)
stakeVrsw
nonpayablefunction stakeVrsw(uint256 amount)
triggerStateUpdateAfter
nonpayablefunction triggerStateUpdateAfter(address[] wallets)
triggerStateUpdateBefore
nonpayablefunction triggerStateUpdateBefore(address[] wallets)
unlockVrsw
nonpayablefunction unlockVrsw(address who, uint256 position)
unstakeLp
nonpayablefunction unstakeLp(address lpToken, uint256 amount)
unstakeVrsw
nonpayablefunction unstakeVrsw(uint256 amount)
events
LockStakedVrsw
event LockStakedVrsw(address indexed who, uint256 amount, uint128 lockDuration, uint128 startTs, uint256 discountFactor)
LockVrsw
event LockVrsw(address indexed who, uint256 amount, uint128 lockDuration, uint128 startTs, uint256 discountFactor)
MuChanged
event MuChanged(address indexed who, address indexed pool, uint256 mu, uint256 totalMu)
StakeLp
event StakeLp(address indexed who, address indexed lpToken, uint256 amount)
StakeVrsw
event StakeVrsw(address indexed who, uint256 amount, uint128 startTs, uint256 discountFactor)
UnlockVrsw
event UnlockVrsw(address indexed who, uint256 amount)
UnstakeLp
event UnstakeLp(address indexed who, address indexed lpToken, uint256 amount)
UnstakeVrsw
event UnstakeVrsw(address indexed who, uint256 amount)
errors
PRBMath__MulDiv18Overflow
error PRBMath__MulDiv18Overflow(uint256 x, uint256 y)
PRBMath__MulDivOverflow
error PRBMath__MulDivOverflow(uint256 x, uint256 y, uint256 denominator)
PRBMathSD59x18__DivInputTooSmall
error PRBMathSD59x18__DivInputTooSmall()
PRBMathSD59x18__DivOverflow
error PRBMathSD59x18__DivOverflow(int256 x, int256 y)
PRBMathSD59x18__Exp2InputTooBig
error PRBMathSD59x18__Exp2InputTooBig(int256 x)
PRBMathSD59x18__ExpInputTooBig
error PRBMathSD59x18__ExpInputTooBig(int256 x)
PRBMathSD59x18__LogInputTooSmall
error PRBMathSD59x18__LogInputTooSmall(int256 x)
PRBMathSD59x18__MulInputTooSmall
error PRBMathSD59x18__MulInputTooSmall()
PRBMathSD59x18__MulOverflow
error PRBMathSD59x18__MulOverflow(int256 x, int256 y)
creation bytecode
0x6101208060405234620001d457608081620057508038038091620000248285620001d9565b833981010312620001d4578060206200003f60049362000213565b916200004d82820162000213565b906200006a6060620000626040840162000213565b920162000213565b60a083905260c09490945260e05260405163925c3e4760e01b815293849182906001600160a01b03165afa918215620001c8576000926200018c575b50610100918252608052604051615527918262000229833960805182818161185b01526132a6015260a0518281816106f6015281816110bc01528181611c0e01528181612002015281816124ba01528181613b6e0152613e1a015260c0518281816110950152818161176501528181611be70152611fdb015260e0518281816116f701528181613e4e015281816144240152818161517901526153930152518181816101e7015281816106ad01528181610b0f01528181610f3601528181610f940152818161148101528181611b1301528181611d2401528181611ea101526153c70152f35b90916020823d8211620001bf575b81620001a960209383620001d9565b81010312620001bc5750519038620000a6565b80fd5b3d91506200019a565b6040513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b03821190821017620001fd57604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620001d45756fe60806040908082526004918236101561001757600080fd5b600091823560e01c908162923c3a146124de5750806307546172146124705780630b6544fb1461235557806318955d96146121a85780631d7f2b4f14611e895780631e657a6014611d0d5780631e795da914611ad757806322dfa92814611a645780632653a3b014611a2857806327a32180146119b55780632a3cb0741461197a5780632a9dd0ce146118f25780632ef56abd1461187f5780634fdc61d314611811578063540550861461178957806355b696981461171b57806358d6b9e2146116ad5780635e87bcf2146114405780636562bb60146113b95780636f6eff4014611374578063734aa6e11461131357806386a15e64146112b25780638988bc69146112075780638d32b9261461117e5780638e6c84a214610f59578063925c3e4714610f01578063939722ee14610ec8578063aedf745e14610acb578063cce9e28f14610a58578063ed1584601461095a578063ed58339d146108e7578063ef5cfb8c14610669578063f1319e0d14610608578063f6c57861146105bc5763fb50dc14146101a557600080fd5b346105b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8576101db61254f565b9260249182359061020e7f0000000000000000000000000000000000000000000000000000000000000000421015612725565b73ffffffffffffffffffffffffffffffffffffffff861693846000526006602094818652836000205491871561055d5785151580610554575b156104f9578760005280875261026961026387876000206126ed565b5061315d565b6fffffffffffffffffffffffffffffffff9081815116826102914292828d86015116906131a0565b161161049f5760600151966102a58c6139e5565b8960005282895286600020947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff95868201918211610472576102fc916102ea916126ed565b50918b600052848b52886000206126ed565b929092610446578183036103e0575b5050508760005286528360002091825480156103b357019261032d84846126ed565b929092610388575050917f0e1c0e63444aec2d84a82a760762b2dd87fbe0dcf82ebef4d5e7acd5b4ed8bf596979891600060028582610380975582600182015501555561037a84826133fb565b50613a4d565b51908152a280f35b6000907f4e487b71000000000000000000000000000000000000000000000000000000008252526000fd5b846031847f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b8154835491167fffffffffffffffffffffffffffffffff000000000000000000000000000000009182168117845582549091166fffffffffffffffffffffffffffffffff909116178255600290819060018101546001850155015491015538808061030b565b866000867f4e487b71000000000000000000000000000000000000000000000000000000008252526000fd5b876011877f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b60648484888c8b51937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f6c6f636b656400000000000000000000000000000000000000000000000000006044820152fd5b6064826010868a8951937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f696e76616c696420706f736974696f6e000000000000000000000000000000006044820152fd5b50828610610247565b606482600c868a8951937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152fd5b5080fd5b50346105b85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8576020906105ff6105fa61254f565b6131f5565b90519015158152f35b50346105b85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8578060209273ffffffffffffffffffffffffffffffffffffffff61065961254f565b1681526007845220549051908152f35b509190346108e4576020927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9380853601126108e0576106a761254f565b906106d47f0000000000000000000000000000000000000000000000000000000000000000421015612725565b6106de8233613b16565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001696818551947e01b0b6000000000000000000000000000000000000000000000000000000008652169788888601528685602481845afa9485156108d65787956108b2575b506107658551612e04565b91875b86518110156107db5780856107806107d6938a612e80565b5116338b526003908189528d8b8d20908d5289528a8c20908c528852898b20546107aa8388612e80565b52338b528752888a208c8b528752888a20866107c6838b612e80565b51168b5287528989812055612e53565b610768565b50909388908a979694863b156108ae578996949288999694929951998a977f657e3172000000000000000000000000000000000000000000000000000000008952608489019233908a015260248901526080604489015285518092528060a4890196019289905b83821061088f575050505050610866838793879593868095030160648501526125bd565b03925af1908115610886575061087a575080f35b6108839061283a565b80f35b513d84823e3d90fd5b8451811688528d9a508c99509682019693820193600190910190610842565b8980fd5b6108cf9195503d8089833e6108c7818361286a565b810190612d82565b933861075a565b86513d89823e3d90fd5b8280fd5b80fd5b50346105b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8578060209261092261254f565b61092a612577565b73ffffffffffffffffffffffffffffffffffffffff9182168352600b865283832091168252845220549051908152f35b5090346108e457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108e457338152602090600682528281209081546109a381612d49565b906109b08651928361286a565b8082528482018094845285842084915b838310610a335750505050845193808501918186525180925285850193925b8281106109ec5785850386f35b835180516fffffffffffffffffffffffffffffffff9081168752818401511686840152878101518887015260609081015190860152608090940193928101926001016109df565b600388600192610a46859b98999b61315d565b815201920192019190969493966109c0565b50346105b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b85780602092610a9361254f565b610a9b612577565b73ffffffffffffffffffffffffffffffffffffffff9182168352600c865283832091168252845220549051908152f35b5091346105b857827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b857610b0361254f565b92602493843591610b367f0000000000000000000000000000000000000000000000000000000000000000421015612725565b610b4183151561278a565b610b52610b4d836131f5565b612ce4565b3385526001956020928784528287209573ffffffffffffffffffffffffffffffffffffffff9182811697888a5286528489205490338a528987528a610b9983888d20612709565b500154908215610e6d57610baf828a1115612e94565b610bb98133613b16565b8a891280158a84038481138216858212841617610e42578e610be58f8c818f928b933382525220612709565b5001558b8d5260088a52888d2054908b820392828412169183131617610e1757899291610c1d91898e8e815260088d52205533613d0b565b14610c5f575b50505050907f0245a43644a6e6bab6b1bff2baab1d7ccdab8816f954c1215005a47d62c1977591610c55843387612ef9565b519283523392a380f35b3389528886528489209283547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94858201918211610e175790610ca191612709565b50338b528a8852610cb483888d20612709565b919091610ded57808d918303610db3575b505050338a528a8752858a20908a8852610ce183888d20612709565b5054168a52865284892055338852888552838820878952855287848120553388528785528388209182548015610d88570192610d1d8484612709565b929092610d5f57505096809888827f0245a43644a6e6bab6b1bff2baab1d7ccdab8816f954c1215005a47d62c1977598999a5501555585949392388080610c23565b8980917f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b848a6031857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8084839254167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784550154910155388b81610cc5565b868c80877f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b868c6011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b888e6011897f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b606484600d888b8b51937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f6e6f2073756368207374616b65000000000000000000000000000000000000006044820152fd5b50346105b857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8576020905160158152f35b50346105b857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b857602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b508290346108e0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261117a57823591610fbb7f0000000000000000000000000000000000000000000000000000000000000000421015612725565b610fc683151561278a565b33855260068252808520610fdc81541515612f79565b610ff56002610fea836126a9565b500154851115612e94565b610ffe336139e5565b600261101f6110198683611011866126a9565b500154612f60565b926126a9565b5001553385528482526110398360016110118489206126a9565b338652858352600161104c8388206126a9565b500155848052600882526110638382872054612f60565b858052600883528186205561107733613a4d565b8473ffffffffffffffffffffffffffffffffffffffff6110ba8533837f000000000000000000000000000000000000000000000000000000000000000016612ef9565b7f00000000000000000000000000000000000000000000000000000000000000001694853b156105b85782517fdb6c5c55000000000000000000000000000000000000000000000000000000008152339181019182526020820186905295869182908490829060400103925af1938415611170577ff8a9c9755132fabe079d616368840a9217e931f5546f744de08c988023b1963b9394611161575b50519283523392a280f35b61116a9061283a565b85611156565b81513d87823e3d90fd5b8380fd5b5090346108e457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108e4576111b661254f565b906024359073ffffffffffffffffffffffffffffffffffffffff8093168152806020528381209081548310156108e457506001916111f391612709565b509182541691015482519182526020820152f35b50346105b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b85761123e61254f565b73ffffffffffffffffffffffffffffffffffffffff1682526006602052808220805460243593908410156108e45750608092611279916126ed565b509081549160026001820154910154918051936fffffffffffffffffffffffffffffffff81168552851c60208501528301526060820152f35b50346105b85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8578060209273ffffffffffffffffffffffffffffffffffffffff61130361254f565b1681526008845220549051908152f35b50346105b85760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b85760209061136761135161254f565b611359612577565b61136161259a565b91613d8f565b9651968752505050505050f35b82346108e4576113833661263e565b825b818110611390578380f35b806113af6113aa6113a56113b49486886131c4565b6131d4565b613a4d565b612e53565b611385565b5082346108e05760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108e05760209282916113f761254f565b6113ff612577565b61140761259a565b9273ffffffffffffffffffffffffffffffffffffffff809316855287528185852091168452865283832091168252845220549051908152f35b50346105b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b85761147761254f565b90602435906114a87f0000000000000000000000000000000000000000000000000000000000000000421015612725565b6114b382151561278a565b6114bf610b4d846131f5565b33845260209084825280852080541561168b575b506114de8433613b16565b338552600182528085209373ffffffffffffffffffffffffffffffffffffffff8116948587528352818620548015600014611614575033865285835261153982872083519061152c826127ef565b87825286868301526128ab565b338652858352818620547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116115e857338752600184528287208688528452828720555b8486526008835281862054848101908786831291129080158216911516176115e8577f36a0e66d72e949e8fb88ba5ca6e646e30a6a135907f820e3869593a6353f66909392916115dc91878952600885528389205533613d0b565b610c558430338861294e565b60248760118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b338752868452600161162882858a20612709565b500154908582019188878412911290801582169115161761165f57611657600191338a52898752858a20612709565b500155611581565b60248860118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b81516116a79161169a826127ef565b87825287858301526128ab565b386114d3565b50346105b857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105b857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105b85760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b857806020926117c561254f565b6117cd612577565b906117d661259a565b9173ffffffffffffffffffffffffffffffffffffffff8092168452600587528185852091168452865283832091168252845220549051908152f35b50346105b857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346105b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b857806020926118ba61254f565b6118c2612577565b73ffffffffffffffffffffffffffffffffffffffff91821683526001865283832091168252845220549051908152f35b50346105b85760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8578060209261192e61254f565b611936612577565b9061193f61259a565b9173ffffffffffffffffffffffffffffffffffffffff8092168452600387528185852091168452865283832091168252845220549051908152f35b82346108e4576119893661263e565b825b818110611996578380f35b806113af6119ab6113a56119b09486886131c4565b6139e5565b61198b565b50346105b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b857806020926119f061254f565b6119f8612577565b73ffffffffffffffffffffffffffffffffffffffff9182168352600a865283832091168252845220549051908152f35b50346105b857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b85760209051630530e8008152f35b50346105b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b85780602092611a9f61254f565b611aa7612577565b73ffffffffffffffffffffffffffffffffffffffff91821683526009865283832091168252845220549051908152f35b508290346108e057602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261117a57823592611b3a7f0000000000000000000000000000000000000000000000000000000000000000421015612725565b611b4584151561278a565b338552848352818520805415611ceb575b50611b60336139e5565b611b6a84336133fb565b90338652858452611b8a856001611b82868a206126a9565b500154612c99565b3387528685526001611b9d8589206126a9565b50015585805260088452611bb48584882054612c99565b8680526008855283872055611bc833613a4d565b8573ffffffffffffffffffffffffffffffffffffffff611c0c873033847f00000000000000000000000000000000000000000000000000000000000000001661294e565b7f00000000000000000000000000000000000000000000000000000000000000001691823b156105b85784517f88386c6e000000000000000000000000000000000000000000000000000000008152339181019182526020820188905292839182908490829060400103925af18015611ce157611cd2575b50816fffffffffffffffffffffffffffffffff8251169101519282519485528401528201527f7464e4d4804aa29d3dde1e89ebf6cf12683ba66250dd4c55de4ca4172088bd8f60603392a280f35b611cdb9061283a565b85611c84565b83513d88823e3d90fd5b8251611d0791611cfa826127ef565b87825287868301526128ab565b85611b56565b50346105b857611d1c366125f1565b611d4b9291927f0000000000000000000000000000000000000000000000000000000000000000421015612725565b6fffffffffffffffffffffffffffffffff91611d738383168015159081611e7a575b50612fde565b611d7e84151561278a565b3385526006602052808520611da260158254611d9b811515612f79565b1115613043565b611dbb6002611db0836126a9565b500154861115612e94565b611dc4336139e5565b6002611dcf826126a9565b500154858103919087871280158285131691841216176115e85791611e74916002611e1c7fe050df90e44fe7573655dbb19ecb85952a95c7c80c8d9aa583cd751ee293065b9796956126a9565b50015580611e2a848861339a565b94611e3433613a4d565b85511694015190519384933397859094939291606092608083019683526fffffffffffffffffffffffffffffffff80921660208401521660408201520152565b0390a280f35b630530e8009150111538611d6d565b5082346108e057611e99366125f1565b611ec89291927f0000000000000000000000000000000000000000000000000000000000000000421015612725565b6fffffffffffffffffffffffffffffffff611eee81831680151590816121995750612fde565b611ef984151561278a565b338652602092600684528587208054611f156015821115613043565b1561216c575b5033875286845285872080541561214a575b50611f37336139e5565b3387528684526001611f4a8789206126a9565b5001548581019088878312911290801582169115161761211e573388528785526001611f77888a206126a9565b500155611f84838661339a565b93878052600881528688205490868201918988841291129080158216911516176120f2576008908980525286882055611fbc33613a4d565b8673ffffffffffffffffffffffffffffffffffffffff612000873033847f00000000000000000000000000000000000000000000000000000000000000001661294e565b7f00000000000000000000000000000000000000000000000000000000000000001691823b156105b85787517f88386c6e000000000000000000000000000000000000000000000000000000008152339181019182526020820188905292839182908490829060400103925af180156108d65795611e749281927f9382e05250357977c97e41a7dedff18f4f4a12bdaabc02b058b34318f7ffc4f397986120e3575b5085511694015190519384933397859094939291606092608083019683526fffffffffffffffffffffffffffffffff80921660208401521660408201520152565b6120ec9061283a565b896120a2565b6024896011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024886011847f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b865161216691612159826127ef565b89825289878301526128ab565b87611f2d565b86516121939161217b8261284e565b8982528987830152898983015289606083015261312f565b87611f1b565b630530e8009150111588611d6d565b50346105b85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b85773ffffffffffffffffffffffffffffffffffffffff6121f561254f565b1682526006602052808220918254908060015b8381106122fc575061221982612e04565b9460015b84811061223d578551602080825281906122399082018a6125bd565b0390f35b61224781836126ed565b506fffffffffffffffffffffffffffffffff809154169061227961226b84866126ed565b509242935460801c906131a0565b16111561228f575b61228a90612e53565b61221d565b9280156122d0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61228a910193806122c8868a612e80565b529050612281565b60248360118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b61230681876126ed565b506fffffffffffffffffffffffffffffffff809154169061232a61226b848a6126ed565b161115612340575b61233b90612e53565b612208565b9161234d61233b91612e53565b929050612332565b5090346108e457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108e4579033825260209180835281812090815461239e81612d49565b906123ab8551928361286a565b8082528582018094845286842084915b8383106124245750505050835194859481860192828752518093528086019493905b8382106123ea5786860387f35b8451805173ffffffffffffffffffffffffffffffffffffffff168752830151868401528796509485019493820193600191909101906123dd565b6002896001928a9b9897999a5161243a816127ef565b73ffffffffffffffffffffffffffffffffffffffff865416815284860154838201528152019201920191909796959394976123bb565b50346105b857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105b8576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b919050346108e057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108e05760209261251a61254f565b612522612577565b73ffffffffffffffffffffffffffffffffffffffff91821683526002865283832091168252845220548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361257257565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361257257565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361257257565b90815180825260208080930193019160005b8281106125dd575050505090565b8351855293810193928101926001016125cf565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261257257600435906024356fffffffffffffffffffffffffffffffff811681036125725790565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126125725760043567ffffffffffffffff9283821161257257806023830112156125725781600401359384116125725760248460051b83010111612572576024019190565b8054156126be57600052602060002090600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80548210156126be576000526003602060002091020190600090565b80548210156126be5760005260206000209060011b0190600090565b1561272c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f746f6f206561726c7900000000000000000000000000000000000000000000006044820152fd5b1561279157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e73756666696369656e7420616d6f756e74000000000000000000000000006044820152fd5b6040810190811067ffffffffffffffff82111761280b57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161280b57604052565b6080810190811067ffffffffffffffff82111761280b57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761280b57604052565b80546801000000000000000081101561280b576128cd91600182018155612709565b91909161291f5760208173ffffffffffffffffffffffffffffffffffffffff60019351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784550151910155565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b9290604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015273ffffffffffffffffffffffffffffffffffffffff809216602485015216604483015260648201526064815260a081019181831067ffffffffffffffff84111761280b576129ca926040526129cc565b565b73ffffffffffffffffffffffffffffffffffffffff16906040516129ef816127ef565b6020928382527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564848301526000808486829651910182855af13d15612b6d573d9167ffffffffffffffff8311612b405790612a8893929160405192612a7b887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018561286a565b83523d868885013e612b77565b805180612a96575b50505050565b818491810103126105b857820151908115918215036108e45750612abc57808080612a90565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b90612a8892916060915b91929015612bf25750815115612b8b575090565b3b15612b945790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612c055750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b848110612c82575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b818101830151868201604401528593508201612c41565b91909160008382019384129112908015821691151617612cb557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b15612ceb57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c6964206c7020746f6b656e000000000000000000000000000000006044820152fd5b67ffffffffffffffff811161280b5760051b60200190565b519073ffffffffffffffffffffffffffffffffffffffff8216820361257257565b60209081818403126125725780519067ffffffffffffffff821161257257019180601f84011215612572578251612db881612d49565b93612dc6604051958661286a565b818552838086019260051b820101928311612572578301905b828210612ded575050505090565b838091612df984612d61565b815201910190612ddf565b90612e0e82612d49565b612e1b604051918261286a565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612e498294612d49565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612cb55760010190565b80518210156126be5760209160051b010190565b15612e9b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e6f7420656e6f75676820746f6b656e730000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044808301939093529181526129ca91612f5b60648361286a565b6129cc565b81810392916000138015828513169184121617612cb557565b15612f8057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f207374616b657300000000000000000000000000000000000000000000006044820152fd5b15612fe557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e73756666696369656e74206c6f636b206475726174696f6e0000000000006044820152fd5b1561304a57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f7374616b6520706f736974696f6e73206c696d6974206973206578636565646560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152fd5b919061291f578051602082015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff91909116178255600290606090604081015160018501550151910155565b908154916801000000000000000083101561280b57826131579160016129ca950181556126ed565b906130ce565b9060405161316a8161284e565b60606002829480546fffffffffffffffffffffffffffffffff8116855260801c6020850152600181015460408501520154910152565b9190916fffffffffffffffffffffffffffffffff80809416911601918211612cb557565b91908110156126be5760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff811681036125725790565b73ffffffffffffffffffffffffffffffffffffffff80911690604080517faa6ca8080000000000000000000000000000000000000000000000000000000081528181600481875afa90811561336a576000908192613321575b5082517f69454b8600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116602482015260208180604481015b0381867f0000000000000000000000000000000000000000000000000000000000000000165afa91821561331757506000916132de575b50161490565b906020823d821161330f575b816132f76020938361286a565b810103126108e4575061330990612d61565b386132d8565b3d91506132ea565b513d6000823e3d90fd5b91508282813d8311613363575b613338818361286a565b810103126108e4575060208161335b826133546132a195612d61565b9201612d61565b92509061324e565b503d61332e565b82513d6000823e3d90fd5b604051906133828261284e565b60006060838281528260208201528260408201520152565b91906129ca906133a8613375565b503360005260066020526040600020936133c0615350565b604051926133cd8461284e565b6fffffffffffffffffffffffffffffffff90814216855216602084015260408301526060820152809361312f565b613403613375565b5073ffffffffffffffffffffffffffffffffffffffff60009116815260066020526040918282209283541561358c575b61343f610263856126a9565b906134546060830192828451910151906137fc565b61346561345f615350565b856137fc565b9085828201928312911290801582169115161761355f578251908482019186868412911290801582169115161761353257906134a0916135b9565b9151848482019485129112908015821691151617613505579261350294926134fd92856102639651936134d28561284e565b6fffffffffffffffffffffffffffffffff4216855260208501528301526060820152613157836126a9565b6126a9565b90565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6135b4815161359a8161284e565b84815284602082015284838201528460608201528561312f565b613433565b7f80000000000000000000000000000000000000000000000000000000000000008082149081156136db575b506136b15760008112156136a85761360e816000035b60008412156136a15783600003906136e5565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161366a576000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91181315613666575090565b0390565b60449250604051917ffdd8c1d700000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b83906136e5565b61360e816135fb565b60046040517fb3c754a3000000000000000000000000000000000000000000000000000000008152fd5b90508214386135e5565b670de0b6b3a7640000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83830992808302928380861095039480860395146137bf578285101561378357908291096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b82606492604051927f7639aaf0000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b5050809250156137cd570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f800000000000000000000000000000000000000000000000000000000000000080821490811561391a575b506138f05760008112156138e757613851816000035b60008412156138e0578360000390613924565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116138a9576000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91181315613666575090565b60449250604051917fcdaa009100000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b8390613924565b6138518161383e565b60046040517f3406846c000000000000000000000000000000000000000000000000000000008152fd5b9050821438613828565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818309818302918280831092039180830391670de0b6b3a764000095868410156139af579086910992146139a9577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699350828211900360ee1b910360121c170290565b50500490565b604491604051917f90638d5000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b73ffffffffffffffffffffffffffffffffffffffff908181169160008381526020908082526040918282205495825b878110613a25575050505050505050565b613a48908285528484526113af87613a3f83898920612709565b50541689613b16565b613a14565b613a56816143f0565b9073ffffffffffffffffffffffffffffffffffffffff9182821690600082815260208181526040928383205496835b888110613a9757505050505050505050565b613b119087865285855288887fe80cbe02b2d8cc16808f935cff6079782341d4f59921584a1451a05289922a2e8980898b613ae38b8b613ad98b878620612709565b5054168099615126565b819483898396949552600284528181208b825284526007828220945220555582519182528a820152a3612e53565b613a85565b9190916040908151907e01b0b600000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff908186169360049285848601526000918286602481857f0000000000000000000000000000000000000000000000000000000000000000165afa958615613d01578396613ce5575b50825b8651811015613cd9578088888888888f8887613bcf8c9384613bc6613cd49d8b612e80565b51169087613d8f565b91959d949b929790939985815260209d8e600b8152838320908c613bf38c85612e80565b51168452528282209e878352600c81528383208c613c118c85612e80565b5116845281528b8484209e1695868452815283832088845281528383208c613c398c85612e80565b5116845281528383209b8884526009825284842081613c588d86612e80565b511685528252613cc28585209b888652600584528686208b8752845286862083613c828388612e80565b5116875284528686209a808752600a855287872084613ca18489612e80565b51168852855287872099875260038552878720908752845286862094612e80565b51168352522055555555555555612e53565b613ba1565b50505050505050509050565b613cfa9196503d8085833e6108c7818361286a565b9438613b9e565b81513d85823e3d90fd5b7fe80cbe02b2d8cc16808f935cff6079782341d4f59921584a1451a05289922a2e6040613d41613d3a846143f0565b8585615126565b73ffffffffffffffffffffffffffffffffffffffff809516948560005260026020528360002096169586600052602052818360002060076020528285600020555582519182526020820152a3565b73ffffffffffffffffffffffffffffffffffffffff90811660008181526003602090815260408083209585168084529582528083209685168084529682528083205481517f318a678c0000000000000000000000000000000000000000000000000000000081526004808201899052602482018a9052919991989792969295939491939285826044817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156143c957839261439a575b507f000000000000000000000000000000000000000000000000000000000000000016928751937f2a2856af00000000000000000000000000000000000000000000000000000000855286858c81845afa94851561435a578b93929188918697614364575b508a519c8d80927ffb9d9b4d0000000000000000000000000000000000000000000000000000000082525afa9a8b1561435a57849b61432b575b508784526007875288842054156142df57878452600b87528884208a8552875288842054848184039112838212811690848313901516176142b357858c03908c8688128184128116918413901516176141b957613f4b613f50928e926137fc565b6135b9565b98829b898652600989528186208c87528952613f7b828720549b8b885260078b5283882054906135b9565b9a868c82019c8d1291129080158216911516176141b9578b9c9d8b809d85895260028c528489208d8a528c528489205490868a52888d528d868b20908b528d52858a20908a528c5284892054918983820393128184128116918413901516176142875790613fe8916137fc565b9087828201928312911290801582169115161761425b57965b8a875260088a528287205415614211578a8752600c8a528d8388209088528a5282872054878187039112868212811690878313901516176141e55761404a9291613f4b916137fc565b929b898652600a8952818620818752895261407482872054948b885260088b5283882054906135b9565b938685820195861291129080158216911516176141b9578398849a8015801561419e575b8061418c575b6140ae575b505050505050505090565b84885287825260016140d1858a20828552868b20848c528552868b205490612709565b5001549488526005825283882090885281528287209187525284205491848382039312818412811691841390151617614160579061410e916137fc565b9282848201948512911290801582169115161761413457505038808080808080806140a3565b9060116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024846011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5084885287825283882054151561409e565b50848852600182528388208189528252838820541515614098565b6024866011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024886011897f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5050600c88528085208c86528852808520549185526005885280852089865288528085208c8652885280852054988552600a88528085209b85529a90965250509690962054919590565b6024876011887f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248960118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024856011867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b600b87528884208a855287528884205481855283885289852089865288528985208b8652885289852054898652600989528a86208c875289528a862054919d9b9c909b919a9196614001565b909a508681813d8311614353575b614343818361286a565b8101031261117a57519938613eea565b503d614339565b89513d86823e3d90fd5b92939450955081813d8311614393575b61437e818361286a565b8101031261117a5790868b9392519538613eb0565b503d614374565b9091508581813d83116143c2575b6143b2818361286a565b810103126108e057519038613e4b565b503d6143a8565b88513d85823e3d90fd5b90670de0b6b3a764000091828102928184051490151715612cb557565b90600091600073ffffffffffffffffffffffffffffffffffffffff80921681526020600681526040918281209283549282957f000000000000000000000000000000000000000000000000000000000000000016905b8487106144565750505050505050565b9091929394959760026144698a896126ed565b5001546144876144798b8a6126ed565b5091600180930154906137fc565b908551917f4df7e3d0000000000000000000000000000000000000000000000000000000008352600492858185818a5afa908115614648578d908a92614612575b506144d66144e0918d6126ed565b505460801c6143d3565b8851907fb1373929000000000000000000000000000000000000000000000000000000008252878287818c5afa918215614608578b926145d3575b50614530929161452a91614652565b906137fc565b9182670de0b6b3a764000001928312166145a7579061454e916137fc565b9186838201938412911290801582169115161761457b57506145709098612e53565b959493929190614446565b8560116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024886011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9091508781813d8311614601575b6145eb818361286a565b810103126145fd57519061452a61451b565b8a80fd5b503d6145e1565b8a513d8d823e3d90fd5b809250878092503d8311614641575b61462b818361286a565b8101031261463d57518c6144d66144c8565b8880fd5b503d614621565b88513d8b823e3d90fd5b8061466c57506000906135025750670de0b6b3a764000090565b90670de0b6b3a76400008103614680575090565b6146959061469061350293614f91565b6137fc565b6146b4565b80156137cd576ec097ce7bc90715b34b9f10000000000590565b60008112156146ff577ffffffffffffffffffffffffffffffffffffffffffffffffcc22e87f6eb468eeb81126146f9576146f0906000036146b4565b6135029061469a565b50600090565b680a688906bd8b000000811215614f6057670de0b6b3a764000080604092831b05907780000000000000000000000000000000000000000000000067ff000000000000008316614e43575b66ff0000000000008316614d3b575b65ff00000000008316614c3b575b64ff000000008316151580614b33575b614a43575b62ff0000831661495b575b61ff00831661487b575b60ff83166147a4575b02911c60bf031c90565b60808316614869575b838316614857575b60208316614845575b60108316614833575b60088316614821575b6004831661480f575b600283166147fd575b600183161561479a576801000000000000000102831c61479a565b6801000000000000000102831c6147e2565b6801000000000000000302831c6147d9565b6801000000000000000602831c6147d0565b6801000000000000000b02831c6147c7565b6801000000000000001602831c6147be565b6801000000000000002c02831c6147b5565b6801000000000000005902831c6147ad565b6180008316614949575b6140008316614937575b6120008316614925575b6110008316614913575b6108008316614901575b61040083166148ef575b61020083166148dd575b61010083161561479157680100000000000000b102831c614791565b6801000000000000016302831c6148c1565b680100000000000002c602831c6148b7565b6801000000000000058c02831c6148ad565b68010000000000000b1702831c6148a3565b6801000000000000162e02831c614899565b68010000000000002c5d02831c61488f565b680100000000000058b902831c614885565b628000008316614a31575b624000008316614a1f575b622000008316614a0d575b6210000083166149fb575b6208000083166149e9575b6204000083166149d7575b6202000083166149c5575b62010000831615614787576801000000000000b17202831c614787565b680100000000000162e402831c6149a8565b6801000000000002c5c802831c61499d565b68010000000000058b9102831c614992565b680100000000000b172102831c614987565b68010000000000162e4302831c61497c565b680100000000002c5c8602831c614971565b6801000000000058b90c02831c614966565b63800000008316614b21575b63400000008316614b0f575b63200000008316614afd575b63100000008316614aeb575b63080000008316614ad9575b63040000008316614ac7575b63020000008316614ab5575b630100000083161561477c5768010000000000b1721802831c61477c565b6801000000000162e43002831c614a97565b68010000000002c5c86002831c614a8b565b680100000000058b90c002831c614a7f565b6801000000000b17217f02831c614a73565b680100000000162e42ff02831c614a67565b6801000000002c5c85fe02831c614a5b565b68010000000058b90bfc02831c614a4f565b6480000000008416614c27575b6440000000008416614c13575b6420000000008416614bff575b6410000000008416614beb575b6408000000008416614bd7575b6404000000008416614bc3575b6402000000008416614baf575b6401000000008416156147775790680100000000b17217f802841c90614777565b9068010000000162e42ff102841c90614b8e565b90680100000002c5c85fe302841c90614b81565b906801000000058b90bfce02841c90614b74565b9068010000000b17217fbb02841c90614b67565b906801000000162e42fff002841c90614b5a565b9068010000002c5c8601cc02841c90614b4d565b90680100000058b90c0b4902841c90614b40565b658000000000008316614d29575b654000000000008316614d17575b652000000000008316614d05575b651000000000008316614cf3575b650800000000008316614ce1575b650400000000008316614ccf575b650200000000008316614cbd575b65010000000000831615614767576801000000b17218355102831c614767565b680100000162e430e5a202831c614c9d565b6801000002c5c863b73f02831c614c8f565b68010000058b90cf1e6e02831c614c81565b680100000b1721bcfc9a02831c614c73565b68010000162e43f4f83102831c614c65565b680100002c5c89d5ec6d02831c614c57565b6801000058b91b5bc9ae02831c614c49565b66800000000000008316614e31575b66400000000000008316614e1f575b66200000000000008316614e0d575b66100000000000008316614dfb575b66080000000000008316614de9575b66040000000000008316614dd7575b66020000000000008316614dc5575b66010000000000008316156147595768010000b17255775c0402831c614759565b6801000162e525ee054702831c614da4565b68010002c5cc37da949202831c614d95565b680100058ba01fb9f96d02831c614d86565b6801000b175effdc76ba02831c614d77565b680100162f3904051fa102831c614d68565b6801002c605e2e8cec5002831c614d59565b68010058c86da1c09ea202831c614d4a565b6780000000000000008316614f41575b6740000000000000008316614f2f575b6720000000000000008316614f1d575b6710000000000000008316614f0b575b6708000000000000008316614ef9575b6704000000000000008316614ee7575b6702000000000000008316614ed5575b67010000000000000083161561474a57680100b1afa5abcbed6102831c61474a565b68010163da9fb33356d802831c614eb3565b680102c9a3e778060ee702831c614ea3565b6801059b0d31585743ae02831c614e93565b68010b5586cf9890f62a02831c614e83565b6801172b83c7d517adce02831c614e73565b6801306fe0a31b7152df02831c614e63565b5077b504f333f9de648480000000000000000000000000000000614e53565b602490604051907fe69458f90000000000000000000000000000000000000000000000000000000082526004820152fd5b806000808313156150f557670de0b6b3a76400009283811261508757506001925b808305906fffffffffffffffffffffffffffffffff821160071b91821c9167ffffffffffffffff831160061b92831c63ffffffff811160051b90811c61ffff811160041b90811c60ff811160031b90811c91600f831160021b92831c936001978860038711811b96871c11961717171717171781810294811d9082821461507b57506706f05b59d3b20000905b84821361504f5750505050500290565b808391020590671bc16d674ec8000082121561506e575b831d9061503f565b8091950194831d90615066565b93505093925050020290565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93925080156150c8576ec097ce7bc90715b34b9f10000000000591614fb2565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b602483604051907f613f4fba0000000000000000000000000000000000000000000000000000000082526004820152fd5b9092919273ffffffffffffffffffffffffffffffffffffffff809216916000918383526020958387526040926001615173858720828b52838789209616958689528b528688205490612709565b500154907f000000000000000000000000000000000000000000000000000000000000000016918451917fdb1d0fd50000000000000000000000000000000000000000000000000000000083528983600481875afa9283156108d657908a918894615317575b506004936151e691614652565b938651938480927f9faa3c910000000000000000000000000000000000000000000000000000000082525afa91821561530d5786926152d8575b5061522f929161452a91614652565b958184526007815282842054948452600281528284209184525281205491818386039312858412811690868513901516176152ab5781838201938412911290801582169115161761527e575090565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9091508881813d8311615306575b6152f0818361286a565b8101031261530257519061452a615220565b8580fd5b503d6152e6565b85513d88823e3d90fd5b828193929495503d8311615349575b615330818361286a565b810103126153455751919089906151e66151d9565b8680fd5b503d615326565b6040517f6c8ae38c00000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561545f5760009161542e575b507f00000000000000000000000000000000000000000000000000000000000000004203428111612cb5577f80000000000000000000000000000000000000000000000000000000000000008114612cb5576135029161452a615429926000036143d3565b61546b565b906020823d8211615457575b816154476020938361286a565b810103126108e4575051386153c4565b3d915061543a565b6040513d6000823e3d90fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462ce81126146f957680736ea4425c11ac6318112156154c057670de0b6b3a76400006714057b7ef767814f6135029202056146b4565b602490604051907f99bb75410000000000000000000000000000000000000000000000000000000082526004820152fdfea2646970667358221220c17c944d703d8703bbcc56c21364e4c07200a28b173670ef22feef229284856f64736f6c63430008120033000000000000000000000000d1e094cabc5acb9d3b0599c3f76f2d01ff8d35630000000000000000000000007768cac95e67bbc24d2bc580eff9cd74e7340701000000000000000000000000c3183006825abf6c772c0189e7b89d40829830da000000000000000000000000389db0b69e74a816f1367ac081fdf24b5c7c2433